Chinaunix首页 | 论坛 | 博客
  • 博客访问: 61899
  • 博文数量: 18
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 210
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-26 16:04
文章分类

全部博文(18)

文章存档

2011年(1)

2009年(3)

2008年(14)

我的朋友

分类: Python/Ruby

2008-09-26 16:54:12

  前几个月,因为教研室师兄的大力推荐,大家跟着学习了下twisted,我也简单的学习了下reactor,factory,deferred等基本的twisted的应用模式,后来因为教研室其他事情比较多,就没怎么继续深入了,最近被派到北京,因为项目需求,又重拾twisted,再次学习中,发现twisted的强大。
  今天下午学着试了下,epollreactor,以前都是在c/c++下用epoll,这次试验下python下实现epollreactor,还是最基本的回射服务器,本以为很轻松的搞定,没想到一些小细节啊,老是出错,后来咨询啦下老郭同志,俺们的大师兄,后面总算找到问题,记录下来,以免再犯,哈哈。
   1. reactor全局一般是一个,所以factory出错处理的时候,最好是不要用reactor.stop(),不然就会报错了,"Can't stop reactor that isn't running",关了唯一的一个,后面出错的时候再去关,当然就会出错了。我个人处理的时候就简单的把这个连接关闭了,然后打印出错。
   2. 两边都是要epollreactor.install(),第一次的时候,就是忘记在客户端弄这个了(对了,别忘记了ulimit设置fd哦),导致一直卡在1020这个数目上,啧啧。

   好了,一切完成,现在在epollreactor的模式下测试下6000个连接,用nmon分析下:
CPU: User% Sys% Wait% Idle% CPU%
Avg 1.2 4.4 0.0 94.4 5.6
Max 23.5 90.0 0.0 100.0 100.0
Max:Avg 19.8 20.3 0.0 1.1 17.8

nmon -f(保存到文件) -s(打印间隔时间) -c(打印次数)
阅读(2032) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~