ps aux --sort=-%mem
1. 加载Worker模块
首先,确保你的Apache安装包含了worker模块。在大多数情况下,worker模块是默认包含的,但你可以通过检查httpd.conf或apache2.conf文件中的LoadModule指令来确认。
取消此行注释LoadModule mpm_worker_module modules/mod_mpm_worker.so
2. 配置Worker模块参数
Worker模块使用线程来处理请求,而不是像prefork模块那样使用进程。以下是一些关键的配置参数:
ThreadsPerChild:每个子进程中的线程数。这个值应该根据你的服务器负载和内存大小来调整。对于2G内存的服务器,一个合理的起点可能是25到50个线程。
StartServers:启动时创建的服务器进程数。这个值通常较小,因为Apache会根据需求动态调整。
MinSpareThreads 和 MaxSpareThreads:分别是最小和最大空闲线程数。这些值可以帮助Apache在负载变化时保持稳定的性能。
ServerLimit:服务器可以启动的最大子进程数。这个值通常设置为足够大,以容纳可能的最大并发连接数,但不应设置得过高,以免浪费内存。
MaxRequestWorkers(在Apache 2.4中,这个参数替代了旧版本的MaxClients):允许同时运行的最大请求工作线程数(子进程数乘以每个子进程中的线程数)。这个值应该根据你的服务器内存和预期负载来设置。
MaxConnectionsPerChild:每个子进程在重启之前可以处理的最大连接数。设置为0表示子进程将无限期地运行,直到服务器重启或手动终止。
<IfModule mpm_worker_module>
ServerLimit 16
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 100
</IfModule>
ServerLimit设置为16,意味着最多可以有16个子进程。
StartServers设置为2,启动时创建2个子进程。
MinSpareThreads和MaxSpareThreads分别设置为25和75,以保持一定的空闲线程数。
ThreadsPerChild设置为25,每个子进程中有25个线程。
MaxRequestWorkers设置为400(16个子进程 * 25个线程/子进程),这是允许同时运行的最大请求工作线程数。
MaxConnectionsPerChild设置为0,表示子进程将无限期地运行。
550

被折叠的 条评论
为什么被折叠?



