在 LAMP 堆栈上,如何限制并发连接数并为超出限制的连接提供静态页面?

在 LAMP 堆栈上,如何限制并发连接数并为超出限制的连接提供静态页面?

我知道 Apache 指令MaxClientsListenBacklog。我试图设置一个限制,比如说 100 个并发连接,超过这个限制后,新连接将获得静态页面。这能做到吗?MaxClients和应该ListenBacklog高于还是低于这个限制?我该如何测试?

答案1

如果 Apache 无法接受传入连接(因为它已经处理了 MaxClients),那么它就无法提供静态页面。因此,我没有任何确凿的证据,但我不明白如何仅使用 Apache 来实现这一点。您可能能够在 Apache 前面放置一些东西,如果 Apache 返回连接失败,它会返回静态页面,但对我来说这似乎需要很多复杂的配置。希望有人能证明我错了。

答案2

我是这样做的:假设我想允许 X 个并发请求,之后接下来的 Y 个并发请求将留在队列中,等待第一个 X 完成,并且超过 X + Y 的所有内容都将提供给静态页面:

  1. 必须httpd.conf设置以下指令:

    MaxClients X
    ServerLimit X
    ListenBacklog Y
    
  2. 以 root 身份登录 MySQL,设置max_connections

    set global max_connections = X
    
  3. .htaccess从服务器的公共根文件夹编辑文件:

    ErrorDocument 503 error_503.html
    
  4. 确保您的 error_503.html 在一个请求中提供。所有样式表和脚本都必须位于此文件中。如果您想包含图像,则必须使用数据 URI 方案。另外,您还必须对图像进行切片,因为 IE 中的数据 URI 必须小于 32KiB。

相关内容