2017-01-17 7 views
0

Я пытаюсь настроить новую реликвию с помощью своего приложения gunicorn + tornado 4.Тайм-ауты рабочего времени при настройке Новая реликвия с Tornado 4 и Gunicorn

Локально, без оружия (и просто используя торнадо в качестве сервера WSGI), новая установка реликвии работает, и я могу видеть данные в новой реликвии. Я использую следующий код для настройки нового реликтового агента:

config_file = os.environ.get('NEW_RELIC_CONFIG_FILE', None) 
if config_file: 
    import newrelic.agent 
    environment = 'production' if IS_PROD else 'development' 
    newrelic.agent.initialize(config_file, environment=environment) 

Однако в производстве, с gunicorn, я получаю неопределенный рабочий таймаут:

gunicorn -b 0.0.0.0:8080 -w 3 -p gunicorn.pid -k tornado --access-logfile /var/log/gunicorn_access.log --error-logfile /var/log/gunicorn_error.log myapp.server:make_application\(\) -t 2 --log-level DEBUG --capture-output &> /dev/null & 

...

[2017-01-17 05:16:37 +0000] [26957] [CRITICAL] WORKER TIMEOUT (pid:26985) 
[2017-01-17 05:16:37 +0000] [26957] [CRITICAL] WORKER TIMEOUT (pid:26986) 
[2017-01-17 05:16:37 +0000] [26957] [CRITICAL] WORKER TIMEOUT (pid:26987) 
[2017-01-17 05:16:37 +0000] [26991] [INFO] Booting worker with pid: 26991 
[2017-01-17 05:16:37 +0000] [26992] [INFO] Booting worker with pid: 26992 
[2017-01-17 05:16:37 +0000] [26993] [INFO] Booting worker with pid: 26993 
[2017-01-17 05:16:40 +0000] [26957] [CRITICAL] WORKER TIMEOUT (pid:26992) 
[2017-01-17 05:16:40 +0000] [26957] [CRITICAL] WORKER TIMEOUT (pid:26993) 
[2017-01-17 05:16:40 +0000] [26957] [CRITICAL] WORKER TIMEOUT (pid:26991) 
[2017-01-17 05:16:40 +0000] [26997] [INFO] Booting worker with pid: 26997 
[2017-01-17 05:16:40 +0000] [26998] [INFO] Booting worker with pid: 26998 
[2017-01-17 05:16:40 +0000] [26999] [INFO] Booting worker with pid: 26999 

Если я прокомментирую код агента выше и запустил команду gunicorn, рабочие стабильны и не будут таймаутом.

Несмотря на то, что уровень регистрации в DEBUG не установлен, я не могу найти основную причину того, почему рабочий-стрелок отбирает время и перезагружается на неопределенный срок. Все, что я знаю, это то, что новый код реликвийного агента выше - виновник.

Поскольку я могу успешно интегрироваться с Новой реликцией локально, я подозреваю, что мой newrelic.ini и новый код реликвии выше. Gunicorn как-то возится, но теперь я уверен, как и где я должен начать устранение неполадок.

Я использую:

newrelic==2.78.0.57 
gunicorn==19.6.0 
tornado==4.4 

ответ

0

Вау, это закончилось тем, что проблема памяти. Когда я создаю 1 рабочего вместо 3, все работает. Новая реликвиальная аппаратура едва ли опрокидывала мое использование памяти по краю.