2016-02-03 3 views
1

Мы проводим некоторые тесты производительности на Tornado. Это кодТорнадо не работает на OSX, но работает на Ubuntu

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, чтобы заставить ее работать?

+0

Это может принадлежать на http://serverfault.com вместо –

+0

Вы говорите "провал" - это Tornado бросить исключение? Не могли бы вы рассказать нам, какие симптомы? –

+0

@ A.JesseJiryuDavis просто перестает обрабатывать соединения, когда достигает около 7000 соединений. Через некоторое время стресс-тест заканчивается и показывает, что все они были «провалены» – yzT

ответ

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/

Смежные вопросы