accept与epoll惊群

今天打开 OneNote,发现里面躺着一篇很久以前写的笔记,现在将它贴出来。

1. 什么叫惊群现象

首先,我们看看维基百科对惊群的定义:

The thundering herd problem occurs when a large number of processes waiting for an event are awoken when that event occurs, but only one process is able to proceed at a time. After the processes wake up, they all demand the resource and a decision must be made as to which process can continue. After the decision is made, the remaining processes are put back to sleep, only to all wake up again to request access to the resource.

This occurs repeatedly, until there are no more processes to be woken up. Because all the processes use system resources upon waking, it is more efficient if only one process was woken up at a time.

This may render the computer unusable, but it can also be used as a technique if there is no other way to decide which process should continue (for example when programming with semaphores).

简而言之,惊群现象(thundering herd)就是当多个进程和线程在同时阻塞等待同一个事件时,如果这个事件发生,会唤醒所有的进程,但最终只可能有一个进程/线程对该事件进行处理,其他进程/线程会在失败后重新休眠,这种性能浪费就是惊群。

小聚,小感

大学室友涛从南京来深圳出差,今天特意抽空到我家来小聚了一下。从大学毕业,到现在已经有6年多没见了,大学四年同处一室的感情还是挺深的,尽管这么久没见面了,仍没有生疏感。朋友之间相处没有生疏感的表现就是,面对彼此都没有交流上的压力,我不用刻意找话题跟你聊天,你也不用刻意逢迎我的喜好,吃饭时我不用担心是否你酒没喝到,你也不用按照我的节奏来喝酒。有一茬没一茬的聊天,一杯半盏的喝酒,自由惬意。

说起来大学毕业都六年了。六年后再见面,我们都已经成家,他还有了一个刚满一岁的女儿。似水流年,流年似水,平日里丝毫不觉得,只有在带有旧日痕迹的事物放到面前时,感慨才会如此强烈。但不可避免的事实是,我们都是生活中的人了。不可能彻夜长谈,不可能一直回味过去。离别才是常态,小聚只是片段。所谓生活中的人,就是对生活本身习以为常,面对相聚别离,不会有太多悲喜。

跑步的意义

去年报名了清远马拉松半程赛之后,我写了一篇 Blog 记录了一下: 报名了清远马拉松。时间差不多过去了整整一年,今天我再次报名参加清远马拉松。

下面就说说,在即将过去的 2015 年里,关于跑步这件事儿上的一些片段和思考。

2015 年,跑了两次马拉松,拿了两个纪念牌,说明我百马人生的目标已经完成了百分之二。其实这个目标是怎么来的我都不记得了,但似乎有了这个说法之后,跑步这件事情顿时被赋予了一层特别的意义一样。

跑步的意义对我到底是什么,我思考了一段时间。

继续留在Typecho

最近手心手背总时不时发痒,又开始想折腾博客玩了。

这个小小的个人博客,从 2011 年开始,几乎把主流的 Blog 系统折腾了个遍,从最初的 Wordpress,到 Typecho, Emlog, Textpattern 等等。其中,Typecho 被来回折腾了几次,因为 Typecho 自身也经历了两个大的阶段:从几年没有维护,到开始重构并默认支持 Markdown 编辑器。

每个阶段维护博客的心态也不一样。刚开始的时候,总到处想和人交换链接,把界面搞得好看点,各种插件都试一试。这个阶段确实还真认识了一些一起写博客的同学,大家经常互访互评,搞得还挺热闹。但是必须要知道的是,即使在 2011 年之前,个人博客也早已经开始没落了,这是大势所趋,曾经的那些博客,到现在也已经绝大多数打不开,还挺让人唏嘘的。

尝鲜:Nginx-1.9.8推出的切片模块

熟悉 CDN 行业主流技术的朋友应该都比较清楚,虽然 Nginx 近几年发展的如日中天,但是基本上没有直接使用它自带的 proxy_cache 模块来做缓存的,原因有很多,例如下面几个:

  • 不支持多盘
  • 不支持裸设备
  • 大文件不会切片
  • 大文件的 Range 请求表现不尽如人意
  • Nginx 自身不支持合并回源