1
zhouquanbest 2015-06-03 12:22:52 +08:00
不是吧 和你一样的配置 单tornado 我有连sql的操作都能跑90RPS
一般cpu count+2 |
2
neoblackcap 2015-06-03 12:26:53 +08:00
看你怎么实现吧,如果全部IO操作都已经改用异步处理的话(大概就像friendfeed他们丧心病狂地将db封装成http api)那么你开一个进程就可以了。
如果不是的话,这个就难说了,具体你能不能给多点信息啊。30rps这样的话大概就是io严重堵塞了。 |
3
wingyiu OP @neoblackcap 只有db一个io啊,而且是一个进程一个db链接,库用的是torndb,貌似不是异步的
|
4
wingyiu OP @zhouquanbest 实测证明1Core 1Process就行了,再多也不会有提升
|
5
wingyiu OP @neoblackcap log里看出无并发时单个请求都是10ms一下的,-c 100就变成50ms了,CPU负载基本为5%以下
|
6
neoblackcap 2015-06-03 15:27:28 +08:00
@wingyiu CPU负载这么低,肯定是IO堵塞了。大工程啊,我现在还是看到很多人去开多进程来启动tornado,多开就好了,这个数目没有定数的,理论上是说多少核开多少个,但是实际还是要根据你情况来。多开一下就CPU会上去(上下文切换),并发也就上去了。
真的要完全利用tornado的并发威力,请去自己写一个异步请求服务或者库,要不然都是堵塞的。它本身的并发能力肯定展现不出来 |
7
zhouquanbest 2015-06-03 15:37:32 +08:00
@wingyiu
多个不是为了速度 是防阻塞 |
8
wingyiu OP @neoblackcap 我怀疑我用supervisor启动的tornado 10个进程共用一个数据库链接了,真是奇怪
|
9
neoblackcap 2015-06-03 16:15:17 +08:00
@wingyiu 怎么会呢?难道你自己做了进程间通讯啊?肯定不可能是你的tornado实例共用一个数据库连接,你自己可以用数据提供的运维工具看看,Mysql的是mysqladmin,就可以看到具体是多少个连接在连着数据。
|
10
wingyiu OP |
11
tigerstudent 2015-06-04 09:57:50 +08:00
@neoblackcap 将db封装成http api...太丧心病狂了!!我一直还挺好奇呢数据库那些都挺少有异步库的
|
12
neoblackcap 2015-06-04 10:57:14 +08:00
@tigerstudent 就是这么丧心病狂,然后就直接用tornado的AsyncHttpClient去请求,所以这个就大概是为什么tornado会自带异步的http client的原因。
|
13
wingyiu OP |
14
zeeler 2015-07-31 11:06:34 +08:00
加个cache层吧,瓶颈不一定在tornado上。可以考虑单独测试一下,比如tornado只跑个输出hello world的handler
|