Python Django-使用Gunicorn、Nginx和Supervisor部署,Gunicorn错误日志
我已经部署了一个带有Gunicorn+Nginx+Supervisor的Django 1.6应用程序。一切正常,但我一直有Gunicorn error.log发送错误。该文件很大,每秒都会向日志文件发送错误 Gunicorn error.log中的错误:Python Django-使用Gunicorn、Nginx和Supervisor部署,Gunicorn错误日志,python,django,nginx,gunicorn,supervisord,Python,Django,Nginx,Gunicorn,Supervisord,我已经部署了一个带有Gunicorn+Nginx+Supervisor的Django 1.6应用程序。一切正常,但我一直有Gunicorn error.log发送错误。该文件很大,每秒都会向日志文件发送错误 Gunicorn error.log中的错误: 2014-02-27 14:25:09 [9235] [INFO] Starting gunicorn 18.0 2014-02-27 14:25:09 [9235] [ERROR] Connection in use: ('127.0.0.1
2014-02-27 14:25:09 [9235] [INFO] Starting gunicorn 18.0
2014-02-27 14:25:09 [9235] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:09 [9235] [ERROR] Retrying in 1 second.
2014-02-27 14:25:10 [9235] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:10 [9235] [ERROR] Retrying in 1 second.
2014-02-27 14:25:11 [9235] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:11 [9235] [ERROR] Retrying in 1 second.
2014-02-27 14:25:12 [9235] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:12 [9235] [ERROR] Retrying in 1 second.
2014-02-27 14:25:13 [9235] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:13 [9235] [ERROR] Retrying in 1 second.
2014-02-27 14:25:14 [9235] [ERROR] Can't connect to ('127.0.0.1', 8000)
2014-02-27 14:25:16 [9250] [INFO] Starting gunicorn 18.0
2014-02-27 14:25:16 [9250] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:16 [9250] [ERROR] Retrying in 1 second.
2014-02-27 14:25:17 [9250] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:17 [9250] [ERROR] Retrying in 1 second.
2014-02-27 14:25:18 [9250] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:18 [9250] [ERROR] Retrying in 1 second.
2014-02-27 14:25:19 [9250] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:19 [9250] [ERROR] Retrying in 1 second.
2014-02-27 14:25:20 [9250] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:20 [9250] [ERROR] Retrying in 1 second.
2014-02-27 14:25:21 [9250] [ERROR] Can't connect to ('127.0.0.1', 8000)
2014-02-27 14:25:24 [9261] [INFO] Starting gunicorn 18.0
2014-02-27 14:25:24 [9261] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:24 [9261] [ERROR] Retrying in 1 second.
2014-02-27 14:25:25 [9261] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:25 [9261] [ERROR] Retrying in 1 second.
2014-02-27 14:25:26 [9261] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:26 [9261] [ERROR] Retrying in 1 second.
2014-02-27 14:25:27 [9261] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:27 [9261] [ERROR] Retrying in 1 second.
2014-02-27 14:25:28 [9261] [ERROR] Connection in use: ('127.0.0.1', 8000)
2014-02-27 14:25:28 [9261] [ERROR] Retrying in 1 second.
2014-02-27 14:25:29 [9261] [ERROR] Can't connect to ('127.0.0.1', 8000)
My supervisor.conf:
[program:mydjangoapp]
command=/home/myuser/virtualenv_mydjangoapp/bin/python manage.py run_gunicorn
directory=/home/myuser/webapps/mydjangoapp
user=myuser
autostart=True
autorestart=True
stdout_logfile = /home/myuser/webapps/mydjangoapp_logs/gunicorn/out.log
stderr_logfile = /home/myuser/webapps/mydjangoapp_logs/gunicorn/err.log
My Nginx virtual.conf:
server {
listen 80;
client_max_body_size 1G;
server_name 0.0.0.0;
keepalive_timeout 5;
access_log /home/myuser/webapps/mydjangoapp_logs/nginx/access.log;
error_log /home/myuser/webapps/mydjangoapp_logs/nginx/error.log;
location /static {
alias /home/myuser/webapps/mydjangoapp_static;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://localhost:8000;
}
}
我的netstat-tulpn:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 2719/python
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 2606/mysqld
tcp 0 0 0.0.0.0:46028 0.0.0.0:* LISTEN 2757/beam.smp
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2613/nginx
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 2663/epmd
tcp 0 0 0.0.0.0:85 0.0.0.0:* LISTEN 2613/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2469/sshd
tcp6 0 0 :::5672 :::* LISTEN 2757/beam.smp
tcp6 0 0 :::22 :::* LISTEN 2469/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 2395/dhclient3
udp 0 0 0.0.0.0:123 0.0.0.0:* 3127/ntpd
udp 0 0 0.0.0.0:1900 0.0.0.0:* 2551/minissdpd
udp6 0 0 ::1:123 :::* 3127/ntpd
udp6 0 0 :::123 :::* 3127/ntpd
我的上司日志:
2014-02-27 16:14:56,300 CRIT Supervisor running as root (no user in config file)
2014-02-27 16:14:56,303 CRIT Supervisor running as root (no user in config file)
2014-02-27 16:14:56,413 INFO RPC interface 'supervisor' initialized
2014-02-27 16:14:56,413 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2014-02-27 16:14:56,414 INFO supervisord started with pid 2510
2014-02-27 16:14:56,651 INFO RPC interface 'supervisor' initialized
2014-02-27 16:14:56,651 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2014-02-27 16:14:56,657 INFO daemonizing the supervisord process
2014-02-27 16:14:56,658 INFO supervisord started with pid 2687
2014-02-27 16:14:57,453 INFO spawned: 'celery' with pid 2786
2014-02-27 16:14:57,466 INFO spawned: 'mydjangoapp' with pid 2787
2014-02-27 16:14:57,666 INFO spawned: 'celery' with pid 2842
2014-02-27 16:14:57,673 INFO spawned: 'mydjangoapp' with pid 2846
2014-02-27 16:14:58,471 INFO success: mydjangoapp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2014-02-27 16:14:58,676 INFO success: mydjangoapp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2014-02-27 16:15:09,284 INFO success: celery entered RUNNING state, process has stayed up for > than 10 seconds (startsecs)
2014-02-27 16:15:09,313 INFO success: celery entered RUNNING state, process has stayed up for > than 10 seconds (startsecs)
2014-02-27 16:15:13,438 INFO exited: mydjangoapp (exit status 1; not expected)
2014-02-27 16:15:14,445 INFO spawned: 'mydjangoapp' with pid 3164
2014-02-27 16:15:15,830 INFO success: mydjangoapp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2014-02-27 16:15:20,539 INFO exited: mydjangoapp (exit status 1; not expected)
2014-02-27 16:15:21,546 INFO spawned: 'mydjangoapp' with pid 3264
2014-02-27 16:15:22,549 INFO success: mydjangoapp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2014-02-27 16:15:27,669 INFO exited: mydjangoapp (exit status 1; not expected)
2014-02-27 16:15:28,676 INFO spawned: 'mydjangoapp' with pid 3275
2014-02-27 16:15:29,679 INFO success: mydjangoapp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2014-02-27 16:15:35,166 INFO exited: mydjangoapp (exit status 1; not expected)
2014-02-27 16:15:36,173 INFO spawned: 'mydjangoapp' with pid 3286
2014-02-27 16:15:37,175 INFO success: mydjangoapp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2014-02-27 16:15:42,332 INFO exited: mydjangoapp (exit status 1; not expected)
2014-02-27 16:15:43,339 INFO spawned: 'mydjangoapp' with pid 3295
My supervisorctl状态输出:
root@li199-188:/var/log# supervisorctl status
celery RUNNING pid 2842, uptime 0:04:05
mydjangoapp RUNNING pid 3815, uptime 0:00:03
关于Gunicorn日志文件中出现错误的原因有什么线索吗?正如我所说,一切都在顺利进行。唯一的问题是此日志不断发送错误
非常感谢,正如错误日志所说,似乎有一个应用程序已经在侦听端口8000。 也许您从命令行ant启动了gunicorn,它已经在该端口中运行 您可以使用netstat-tulpn查看是否有python实例在该端口上侦听并终止它
希望这会有所帮助。这通常发生在gunicorn进程重试几次时,以及在上一个进程即将完成时,您碰巧在端口上启动了一个进程(在您的情况下为8000),等等。因此,您需要单独终止所有此类进程
- 您可以使用
查看PIDnetstat-tulpn
kill-9PID
netstat
检查并杀死它们,直到在该端口上发现不再有进程运行
Gunicorn进程在这一点上应该可以正常工作。
python manage.py run\u Gunicorn
run as a deamon?看起来像是supervidor错误地重新启动了程序。查看主管日志。supervidor告诉您的程序正在崩溃。您的程序需要一个virtualenvironment?Searh来获取第一条错误消息,在使用连接之前:
错误。让我们添加我的“netstat-tulpn”输出。Python在PID 2719上运行,与supervisord进程的PID相同。