Я пытаюсь настроить новую реликвию с помощью своего приложения 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