昨天VPS突然挂掉了。我晚上玩推特时才发现(choqok更新不到数据了)。不过浏览器Opera里的twitter.com代理还能用,于是我就没管,以为是网络连接问题。

不过睡前看告警邮件,发现全系列的网络访问都不能进行,PING也失败,开始怀疑VPS死机了。。。

今早起来,在Control Panel上看VPS上的状态,提示的还是绿色的“Online”(你妹的,后来发现只要电源开着就算是Online!),但显然SSH已经无法连接上去了。

场景介绍完毕,顺便讲述背景

我的VPS是这款 Hostigation 上的KVM 128m,前几天买着玩,发现网络很好(什么pr路线啥的我也不懂),访问速度比之前的directspace快一些些(对于我这种被教育网毒害若干年的,内心一直怀着对网速的渴望)。这个KVM机器后台有个VNC登录界面,是Java Applet,于是捣鼓了一下(顺便吐槽一下openjdk-plugin,弱爆了),成功登录机器——结果看到界面后我惊呆了:

内存用完了啊亲!久违的Kernel Panic啊亲!!我第一次知道内存爆掉会连着内核也爆啊!!吐槽不能……只能默默的点击页面上的Reboot按钮……

深入内核被爆的秘密

其实内存不足的原因我也能大概猜到,机器上跑的是nginx + php5-fpm + wordpress。fpm这货根本就是内存大户,VPS上又只有128M内存+256M Swap,Wordpress博客又慢又胖,VPS上的CPU又不给力,监控宝还在其他地方默默地发起请求访问博客首页……所以访问不能承受之重,VPS内存溢出了。

为了验证,我祭出压力测试工具ab2(就是apache带的工具),首先小试一招:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ ab2 http://banjuan.net/blog/
……
Total transferred:      25862 bytes
HTML transferred:       25642 bytes
Requests per second:    0.48 [#/sec] (mean)
Time per request:       2075.089 [ms] (mean)
Time per request:       2075.089 [ms] (mean, across all concurrent requests)
Transfer rate:          12.17 [Kbytes/sec] received

Connection Times (ms)
min  mean[+/-sd] median   max
Connect:      196  196   0.0    196     196
Processing:  1879 1879   0.0   1879    1879
Waiting:     1457 1457   0.0   1457    1457
Total:       2075 2075   0.0   2075    2075

悲催地看到,请求处理时间为1879ms。。。接近两秒啊!而从后台top命令可以看到 [php-fpm: pool www]这个进程突然冒出来,然后吃住20M内存不动了。。。

再来一次强大的招式,每秒并发10个请求,一共请求100次,看看啥情况:

1
2
3
4
$ ab2 -n 100 -c 10 http://banjuan.net/blog/
...
apr_poll: The timeout specified has expired (70007)
Total of 3 requests completed

偶也,跑了一分钟后突然来了一句超时,压力测试工具自动停了。这时候VPS上的悲惨状况我就不截图了(当时也没截图),内存已经彻底不够用,256M SWAP都快分配完毕了,幸好在悲剧重演之前,ab2工具自己停掉了,呼!看着岌岌可危的VPS,看着进程列表中满眼的 php-fpm,我只好默默地把他们都重启掉。。。

娇小的VPS果然不能承受野蛮的访问

研究出是php5-fpm的问题后,那就容易办了。按每个fpm进程20M内存占用来算,VPS上最多只应该启动5个进程;另外考虑到咱的博客基本没访问量,所以空闲fpm进程就设置为少一些吧。另外,也限制一下请求处理的时间,避免排队排到死:

1
2
3
4
5
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 2
request_terminate_timeout = 15

这一次,再跑ab2压力测试工具,总算能够活下来了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$ ab2 -n 100 -c 10 http://banjuan.net/blog/
……
Concurrency Level:      10
Time taken for tests:   453.626 seconds
Complete requests:      100
Failed requests:        44
(Connect: 0, Receive: 0, Length: 44, Exceptions: 0)
Write errors:           0
Non-2xx responses:      34
Total transferred:      1582999 bytes
HTML transferred:       1563330 bytes
Requests per second:    0.22 [#/sec] (mean)
Time per request:       45362.583 [ms] (mean)
Time per request:       4536.258 [ms] (mean, across all concurrent requests)
Transfer rate:          3.41 [Kbytes/sec] received

Connection Times (ms)
min  mean[+/-sd] median   max
Connect:      196  202   3.9    201     219
Processing:  1943 43170 13715.5  46237   63341
Waiting:     1524 37434 13529.3  37333   60571
Total:       2142 43372 13715.4  46435   63540

Percentage of the requests served within a certain time (ms)
50%  46435
66%  52552
75%  54373
80%  56466
90%  58586
95%  60083
98%  60781
99%  63540
100%  63540 (longest request)

不过,悲惨地看到请求时延平均增长到了6秒。。。可见排队之长。。。

请求量之禅

这一次的事件告一段落了。不过有关这个请求量、处理时间的数值却引起我的思考。

目前这个弱小的kvm虚拟机,良好情况下,一个请求要消耗 2s,进程数限制是最多 5 个进程,这样所能承受的每秒最大请求是 2.5 r/s 。真是一个微小的数字。。。

在我的实际工作中,公司里的WEB机器跑的还是古老的C++写的CGI,一般单个CGI进程承受的访问量是 10r/s ~ 20r/s,机器配置是酷睿CPU+8G内存,一般CGI开50个进程(还同时跑着其他CGI),单机CGI承受量为500r/s(目前最高的我见过有1600r/s)。这时机器负载还算是正常服务,性能消耗还留有余地,一般CPU占用为30%,负载小于1,能再承受50%的高峰访问。

或许会问,有必要追求这个高的访问承受力吗??实际上,我们公司的CGI部署起来,很少只用1台机器就够的。多数情况下,需要用4台以上(刚才提到的那个1600r/s的CGI),有些极高访问量的CGI会有每秒1万次请求,如果单机以 500r/s算,那么需要20台服务器组成集群来处理。而这些机器还只是专门跑WEB服务器的,DB还是另外独立部署,所以后面还有一大堆的DB机器……这些都是赤裸裸的钱啊……

所以,VPS什么的,真的是只能玩玩,搭个没访问量的个人博客。弱爆了唉。。。

,

以前很少看动画。动画在我心中的形象就是海尔兄弟、黑猫警长,等同于几幅漫画拼接在一起、等同于科教知识的传播。

最近一段时间主要在搜集动画电影看(非连续剧)。之前很赞赏《千年女优》,于是找她的编导今敏的片子来看。前几周看的是《Paprika》,讲述梦境与现实,当时里面人物切换变化细腻不突兀,给我一种[拍电影的话完全无法有这种效果]的感觉。心里隐约感觉动画别具一格。

以上都是背景。而这两天在批量看[豆瓣高分动画榜]里的电影时,尤其是看这部《Dead Leaves》时,以前的想法突然变得清晰,有一丝明悟。

所谓的动画就是一场梦境。

Dead Leaves》这部片子完完全全体现了这个观点。且不说他剧情本身就很跳线、发展方向诡异奇特,更不说他的人设千奇百怪、充满妄想,单单说到里面的一些片段,就让人仿佛身处梦境。

片段一:失忆与似曾相识的过去。我自己(没体会过庄周梦蝶,只能以自己举例了)做梦时,忽然就会从某个片段开场,梦中我会浑浑噩噩,却又带有一丝清明,知道我能够做什么,应该怎么做。这部片子开场十几分钟,就是男女主角失忆登场、忽然又自以为是地去抢劫、然后还认为自己以前可能就是做黑帮的。没有背景、没有开始、没有独白介绍。宛如一场梦的开始。

片段二:女主回忆起身世时跳跃出现的记忆画面。这种风格其实电影也能剪辑出来,但是动画本身的[绘画]的特点使得他能自已变幻,更加突破电影的表现力。本片中有一段就是这个效果,而且还是有个老头参与双声道说话,极佳的梦之效果;另外一部片子《Mind Games》更是将这个特点用到极致,随意搭配时间,使得动画展示出来宛如[心头闪过无数念头]的真实体验。

片段三:随意变化地技能设定。这个必须是梦境(含白日梦)中的基本元素了!例如我以前做过一个梦,虽然我是人类、只能行走地面;但是梦境发展一半后,我却有羽族飞翔的能力(还深刻感觉到飞翔就是在空气这种液体里游泳)。当时我只用双手即可游翔,甚至还拥有百步穿杨的箭技,杀敌于万军之中,多爽!!而本片中,女主角本来也是普通人族,到了月亮上后忽然就变成了能在宇宙空间生存了,而且浑身冒火仿佛超级赛亚人;而男主角更是强大,一拳打碎巨型机器人、身形如风子弹打不中等技能都是基本的,更强悍的是他被人分尸后本来应该死了,却突然靠一个头就能活下来!而且还换了个机器人般的身体!Oh,god,这个的确就是在做梦了啊!

另外,还有女主的儿子,做爱当天立刻怀孕生子成长老死,蜉蝣般的生命大概是导演心血来潮的分支剧情;很多奇奇怪怪的克隆人失败之处(例如JJ成了合金钻头),也是体现了导演无比混乱、脱线的意淫。

说到底,我很怀疑,这个动画就是导演某次午睡的一个梦。

—–
以上即使对《Dead Leaves》这部片子的影评。然而,我还想补充一点理由。

动画切换时极大的自由性。在《千年女优》里这个技法用得很是成功,例如原本是在女主角在火车站月台上奔跑,忽地不小心滑到,就变成了她初次在那个男人前滑到在雪地里的画面;等她从雪中爬起,又回到了月台;她继续追赶火车,忽然又成了某部片子的拍摄现场……这个女演员的一生交织着过去与现在、生活与演戏,片子里这样的大量这种宛如梦一般的画面切换,仿佛一念之间置身于多个时空,思维片段自在地融合切换(或者说,搭错线?)。

总的来说,我觉得好的动画电影就是能体现我们的梦,能反映这些念头的闪现、记忆片段的切换。

(PS:这也是我为啥对宫崎骏的片子没感觉的原因。)

,

最近几个月很少冒泡。原因无他,工作有些忙+电脑挂掉了。

我那悲剧的笔记本电脑,5月份时挂掉一次,上个月又挂了一次。现在已经修了两个星期了,还木有消息。

于是搞的我心痒痒想去买平板电脑来替代之。不过还是忍住了。

另外,这个域名上个月又续期一年了,这个长草的博客至少还能残喘一年。

基本上,就这些了。