PHP/Apache2/MySQL 的服务器配置每天可达到 250,000 次点击?

PHP/Apache2/MySQL 的服务器配置每天可达到 250,000 次点击?

有人可以推荐一个配置吗,或者更好的是,能给我指出这个网络设置的完整案例研究吗?

基本上,我们有一个 php 网站,每天的点击量约为 100,000 次。由于 CPU 容量达到上限,尝试在 VPS 上处理此负载时,它已经出现连接超时等问题。我想指定一些可以将其扩展到每天约 250,000 次点击量的规格。

目前服务器是:

  • 单核 1Ghz 突发 VPS(来自 2.6Ghz 双核 Xeon)
  • 2GB 可突发 RAM(再次强调,我发现可突发性的概念非常模糊)
  • 每个 php 进程占用 32MB,运行表达式引擎(据我所知)或类似的大型程序
  • 图像密集的图形页面
  • 偶尔对某些页面进行幕后工作,例如与第三方服务器的 xmlrpc
  • 带有 modphp 的普通 apache(因此图像等静态文件也需要完整的 php 进程——目前无法更改)

到目前为止,CPU 似乎是主要瓶颈,一些 apache 进程在请求期间使用了大约 30% 的 CPU。其他一些 apache 进程似乎好得多,只有 1% 的 CPU;我假设这些是针对静态文件的请求。

所以。我们希望摆脱 VPS,转而使用某种专用或虚拟专用设备,具有非突发(可测量、有保证)的性能。它必须能够处理当前的网络流量,并且在未来至少能处理两倍的流量。

您能给我提供什么建议或研究吗?

是否有任何工具可以根据诸如每个 Apache 进程的内存、动态请求的百分比、PHP 代码是重型 CMS 内容还是轻量级 hello-world 内容等参数为您提供估计的服务器规格?

答案1

我怀疑在这个问题上是否有任何有用的案例研究,因为性能总是会根据应用程序的复杂性而有很大差异——接近拟合的唯一方法是测量和推断。

您没有提到操作系统,但我会设置一系列性能监视器来捕获线程、CPU 负载、内存统计信息、磁盘和网络数据等。还要确保您捕获正在处理的命中次数。由此,您应该能够根据实际看到的负载确定所有这些组件的最小、平均和最大资源使用情况 - 一旦您拥有这些统计数据(mhz/10k-users、mem/10k-users 等),您应该能够快速推断出所需的性能。即使在预期的峰值负载下,也要确保规划大约 20% 的额外余量。

我知道这需要大量的电子表格工作,但这是唯一能让你感到自信的方法——好吧,还有一种‘投入大量硬件来解决问题’的方法,这种方法虽然有效,但成本较高:)

祝你好运,如果你需要帮助来理解它,请稍后再回来提供一些数据。

答案2

只需在 apache 前面添加代理模式的 nginx,并将其设置为服务器真正的静态数据,而无需接触 apache。您将立即感受到速度的提升。

然后我会将 apache2 切换到预分叉模式,有 4-16 个子进程。

像外部连接这样的后台工作确实很麻烦,我会重写代码以使这些事情异步。

最后,主节点(即承载所有 VPS 的服务器)上的带宽可能不足。询问托管公司主节点上是否有 1Gbit 连接,如果只有 100Mbit - 您可能需要更换托管。

相关内容