我知道Apache指令MaxClients
和ListenBacklog
。我试图设置一个限制,比如100个并发连接,之后新连接将被提供给一个静态页面。
可以这样做吗? MaxClients和ListenBacklog应该高于还是低于该限制?我该怎么测试呢?
答案 0 :(得分:1)
如果你可以将nginx放在apache的前面,你可以试试这个nginx模块https://github.com/cfsego/nginx-limit-upstream。它限制了与apache的连接数,并将其他连接放入队列。这不完全是你想要的,但是,我认为,可以修改模块来渲染静态页面而不是放入队列。
答案 1 :(得分:1)
我是这样做的: 假设我想允许X并发请求,之后以下Y个并发请求将保留在队列中,等待第一个X完成,超过X + Y的所有请求将被提供给静态页面:
在httpd.conf
中,必须设置以下指令:
MaxClients X
ServerLimit X
ListenBacklog Y
在MySQL中以root身份登录,设置max_connections
:
set global max_connections = X
从服务器的公共根文件夹编辑.htaccess
文件:
ErrorDocument 503 error_503.html
确保您的error_503.html在一个请求中提供。所有样式表和脚本都必须位于此文件中。如果要包含图像,则必须使用data uri scheme。此外,您必须将图像切片,因为在IE中数据URI必须小于32KiB。