Nginx模块开发小记

September 4th, 2009

前阵子在折腾Nginx的模块, 很有趣.

为了方便使用调试器, 可以单进程非daemon方式启动, 使用参数:

daemon off;
master_process  off;

因为Nginx是事件驱动, 在读request body时, 第一个数据包一般发送不全, 需要异步读取余下的.

当在主handler部分调用ngx_http_read_client_request_body时, 需要注册一个回调的handler, 然后主handler直接返回NGX_DONE, 告诉Nginx留下这个请求的事件注册, 继续接收数据包.

经过若干次循环最终读完request body后, Nginx会去回调被注册的handler, 在此函数中产生响应, 最后调用ngx_http_finalize_request结束整个请求. 大概流程是:

ngx_http_foo_handler(){
    ngx_http_read_client_request_body(r, ngx_http_foo_post_handler);
    return NGX_DONE; // 主handler结束
}
ngx_http_foo_post_handler(){
    // 请求全部读完后从这里入口, 可以产生响应
    ngx_http_finalize_request(r, NGX_HTTP_OK);
}

一般的模块都是同步方式的, 我开始就没搞明白这异步读到底怎么搞, 走了不少弯路. 代码上可以简单参考dav模块, 复杂点还有upload模块.

Nginx可能会把request body放到两个buffer里面, 太大的话也可能存入文件中. 如果要在模块中读取request body进行处理, 自然不希望搞太麻烦,可以:

r->request_body_in_single_buf = 1;

使body存在一个buffer里面, 配置里面要留够需要的大小.

如果没有特殊的要求, 这类模块也可以拿 embedded perl 来写. 响应产生, sendfile都支持. Perl的开发效率自然很高, 维护也方便. 作者说此功能还是"experimental",  但实测了下没出啥问题.

我本着先写原型的目的试验了下, 结果发现性能还不错, 在双路5130机器上, perl版本的可以达到15k req/s (使用ab测试), 非常够用了.

Tags: , , , , ,
Posted in tech | 2 Comments »

无题

August 7th, 2009

其实那倒也算是项帕累托改进。

由于内在悲剧性,余下的不如意也是难免的了。

祝好。

Posted in life | Comments Off

神奇的菏泽市东方酒厂

May 30th, 2009

今天很神奇,不少人包括我的邮箱中都出现了不止一封这样的邮件:

混蛋网:混蛋的人办的网,为同样有混蛋需求的人打理无聊的时间!
欢迎光临:http://www.oiegg.com
在这里,我们一起为做混蛋的事骄傲,多给师大丢脸,多给中国人丢脸!
谁最无耻,我最无耻,你的加入是我们共同的无耻!

张**(经理) 手机:158101*****

谢巧*(助理) 电话:010-5880****

混蛋网:http://www.oiegg.com

邮件用了假的信封地址, 分别是 info#bnu.edu.cn, admin#oiegg.com。不过呢,邮件头有这样一行“ Sender: yanhuangxiu@sohu.com ” ,说明还是欠点火候呢。

很高兴看到我的blog在“菏泽市东方酒厂”这个关键词上的排名日日见长。

Tags:
Posted in life | 8 Comments »

菏泽市东方酒厂是何方神圣?

May 20th, 2009

早上一来,收到这样一封邮件:

尊敬的北师大蛋蛋网管理处领导:
您好!
我们是菏泽市东方酒厂,最近发现在贵校“蛋蛋网”求职交流栏,有对于我们企业不负责任的诋毁言论(对于其合理建议我们将虚心采纳),违反了国家关于网络言论损坏集体荣誉的行为,给我们企业招聘带来了负面影响,请北师大蛋蛋网领导及管理人员本着负责任的态度将其中诋毁言论(三天内)删除,请答复!谢谢!
东方酒厂行政部
2009年5月19日

哎哟哎哟,看了看论坛帖子,我赶紧回复:

您把我们”处理”了还发了”决定”过来,真是感谢

为什么最近老会遇到这么二的事呢?真应该检讨检讨人品呢!

update 05-21 :

他们的seo意识很强,第一时间就来留言,可惜被Akismet判为spam鸟

Tags:
Posted in life | 3 Comments »

GeoWHY09年3月月报

April 6th, 2009

黄牛说,要写月报,于是就有了月报。

一纠结,就写blog:

辩论不同于吵架,有麦克风声音就会大。

东西这罕见的文艺篇章是说的小明自己吗?

XOXO 这个doodle到底存在了多久?

IKEA改名叫爱家会不会被我家的山寨超市起诉?

有没有一个orange想过走出去周游世界?

为什么总是在赶时间

什么时候只剩下在电话中的争吵

萧条 or 发改委

读原文也是迂回的道路吗?

还是科学家们写得比较对GeoWHY的主题:地理专业选校小指南 GRE考试经验谈 Geography。也有不太对的, Results and Interpretation 都是硬币扔的太多,其实我也不知道生物学家们说得是啥,很科学就是了。

热衷贴图的同学,只好把你(们)当作add-ons:死路 四十八分之五:贴图流水 地道 千岛湖

有时,我们还有power-toys:烽兄。其实Wilhelma动植物园里,我只注意到了可爱的羊驼。嗯,tsing君,周一我们可以先去动物园围观再来fb吗?


由于正式版内容已经足够(写不动了…),现以ServicePack的形式推出几位同学,以凸显其重要性:

sp1:三番书生asiapan

一紙清供(董橋) 曾孟樸好事(董橋) 梁啓超遺墨(董橋) 集錦扇子七十歲(董橋) 任伯年團扇(董橋)

基本上都外包给董桥了。

sp2:女文艺青年putaotang

A Gorgeous Day! 他的吉他在春光明媚的今日 肥版马拉之死 Another Gorgeous Day 熊同学的南平日志

基本上作者应该是“葡萄和葡萄的电脑”

sp3:文艺女青年Spirit

濛濛:我一直站在孩子这边 如果有一天我走了,你会像马达那样找我吗? 冷眼旁观 余维涵:乖戾的嘻哈匠 六幺:极不妥 ,也不极端 刘星宇:只为真诚的声音 郭倍倍:文人气质的摇滚乐手 陈春石:用影像传承历史 颜檐:象牙塔里飘来的纯净声音 林天然:也许自己只是某条河里会唱经的石头 管曦:有观点的记录,有趣味的生活 Candy*Dreamer:甜蜜的梦想家 重叠 独白 淡定,淡定 Q檬

基本上很文艺。我真的看得很晕。

sp4:FANCIES

论有故事的重要性 三八妇女节 工体 亚冠 国安 蝶影风声烂漫天 田原采访纪实

基本上也很文艺。还伪球迷。

sp5:Joya同学

节日都一样,只因为找到了一个放松的理由 该年底盘点一下了,生活无间道 My December-Linkin Park 手表和杯子,生活神经质 0022 Yellow-Coldplay 忧伤的极致 我相信这不是本·拉登干的 吓死我了 好自为之,是一句意味深长的好话。 onderful Tonight 一些零碎的。搜索引擎,Ubuntu的字体,还有写剧本的。 翻出一堆刻录的CD。Clubbed to Death 无敌 “穷开心” 现在插播广告,生活神经质 0023 “年”是什么?“年”的故事。

基本上有点geek。把玩文艺话题之余,还摆弄ubuntu,看起来joya有geek的隐藏属性。

sp6:树立正确的婚姻爱情观

基本上结婚就是最终ServicePack。


(分割线之不负责月报制作员)

报终于被完成,作文史上的一次飞跃。

其实这是另外的一场噩梦,快醒来!

ps: 附赠一个蹩脚的列表产生器,方便制造文章列表进行粘帖,自取

Tags:
Posted in geowhy | 6 Comments »

噩梦记录

March 30th, 2009

被面试,问题本来可以记得很清楚,现在忘了.大约是ELF文件格式之类,总之是答不上来,很努力的想,然后就醒来了.

在公司午睡,醒来三次,分别遇见不同的人,最后天色变得很诡异,灯也不亮,象是沙尘暴来了,但周围的人都很镇定的在工作,我只好尝试假装工作,但想不起口令,就醒来了.

读一篇blog,大约是不许联想吧,写的是某个人结婚的事,有鼻子有眼,但显然,是在做梦,因为被子掉了.

 

ps: 本来没准备发的,但今天备案成功,十分难得,还是凑了一篇.

Posted in life | 7 Comments »

李鸿章接受《纽约时报》采访英文原文

January 6th, 2009

所谓"李鸿章接受《纽约时报》采访"的文章好久之前就见过,一直只有转来转去的中文,不见英文原件,疑为伪作。

今日在 NYTimes 上翻出原文: LI ON AMERICAN HATRED

Posted in life | 3 Comments »

2008

December 31st, 2008

对于2008年已经没有也许了,22小时后,一切都会成为过去时。

若干年后回想起来,2008会是一个重要的年份。

Farewell, 2008,我怀念你。生活仍然会继续。

这里没有字数限制,75个,足够了。

Posted in life | 1 Comment »

Next page Previous page