我最近从 Apache 2.2 prefork 切换到 Apache 2.2 worker,但我不知道什么样的 MPM 配置才适合入门。在 prefork 上,我使用了:
MaxClients 256
StartServers 190
MinSpareServers 160
MaxSpareServers 220
我希望能够至少接受尽可能多的同时请求(190)
谢谢 !
PS:服务器环境:Debian 5.0、2x 3.00 Ghz、4 GB RAM,专用于 Apache。
答案1
ServerLimit 256
MaxClients 256
StartServers 19
ThreadsPerChild 10
MinSpareThreads 160
MaxSpareThreads 220
MaxRequestsPerChild 10000
这会:
- httpd启动时启动190个线程
- 最多可同时处理 256 个请求
- 确保至少有 160 个备用线程
- 最多限制 220 个备用线程
- 在用新子进程替换每个 httpd 子进程之前,将其限制为处理 10,000 个请求。这有助于防止在底层应用程序发生内存泄漏时挂起 apache 服务器。
答案2
最后,我使用了以下设置,效果很好:
StartServers 8
MaxClients 1024
MinSpareThreads 512
MaxSpareThreads 1024
ThreadsPerChild 64
MaxRequestsPerChild 10000
我选择了更大的值,因为内存占用应该小得多。我还注意到,当使用奇怪的值运行 apachectl configtest(或 start/stop)时,它会报告错误并自动调整设置。