我们有一个运行Apache的服务器,其中一个虚拟主机使用mod_wsgi来根据请求运行繁重的任务。 服务器可以一次处理X个请求,每个请求将运行约10分钟。 如果所有线程都处于忙碌状态,我不希望让新客户端等待,如果没有线程空闲,我想让服务器立即以503状态响应。
我试图使用各种超时来实现这一点,但它不能按需要工作。 这是我试过的(只有一个线程),但它使新的客户端等待1800秒,然后以504状态响应。
WSGIDaemonProcess xxx user=xxx group=xxx processes=1 threads=1 connect-timeout=10 queue-timeout=10 deadlock-timeout=2000 socket-timeout=1800 listen-backlog=0
我怎样才能使服务器只接受与WSGI守护进程的线程一样多的连接?
(服务器运行Apache 14.04和mod_wsgi 4.5)
您可以在apacheconfiguration中使用maxclients指令来限制apache可以提供的请求数量。
例如 :
MaxClients 200
同时只允许200个客户端。
(编辑)
如果一个虚拟主机有特殊的问题或特殊性,通常在专用的apache实例(可以在同一个硬件上)上隔离它是一个好主意。
你可以尝试限制每个虚拟主机的连接,但根据这个post,你需要额外的模块,如mod_cban Apache极限连接每个VHOST
(/编辑)