我想分享我的情况,因为也许对别人有帮助,而且我需要一些建议。
我管理一个带有一些网络服务器和高流量的 VPS。
系统规格为 x2 Xeon E2620,配备 2 个核心、18Gb 内存和 800Gb HDD。
当我获得完全访问权限时,第一步是检查服务器配置。
该系统持有:
- Apache2
- php-cgi 5.3.3 (预分叉)
- MySQL 5.1
- Prestashop(1.4 - 1.6)
- 亚太经合组织
乍一看(后来证实),服务器设置和系统架构不是最佳的。
服务器几乎一直很繁忙,网络访问非常慢。
因此,我认为我有几个方法可以避免这种情况,因为流量只会增长。
- 优化当前设置可能只是一个临时的解决方案。
这意味着调整 Apache、preforks、MySQL、卸载不需要的软件……等等。
或者
- 改变系统架构的可扩展性思维。(在投入更多资金进行水平扩展之前,先找到更好的临时解决方案)
我的想法和疑问是您推荐什么样的规模。
nginx、php-fpm、varnish、APC 或 nginx 与 Apache 一起工作。
我认为第一种更好,因为它们仍然在同一台机器上运行。
谢谢。
答案1
所以这个问题有点宽泛,所以这将是一个宽泛的答案。但是,是的,您将更容易扩展 nginx。我建议您用 nginx 和 替换 Apache 和mod_php
。php-fpm
我还将升级到 PHP 5.6.x,并开始使用随附的 Zend Opcache 模块代替 APC。如果您还将 APC 用于“用户缓存”而不仅仅是操作码缓存,则可以用“APCu”模块替换该功能。Varnish 确实有助于提高提供静态资产的性能,但我会从容易实现的部分开始。
当您使用 时php-fpm
,您的 PHP 工作器可以独立于传入的 HTTP 连接进行扩展,这可以让您在内存使用方面获得优势。此外,由于 PHP 在 Web 服务器的内存空间之外运行,因此 Web 服务器可以使用线程而不是进程来处理请求。
使用您当前正在使用的方法mod_php
,接受、等待和服务请求的相同过程也将启动 PHP 解释器并将其保存在内存中,直到完全满足请求为止。
我认为你走在正确的道路上;听从你的直觉,以上就是我的做法。总会有更多的事情需要调整和优化,但如果不了解系统的具体使用方式和它所服务的内容,就很难走得更远。