2015-06-22 1 views
2

У меня есть сервер Tornado, работающий позади обратного прокси-сервера Nginx. Прокси-сервер настроен на tcp_nodelay: on. Я вижу, что есть возможность вызвать WebSocketHandler.set_nodelay(True) экземпляр WebSocket после его подключения.Tornado за Nginx, следует ли использовать конфигурацию nodelay для TCP в python или nginx.conf?

Эти два эффекта создают тот же эффект? Есть ли pro's con для использования одного над другим? Или оба?

ответ

1

В общем, если вы используете nodelay и прокси, вы должны включить его на всех уровнях, чтобы увидеть какую-либо выгоду. В противном случае любая часть системы, которая не имеет nodelay, введет задержки, которые вы пытаетесь избежать.

Согласно nginx docs for tcp_nodelay, он применяется только в том случае, если соединение находится в состоянии keep-alive, поэтому оно не будет влиять на проксированные веб-соединения.

+0

Спасибо за быстрый ответ @ ben-darnell! Что касается второй части, вы говорите, что любые проксированные ws над nginx не будут переходить в состояние keep-alive? Значит, это не значит, что только метод Tornado ws handler будет иметь какой-либо эффект в этом стеке? – ydaniv

+1

Соединения с веб-сайтами никогда не находятся в состоянии keep-alive, поэтому этот параметр не будет применяться к ним. Могут быть другие настройки, которые применяются, или в этом случае они могут быть включены по умолчанию. Если nginx не включит «TCP_NODELAY», включение его на уровне Tornado вряд ли будет иметь большое влияние, так как ваши пакеты будут отправлены в nginx немедленно, но при использовании алгоритма nagle они будут поддерживаться в nginx. –

+0

ОК, так что, по крайней мере, я уверен, что сообщения на этом пути отправляются немедленно. Теперь нужно, чтобы эта другая копилка покачивалась (: – ydaniv

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