V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tornado Documentation
http://www.v2ex.com/tornado/
Tornado on GitHub
https://github.com/facebook/tornado/
Tornado Gists
http://tornadogists.org/
wingyiu
V2EX  ›  Tornado

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

  •  
  •   wingyiu · 2015-06-03 12:00:12 +08:00 · 6190 次点击
    这是一个创建于 3446 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,nginx+3tornado只跑了30RPS,怎么破?正常不?
    15 条回复    2015-08-01 10:27:09 +08:00
    zhouquanbest
        1
    zhouquanbest  
       2015-06-03 12:22:52 +08:00
    不是吧 和你一样的配置 单tornado 我有连sql的操作都能跑90RPS

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

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

    真的要完全利用tornado的并发威力,请去自己写一个异步请求服务或者库,要不然都是堵塞的。它本身的并发能力肯定展现不出来
    zhouquanbest
        7
    zhouquanbest  
       2015-06-03 15:37:32 +08:00
    @wingyiu
    多个不是为了速度 是防阻塞
    wingyiu
        8
    wingyiu  
    OP
       2015-06-03 15:53:27 +08:00
    @neoblackcap 我怀疑我用supervisor启动的tornado 10个进程共用一个数据库链接了,真是奇怪
    neoblackcap
        9
    neoblackcap  
       2015-06-03 16:15:17 +08:00
    @wingyiu 怎么会呢?难道你自己做了进程间通讯啊?肯定不可能是你的tornado实例共用一个数据库连接,你自己可以用数据提供的运维工具看看,Mysql的是mysqladmin,就可以看到具体是多少个连接在连着数据。
    wingyiu
        10
    wingyiu  
    OP
       2015-06-03 21:53:51 +08:00
    @neoblackcap
    @zhouquanbest
    求加qq请教
    tigerstudent
        11
    tigerstudent  
       2015-06-04 09:57:50 +08:00
    @neoblackcap 将db封装成http api...太丧心病狂了!!我一直还挺好奇呢数据库那些都挺少有异步库的
    neoblackcap
        12
    neoblackcap  
       2015-06-04 10:57:14 +08:00
    @tigerstudent 就是这么丧心病狂,然后就直接用tornado的AsyncHttpClient去请求,所以这个就大概是为什么tornado会自带异步的http client的原因。
    wingyiu
        13
    wingyiu  
    OP
       2015-06-05 10:12:34 +08:00   ❤️ 1
    zeeler
        14
    zeeler  
       2015-07-31 11:06:34 +08:00
    加个cache层吧,瓶颈不一定在tornado上。可以考虑单独测试一下,比如tornado只跑个输出hello world的handler
    wingyiu
        15
    wingyiu  
    OP
       2015-08-01 10:27:09 +08:00
    @zeeler 瓶颈在带宽
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3658 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:22 · PVG 18:22 · LAX 02:22 · JFK 05:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.