我知道 Apache 指令MaxClients
和ListenBacklog
。我试图设置一个限制,比如说 100 个并发连接,超过这个限制后,新连接将获得静态页面。这能做到吗?MaxClients
和应该ListenBacklog
高于还是低于这个限制?我该如何测试?
答案1
如果 Apache 无法接受传入连接(因为它已经处理了 MaxClients),那么它就无法提供静态页面。因此,我没有任何确凿的证据,但我不明白如何仅使用 Apache 来实现这一点。您可能能够在 Apache 前面放置一些东西,如果 Apache 返回连接失败,它会返回静态页面,但对我来说这似乎需要很多复杂的配置。希望有人能证明我错了。
答案2
我是这样做的:假设我想允许 X 个并发请求,之后接下来的 Y 个并发请求将留在队列中,等待第一个 X 完成,并且超过 X + Y 的所有内容都将提供给静态页面:
必须
httpd.conf
设置以下指令:MaxClients X ServerLimit X ListenBacklog Y
以 root 身份登录 MySQL,设置
max_connections
:set global max_connections = X
.htaccess
从服务器的公共根文件夹编辑文件:ErrorDocument 503 error_503.html
确保您的 error_503.html 在一个请求中提供。所有样式表和脚本都必须位于此文件中。如果您想包含图像,则必须使用数据 URI 方案。另外,您还必须对图像进行切片,因为 IE 中的数据 URI 必须小于 32KiB。