我想分享我的情况,因为可能对其他人有帮助,我需要一些建议。
我管理一个带有一些 Web 服务器和高流量的 VPS。
系统规格是 x2 Xeon E2620,具有 2 个内核、18Gb 内存和 800Gb 硬盘。
我获得完全访问权限的第一步是检查服务器配置。
该系统拥有:
- 阿帕奇2
- php-cgi 5.3.3 (prefork)
- MySQL 5.1
- Prestashop (1.4 - 1.6)
- 装甲运兵车
乍一看(后来证实),服务器设置和系统架构并不是最优的。
服务器几乎一直都很忙,网络访问非常慢。
所以,我认为我有几个选择来规避这种情况,因为流量只会增长。
- 优化当前设置可能只是一个临时解决方案。
这意味着调整 Apache、preforks、MySQL、卸载不需要的软件……等等。
或者
- 改变系统架构的可扩展性思维。(更好的临时解决方案,然后再投资更多 $$ 横向扩展)
我的想法,我的疑问是你对规模有什么建议。
nginx、php-fpm、varnish、APC 或 nginx 与 Apache 一起工作。
我认为首先更好,因为它们仍然在同一台机器上运行。
谢谢。
所以这是一个有点宽泛的问题,所以这将是一个宽泛的答案。但是,是的,您可以更轻松地扩展 nginx。我建议您将 Apache 和
mod_php
nginx替换为php-fpm
. 我还将升级到 PHP 5.6.x 并开始使用其中包含的 Zend Opcache 模块来代替 APC。如果您还将 APC 用于“用户缓存”而不仅仅是操作码缓存,则可以使用“APCu”模块替换该功能。Varnish 确实有助于提高服务静态资产的性能,但我会从唾手可得的果实开始。当您使用
php-fpm
时,您的 PHP 工作者可以独立于传入的 HTTP 连接进行扩展,这可以在内存使用方面为您带来优势。此外,网络服务器可以使用线程而不是进程来处理请求,因为 PHP 在网络服务器的内存空间之外运行。使用
mod_php
您当前使用的方法,接受、等待和提供请求的同一进程也将启动 PHP 解释器并将其保存在内存中,直到请求得到完全处理。我认为你在正确的轨道上;跟着你的直觉走,以上是我的做法。总会有更多的东西需要调整和优化,但是如果不了解更多关于系统如何使用和服务的细节,很难更深入。