Tornado在OSX上失败但在Ubuntu上工作

时间:2016-02-03 15:50:17

标签: python macos ubuntu tornado

我们正在对Tornado进行一些性能测试。这是代码

import tornado.websocket
import tornado.ioloop
import tornado.web

class TestTornado(tornado.websocket.WebSocketHandler):
    def open(self):
        self.set_nodelay(True)
        pass

    def on_message(self, message):
        self.write_message(message)
        self.close()

    def on_close(self):
        pass

def main():
    applicationList = []
    applicationList.append((r"/ws", TestTornado))

    application = tornado.web.Application(applicationList)
    application.listen(8888)

    myIOLoopInstance = tornado.ioloop.IOLoop.instance()
    myIOLoopInstance.start()

if __name__ == "__main__":
    main()

我们正在使用thor --amount 10000 --messages 100 ws://localhost:8888/ws

进行测试

然而,在OS X中,它或多或少地在7000个连接之后总是失败,但在Ubuntu上根本没有错误。请注意我说的是连接,而不是文件,因此问题与OS X可以处理的最大打开文件无关(它已经设置为1000000)。

那么..为什么会这样?我们可以在OS X上更改任何配置以使其正常工作吗?

1 个答案:

答案 0 :(得分:0)

这是OSX本身的一个问题。这些参数应该有所帮助,但我们不再在OS X上进行测试,所以不确定。

kern.ipc.maxsockbuf=4194304
kern.ipc.somaxconn=2048
kern.ipc.nmbclusters=2048
net.inet.tcp.rfc1323=1
net.inet.tcp.win_scale_factor=4
net.inet.tcp.sockthreshold=16
net.inet.tcp.sendspace=1042560
net.inet.tcp.recvspace=1042560
net.inet.tcp.mssdflt=1448
net.inet.tcp.v6mssdflt=1428
net.inet.tcp.msl=15000
net.inet.tcp.always_keepalive=0
net.inet.tcp.delayed_ack=3
net.inet.tcp.slowstart_flightsize=20
net.inet.tcp.local_slowstart_flightsize=20
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.icmp.icmplim=50

来源:https://rolande.wordpress.com/2010/12/30/performance-tuning-the-network-stack-on-mac-osx-10-6/