Найти - Пользователи
Полная версия: tornado 504 ошибка
Начало » Web » tornado 504 ошибка
1
h0rn3t
Вообщем так есть фронтенд nginx -> балансирощик haproxy -> бекенд tornado (3 сервера). Сайт очень легкий (пару строк текста без всяких джаваскриптов и прочего на Django, автообновление страницы каждые 10 сек), соединений в среднем 2500-3000. Если отключить 2 сервера у клиентов начинают возникать 504 ошибки. Вопрос в следуйщем сервер Core i7 нагружено только 1 ядро из 8, даст ли увеличение процессов tornado на сервере каких то результатов?
o7412369815963
> соединений в среднем 2500-3000
3000 в секунду (нагрузка)? сколько соединений держит 1 процесс (Х)? делим нагрузку на Х + 1 = оптимальное кол-во процессов.

> даст ли увеличение процессов tornado на сервере каких то результатов?
В большинстве случаев да. (т.к. 1 процесс выдает не более 3к “hello world” на среднем сервере)

пофоркать процессы можно с пом. модуля tornado.process
h0rn3t
В том то и дело что на одном сервере запущено 8 процессов, а на остальных двух по 4, если отрубить их то будут ошибки 504. Если добавить на первый сервер еще 8 процессов это поможет делу?
o7412369815963
504 вываливается сразу или через какое-то время?

> одном сервере запущено 8 процессов
т.е. все ядра загружены, добавление процессов даст производительности только в том случае если сервер криво написан, например использует блокирующие (синхронные) методы. Но ещё не факт что проблема в этом, много фактов не известно, возможно криво настроен nginx / haproxy.

> Если добавить на первый сервер еще 8 процессов это поможет делу?
Добавьте - протестируйте.
h0rn3t
запуск джанго проекта производится этим скриптом
import os
import sys

DJANGO_ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DJANGO_APPS_DIR = os.path.join(DJANGO_ROOT_DIR, 'app')

def daemon(iport):
import tornado.wsgi
import tornado.ioloop
import tornado.httpserver

sys.path.insert(0, DJANGO_APPS_DIR)
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

container = tornado.wsgi.WSGIContainer(application)
http_server = tornado.httpserver.HTTPServer(container)
http_server.listen(iport)
tornado.ioloop.IOLoop.instance().start()

if __name__ == "__main__":
daemon(int(sys.argv[1]))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB