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

时间:2012-06-13 16:30:22

标签: php apache apache2

我知道Apache指令MaxClientsListenBacklog。我试图设置一个限制,比如100个并发连接,之后新连接将被提供给一个静态页面。 可以这样做吗? MaxClients和ListenBacklog应该高于还是低于该限制?我该怎么测试呢?

2 个答案:

答案 0 :(得分:1)

如果你可以将nginx放在apache的前面,你可以试试这个nginx模块https://github.com/cfsego/nginx-limit-upstream。它限制了与apache的连接数,并将其他连接放入队列。这不完全是你想要的,但是,我认为,可以修改模块来渲染静态页面而不是放入队列。

答案 1 :(得分:1)

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

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

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

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

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