2017-01-17 2 views
0

Ich versuche, neues Relikt mit meinem Gunicorn + Tornado 4 App zu konfigurieren.Worker Timeouts beim Einrichten Neues Relikt mit Tornado 4 und Gunicorn

Lokal, ohne Gunicorn (und einfach Tornado als WSGI-Server verwenden), funktioniert das neue Reliquie-Setup und ich kann Daten in neuen Relikten sehen. Ich verwende den folgenden Code, um den neuen Relikt Agenten zu konfigurieren:

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) 

jedoch in der Produktion, mit gunicorn, ich unbestimmtem Arbeiter Timeouts:

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 

Wenn ich den Agentencode oben auskommentiere und den Gunicorn-Befehl ausführe, sind die Worker stabil und haben keine Zeitüberschreitung.

Obwohl ich die Protokollierungsstufe auf DEBUG eingestellt habe, kann ich nicht die Ursache dafür finden, warum ein Gunicorn Worker auf unbestimmte Zeit ausläuft und neu startet. Alles, was ich weiß, ist, dass der Code des neuen Reliktagenten der Schuldige ist.

Da ich in der Lage bin erfolgreich mit New Relic lokal zu integrieren, vermute ich, dass meine newrelic.ini und der neue Relikt-Agent-Code oben in Ordnung ist. Gunicorn bringt die Dinge irgendwie durcheinander, aber jetzt ist klar, wie oder wo ich anfangen sollte, nach Fehlern zu suchen.

Ich verwende:

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

Antwort

0

Wow, es endete ein Problem Speicher sein. Wenn ich einen Arbeiter anstelle von 3 spawne, funktioniert alles. Die neue Reliquieinstrumentation war gerade dabei, meine Speicherauslastung über den Rand zu bringen.

Verwandte Themen