two*_*ash 3 wordpress mpm-prefork amazon-ec2 apache-2.2
只需阅读使 WordPress 在 EC2-Micro 上稳定
在“调整 Apache”部分,我不太明白他是如何为他的 prefork 配置得出他的数字的。
他解释了如何获得我得到的平均过程的数字。但是之后:
或者每个进程大约 53MB...在这种情况下,十个线程应该是安全的。这意味着如果我们同时收到十多个请求,其他请求将排队等待,直到有可用的工作线程。为了最大限度地提高性能,我们还将系统配置为始终具有此数量的可用线程。
从每个进程 53MB 到 613MB 的 RAM,他以某种方式获得了这个配置,而我没有得到:
<IfModule prefork.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 10
MaxClients 10
MaxRequestsPerChild 4000
</IfModule>
Run Code Online (Sandbox Code Playgroud)
他究竟是如何从每个进程 53MB 得到这个的,限制为 613MB?
奖金问题
从下面,在一个小实例(1.7 GB 内存)上,什么是好的设置?
bitnami@ip-10-203-39-166:~$ ps xav |grep httpd
1411 ? Ss 0:00 2 0 114928 15436 0.8 /opt/bitnami/apache2/bin/httpd -f /opt/bitnami/apache2/conf/httpd.conf
1415 ? S 0:06 10 0 125860 55900 3.1 /opt/bitnami/apache2/bin/httpd -f /opt/bitnami/apache2/conf/httpd.conf
1426 ? S 0:08 19 0 127000 62996 3.5 /opt/bitnami/apache2/bin/httpd -f /opt/bitnami/apache2/conf/httpd.conf
1446 ? S 0:05 48 0 131932 72792 4.1 /opt/bitnami/apache2/bin/httpd -f /opt/bitnami/apache2/conf/httpd.conf
1513 ? S 0:05 7 0 125672 54840 3.1 /opt/bitnami/apache2/bin/httpd -f /opt/bitnami/apache2/conf/httpd.conf
1516 ? S 0:02 2 0 125228 48680 2.7 /opt/bitnami/apache2/bin/httpd -f /opt/bitnami/apache2/conf/httpd.conf
1517 ? S 0:06 2 0 127004 55796 3.1 /opt/bitnami/apache2/bin/httpd -f /opt/bitnami/apache2/conf/httpd.conf
1518 ? S 0:03 1 0 127196 54208 3.0 /opt/bitnami/apache2/bin/httpd -f /opt/bitnami/apache2/conf/httpd.conf
1531 ? R 0:04 0 0 127500 54236 3.0 /opt/bitnami/apache2/bin/httpd -f /opt/bitnami/apache2/conf/httpd.conf
Run Code Online (Sandbox Code Playgroud)
计算背后的想法是您需要为其他事情保留一些内存 - 操作系统和在实例上运行的其他服务。之后,无论您还剩下什么,您都可以除以使用的平均内存(驻留集大小 - RSS 列),以获得您的服务器可以处理而不会耗尽内存的最大线程数。
也就是说,我喜欢稍微不同地进行我的计算,但我稍后会解决这个问题。
来自 httpd.conf:
分叉前 MPM
您显示的配置将保持 10 个恒定进程运行:您启动 10 个进程 (StartServers),并且您最多允许 10 个服务器进程 (MaxClients)。在这种情况下,MinSpareServers 和 MaxSpareServers 不应发挥作用。服务器进程处理了 4000 个请求后,它将被终止并在其位置创建一个新进程(以尝试限制内存泄漏等)
因此,所做的假设是您服务器上的其他所有内容都将使用大约 80MB 的内存 - 剩下 530MB。将其除以您的平均进程大小 (53MB),得到 10 个进程。
我建议这个假设有点偏离。如果您在服务器上运行其他任何东西(例如 MySQL),您肯定需要保留更多内存。此外,没有考虑变异的空间。为了估计,我会为操作系统和其他服务留出至少 120MB,然后将其余部分减少 10% 用于变异。因此,最多大约 8 个 apache 进程。
<IfModule prefork.c>
StartServers 2
MinSpareServers 1
MaxSpareServers 3
MaxClients 8
MaxRequestsPerChild 1000
</IfModule>
Run Code Online (Sandbox Code Playgroud)
因此,对于上述情况 - 最多有 8 个进程。我们只开始 2。我们希望在任何给定时间至少有 1 个空闲 - 但不超过 3 个空闲。此外,由于内存是一个问题,MaxRequestsPerChild 已减少。
现在,我更喜欢通过实际运行服务器一段时间来计算这个数字,然后停止 apache 并查看系统其余部分使用了多少内存。从总数中减去该数字,取 90%,然后除以平均 apache 进程大小。特别是对于更复杂的设置,这提供了更现实的价值。
值得一提的是,在内存受限的情况下,作为网络服务器,Nginx 可能比 Apache 更可取。此外,您肯定希望在 t1.micro 上有一些交换空间(尽管您不应该发现自己经常使用它)。
| 归档时间: |
|
| 查看次数: |
9646 次 |
| 最近记录: |