我正在尝试调整 Apache 中的参数以适应高流量网站。我的规格是
Ram : 12 GB RAM
CPU : 16 core
当前参数
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MinSpareServers 5
MaxSpareServers 10
ServerLimit 2500
MaxClients 2500
MaxRequestsPerChild 10000
KeepAlive Off
KeepAliveTimeout 5
MaxKeepAliveRequests 100
根据我的服务器规格,这些参数的建议值是多少?
答案1
您可以生成的工作进程的数量(通常由 PHP 使用的 MPM 类型中的 maxclients 目录定义)取决于每个工作进程的大小和您在机器上可用的内存。
例如(这里我进行快速计算,而不是指向准确性),如果您有 12 GB,您应该考虑其中的一部分将由内核用于其自身用途、缓冲、其他库等。
假设(粗略估计)我前面提到的内容会耗费 2 GB。
此时您大约还剩下 10 GB 的 RAM。
现在,让我们按照每个工作者占用 100 MB 内存的例子(这取决于您在 Apache 上加载的模块和您正在执行的 PHP 的大小)。
这意味着您将能够为 10,000 (RAM) / 100 (worker 大小) 用户提供服务,从而产生大约 100 个并发用户。考虑到需要考虑 keepalive 指令、会话保持多长时间、生成内容的速度(从而释放 worker),这个结果还不错。
网络托管的黄金法则是永远不要交换。如果你开始交换,你就完了,游戏结束了。交换对任何系统都是有害的,但对网络服务尤其如此。
如果您进行交换,您将开始积累工人(因为您将会很慢地为用户提供服务)并且很可能会在几分钟内在您的系统中自动造成 DOS(拒绝服务)。
再说一次,没有黄金法则,我的计算只是近似值,仅作为一个例子。
我建议:
- 设置测试环境
- 调整系统
- 调整 Apache
- 调整 PHP
- 加载你的应用程序
- 模拟负载
- 开始交换之前先了解一下门槛是多少
- 根据以上几点结果配置 apache 和 php
我希望这会有所帮助。