阿里云 ECS 1CPU 1G 1Mbs 跑 tornado 开多少进程合适?

2015-06-03 12:00:12 +08:00
 wingyiu
如题,nginx+3tornado只跑了30RPS,怎么破?正常不?
6226 次点击
所在节点    Tornado
15 条回复
zhouquanbest
2015-06-03 12:22:52 +08:00
不是吧 和你一样的配置 单tornado 我有连sql的操作都能跑90RPS

一般cpu count+2
neoblackcap
2015-06-03 12:26:53 +08:00
看你怎么实现吧,如果全部IO操作都已经改用异步处理的话(大概就像friendfeed他们丧心病狂地将db封装成http api)那么你开一个进程就可以了。

如果不是的话,这个就难说了,具体你能不能给多点信息啊。30rps这样的话大概就是io严重堵塞了。
wingyiu
2015-06-03 14:32:36 +08:00
@neoblackcap 只有db一个io啊,而且是一个进程一个db链接,库用的是torndb,貌似不是异步的
wingyiu
2015-06-03 15:16:01 +08:00
@zhouquanbest 实测证明1Core 1Process就行了,再多也不会有提升
wingyiu
2015-06-03 15:17:55 +08:00
@neoblackcap log里看出无并发时单个请求都是10ms一下的,-c 100就变成50ms了,CPU负载基本为5%以下
neoblackcap
2015-06-03 15:27:28 +08:00
@wingyiu CPU负载这么低,肯定是IO堵塞了。大工程啊,我现在还是看到很多人去开多进程来启动tornado,多开就好了,这个数目没有定数的,理论上是说多少核开多少个,但是实际还是要根据你情况来。多开一下就CPU会上去(上下文切换),并发也就上去了。

真的要完全利用tornado的并发威力,请去自己写一个异步请求服务或者库,要不然都是堵塞的。它本身的并发能力肯定展现不出来
zhouquanbest
2015-06-03 15:37:32 +08:00
@wingyiu
多个不是为了速度 是防阻塞
wingyiu
2015-06-03 15:53:27 +08:00
@neoblackcap 我怀疑我用supervisor启动的tornado 10个进程共用一个数据库链接了,真是奇怪
neoblackcap
2015-06-03 16:15:17 +08:00
@wingyiu 怎么会呢?难道你自己做了进程间通讯啊?肯定不可能是你的tornado实例共用一个数据库连接,你自己可以用数据提供的运维工具看看,Mysql的是mysqladmin,就可以看到具体是多少个连接在连着数据。
wingyiu
2015-06-03 21:53:51 +08:00
@neoblackcap
@zhouquanbest
求加qq请教
tigerstudent
2015-06-04 09:57:50 +08:00
@neoblackcap 将db封装成http api...太丧心病狂了!!我一直还挺好奇呢数据库那些都挺少有异步库的
neoblackcap
2015-06-04 10:57:14 +08:00
@tigerstudent 就是这么丧心病狂,然后就直接用tornado的AsyncHttpClient去请求,所以这个就大概是为什么tornado会自带异步的http client的原因。
wingyiu
2015-06-05 10:12:34 +08:00
zeeler
2015-07-31 11:06:34 +08:00
加个cache层吧,瓶颈不一定在tornado上。可以考虑单独测试一下,比如tornado只跑个输出hello world的handler
wingyiu
2015-08-01 10:27:09 +08:00
@zeeler 瓶颈在带宽

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/195754

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX