我正在尝试用我的gunicorn + tornado 4 app配置新遗物。
在本地,没有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,但我无法找到为什么gunicorn worker正在超时并无限期重启的根本原因。我所知道的是,上面的新遗留代理代码是罪魁祸首。
由于我能够在本地成功地与New Relic集成,我怀疑我的newrelic.ini和上面的新relic代理代码都没问题。 Gunicorn在某种程度上搞砸了,但现在确定我应该如何或在哪里开始排除故障。
我正在使用:
newrelic==2.78.0.57
gunicorn==19.6.0
tornado==4.4
答案 0 :(得分:0)