Apache Tuning 疑惑

Apache Tuning 疑惑

我正在尝试调整 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

我希望这会有所帮助。

相关内容