
1 zhouquanbest 2015 年 6 月 3 日 不是吧 和你一样的配置 单tornado 我有连sql的操作都能跑90RPS 一般cpu count+2 |
2 neoblackcap 2015 年 6 月 3 日 看你怎么实现吧,如果全部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 年 6 月 3 日 @wingyiu CPU负载这么低,肯定是IO堵塞了。大工程啊,我现在还是看到很多人去开多进程来启动tornado,多开就好了,这个数目没有定数的,理论上是说多少核开多少个,但是实际还是要根据你情况来。多开一下就CPU会上去(上下文切换),并发也就上去了。 真的要完全利用tornado的并发威力,请去自己写一个异步请求服务或者库,要不然都是堵塞的。它本身的并发能力肯定展现不出来 |
7 zhouquanbest 2015 年 6 月 3 日 @wingyiu 多个不是为了速度 是防阻塞 |
8 wingyiu OP @neoblackcap 我怀疑我用supervisor启动的tornado 10个进程共用一个数据库链接了,真是奇怪 |
9 neoblackcap 2015 年 6 月 3 日 @wingyiu 怎么会呢?难道你自己做了进程间通讯啊?肯定不可能是你的tornado实例共用一个数据库连接,你自己可以用数据提供的运维工具看看,Mysql的是mysqladmin,就可以看到具体是多少个连接在连着数据。 |
10 wingyiu OP |
11 tigerstudent 2015 年 6 月 4 日 @neoblackcap 将db封装成http api...太丧心病狂了!!我一直还挺好奇呢数据库那些都挺少有异步库的 |
12 neoblackcap 2015 年 6 月 4 日 @tigerstudent 就是这么丧心病狂,然后就直接用tornado的AsyncHttpClient去请求,所以这个就大概是为什么tornado会自带异步的http client的原因。 |
13 wingyiu OP |
14 zeeler 2015 年 7 月 31 日 加个cache层吧,瓶颈不一定在tornado上。可以考虑单独测试一下,比如tornado只跑个输出hello world的handler |