我在 centos 服务器上使用 apache mpm 事件,其配置如下:
<IfModule event.c>
StartServers 8
ServerLimit 64
ThreadsPerChild 256
MaxRequestWorkers 16384
MaxConnectionsPerChild 10000
MinSpareThreads 125
MaxSpareThreads 250
ThreadLimit 256
KeepAlive On
KeepAliveTimeout 2
MaxKeepAliveRequests 500
</IfModule>
然后我将值StartServers
从 8 增加到 32,重建并重新启动 apache,但我看不到系统可用内存有任何变化。我预计当我增加 startServers 的值时,apache 会使用更多内存。为什么内存使用率没有变化?这是否意味着我做错了什么?
答案1
额外的“服务器”被分叉,这(最初)是一个非常轻量的操作,因为内存实际上并没有为每个进程复制。原始和分叉的进程将继续共享相同的内存页面,直到它们被写入使用写时复制机制。只有当每个分叉的进程、每个 Apache“服务器”开始承受负载时,您才会看到内存消耗的相应增加。