MaxClients 的 MinSpareThreads,考虑提高 MaxClients 设置

mib*_*zer 6 apache-2.2

昨天我的项目有问题。它甚至无法从浏览器打开。重启apache后问题解决。之后,我检查了 apache 日志并找到了以下几行。

[error] server is within MinSpareThreads of MaxClients, consider raising the MaxClients setting
Run Code Online (Sandbox Code Playgroud)

有人可以解释此消息的含义吗?会不会导致这样的问题。

我真的需要增加 MaxClients 还是最好了解是什么导致服务器到达 MaxClients ..

Jen*_*y D 4

Apache 对它可以处理的并发连接数有限制。此限制是通过 MaxClients 设置的。当服务器达到该并发连接数时,在现有连接之一关闭之前,无法处理任何后续连接。

您还有一个名为 MinSpareThreads 的设置,它告诉服务器应该启动多少个线程来等待新连接。假设您的服务器设置如下:

 MaxClients 100
 MinSpareThreads 5
Run Code Online (Sandbox Code Playgroud)

然后,服务器将尝试始终有 5 个线程准备就绪并等待连接。但是,一旦有 95 个用户同时连接,您就只剩下另外 5 个用户的空间,因此一旦下一个客户端连接,服务器将无法再创建任何更多的备用线程 - 因此日志消息告诉您,它是接近 MaxClients 设置。

了解服务器为何达到 MaxClients 总是一个好主意。它的值应该足够高,能够满足正常负载+合理的流量峰值,但又足够低,即使有人试图对你的 Web 服务器进行 DOS,apache 也不会因为服务太多客户而耗尽你所有的内存和 CPU。要找出最佳值,您需要进行一些负载测试。