使用 apache 时,当 KeepAlive 关闭时减少 MaxClients 是否合理?当前,MaxClients 设置为 150,这是 mpm-worker 的默认值。
- nginx 为 apache 提供静态文件和反向代理
- 我们平均每秒有 12-15 个请求
- 四核电脑的 CPU 负载平均值从未超过 0.8
谢谢!
答案1
使用 MaxClients 来阻止你的服务器交换..这通常是我处理它的方式。
我尝试弄清楚每个 Apache 进程的大致大小,然后弄清楚可以合理地将多少个进程放入内存中 - 这就是我的 MaxClients 设置。
如果您的网站收到的请求数量超过 MaxClients,您不应该进行交换。额外的客户端将停留在套接字队列中,直到有可用的工作程序。如果花费的时间太长,服务器将超时。如果队列太长,它们将收到拒绝连接的消息。
如果 MaxClients 设置得太高,您的网络服务器将开始抖动和交换。发生这种情况时,每个请求的处理时间都会更长,最终会使问题变得更加严重。
答案2
除非您遇到任何问题,否则我认为没有理由降低 MaxClients。如果有的话,如果您的流量很大,您通常会将其从默认值提高。
答案3
在您的设置中,nginx 处理所有最终用户连接,而 Apache 基本上是一个应用程序服务器。只要您有足够的线程来处理请求,就没问题。如果您需要那么多线程,线程数应该只增加到 150,否则,如果您保留默认值,它将从 StartServer 5 和 MinSpareServers 5 开始。由于它是一台四核机器,所以 32 个左右的线程可能是您所需的最多线程数,但这取决于 Apache 等待后端时发生了多少延迟或阻塞。
总而言之,我可能会保留 MaxClients 不变,并确保 StartServers 为 25(或任何能够支持正常负载的值)而不是 5,这样您的服务器就可以在生产流量出现时立即处理它。然后,我会在线程超过 50 或任何似乎“太高”而超出您正常负载的值时发出警报,因为这可能表明后端性能不佳或您的网站受到攻击。
编辑:不确定为什么我假设你有线程,但它与进程也是一样的。
答案4
将 MaxClients 设置为略低于你的机器内存耗尽水平的值(假设它是一个专用的 Web 服务器)
如果您预计流量不会很大,请确保您的监控系统正在检查正在运行的 Apache 数量。如果数量很高,请尝试找出原因。
对于典型的高流量站点,通常应开启“保持活动”,并将其超时设置为非常快。