无法连接到WSGI守护进程'wsgi'

时间:2016-06-13 21:16:44

标签: django apache mod-wsgi wsgi

之前在多个问题/ asnwers中突出显示,thisthis我已将WSGISocketPrefix配置为/etc/httpd/run/wsgi

/etc/httpd/run目录具有权限root:apache,创建的sock文件具有apache:root权限。

我面临的问题是,apache总是试图连接到比它应该寻找的袜子少的袜子。袜子的例子是/var/run/httpd/wsgi.1769.1.1.sock,但是apache会查找/var/run/httpd/wsgi.1769.0.1.sock

AFAIK没有权限问题,问题在于WSGI sock编号apache正在查找。我怎样才能克服这个问题?为什么wsgi和apache之间sock-version之间存在不匹配?

完整的日志行:(2)No such file or directory: [client A.B.C.D:57798] mod_wsgi (pid=1549): Unable to conn ect to WSGI daemon process 'wsgi' on '/etc/httpd/run/wsgi.1144.0.1.sock' after multiple attempts.

1 个答案:

答案 0 :(得分:4)

最有可能的原因是你已经完成了Apache正常重启,并且使用keep alive实现了长期存在的客户端连接,这使得Apache子工作进程保持运行,并尝试在同一连接上处理更多请求。该进程将仅尝试连接到创建该进程时存在的守护程序进程组,但重新启动意味着守护程序进程组已重新启动。出于安全原因,它无法切换到使用守护进程组的新实例,因为配置更改意味着它可能不应该这样做。允许它可能导致安全漏洞。

没有简单的方法可以缓解它,除非不使用正常重启,或者为客户端连接转为保持活动状态。

你多久经常进行一次优雅的重启?您依赖于与动态Python应用程序保持连接的程度有多大?