Мы проводим некоторые тесты производительности на 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, чтобы заставить ее работать?
Это может принадлежать на http://serverfault.com вместо –
Вы говорите "провал" - это Tornado бросить исключение? Не могли бы вы рассказать нам, какие симптомы? –
@ A.JesseJiryuDavis просто перестает обрабатывать соединения, когда достигает около 7000 соединений. Через некоторое время стресс-тест заканчивается и показывает, что все они были «провалены» – yzT