任何人都可以推荐一个配置,或者更好地为我指出这个网络设置的完整案例研究吗?
基本上,我们有一个 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 内容等)为您提供估计的服务器规格?
我怀疑在这个问题上有任何有用的案例研究,因为性能总是会根据应用程序的复杂性而有很大差异——接近拟合的唯一方法是测量和推断。
您没有提到操作系统,但我会设置一系列性能监视器来捕获线程、cpu 负载、内存统计信息、磁盘和网络数据等,同时确保您捕获正在处理的命中数。由此,您应该能够根据实际看到的负载确定所有这些组件的最小、平均和最大资源使用量——一旦您拥有这些统计数据(mhz/10k-users、mem/10k-users 等),您应该能够快速推断您需要的性能。即使在预期的峰值负载下,也要确保规划大约 20% 的额外净空。
我知道这需要大量的电子表格工作,但这是您感到自信的唯一方式——好吧,总是有“在问题上投入大量硬件”的方法,它也有效,但成本高:)
祝你好运,如果您需要帮助理解它,稍后再回来提供一些数据。
只需在apache前面添加代理模式的nginx,并将其设置为服务器真正的静态数据而不接触apache。你会立即下降速度提升。
然后我会将 apache2 切换到具有 4-16 个孩子的预分叉模式。
像外部连接这样的后台工作真的很痛苦,我会重写代码以使这些东西异步。
最后,您可能在主节点(即拥有所有 VPS 的服务器)上的带宽不足。询问托管公司他们的主节点上是否有 1Gbit 连接,如果只有 100Mbit - 您可能想更改托管。