我用4个应用程序完成了一个Apache的设置(只需调用它们: A、B、C和D)。有一天,A无法与数据库对话,但A没有被关闭,所以A仍然收到了大量的请求。因为我们的Apache设置为负载均衡器,因为A接收的请求越来越多,但无法处理任何请求,所以Apache向B、C和D发送了一些请求,最后,Apache由于越来越多的请求出现而关闭。
那么,有没有人有任何建议可以更改Apache设置来解决这个问题?
谢谢
发布于 2016-06-09 14:16:47
解决方案1:将mysql连接的小超时(例如500 ms)保持在A内。这样,请求将被更快地终止。
解决方案2:每当A捕获超时异常时,它都应该设置mysql处于关闭状态的环境变量,而其他请求应该会很好地向用户显示错误消息。您可以每100次请求中的1次检查mysql连接。因此,只有一个请求将等待mysql连接,而99将立即终止。如果任何请求成功地连接到mysql,它将更新环境标志,并让其他请求通过。为了更快地恢复,您还应该为每一个这样的例外情况给自己发送一封邮件。
解决方案3:试图找出瓶颈,是否达到了内存限制,是否有太多的apache线程?如果您在apache后面运行php,那么请注意,apache为每个请求将php加载到内存中。因此,每个请求至少需要25 MB。您可以使用php而不是php,这将使服务器当前能够处理的请求数量增加100倍,因为没有其他瓶颈。
https://serverfault.com/questions/782972
复制相似问题