优化在VPS上运行的apache / php / mysql以获得高负载

Modified on: Mon, 11 Nov 2019 12:40:02 +0800

关于在具有512m RAM的VPS上优化apache / mysql服务器的问题。在正常负载下,一切运行速度快,没​​有连接延迟。然而,当我们获得繁忙的交通日(50k +访问)时,网站会爬行,并且需要30秒+才能从apache获取内容。

该网站正在Expression Engine(CMS)上运行(在PHP中),我已经按照他们的重载优化指南进行了操作。我已经谷歌搜索并在那里关注了一些运气好的apache,将它带到现在的位置,但我需要获得不断的响应时间。

我认为这与“优化低内存”问题不同,因为我有足够的RAM(我正在尝试做的事情),我只需要让服务器在重负载下不会窒息。 / p>

任何重组?

作者:Parrots

最佳答案

对于PHP,有两个重要的事情会增加容量:

  1. 高级PHP缓存(APC),如上所述。这就是我们在雅虎使用的!还有其他类似的项目,但这个项目是Rasmus的宝贝。
  2. FastCGI而不是mod_php。关于这个问题存在争议,因为mod_php通常是最快的。但是,我认为你有一个Apache服务器提供动态PHP内容和静态资产(JS,CSS,flash,图像,PDF等)。对这些静态资产的请求不需要消耗尽可能多的内存,但因为PHP是每个Apache线程中的模块。
  3. 醇>

    对于Apache:

    1. 使用工作人员MPM
    2. 启用KeepAlive
    3. 醇>

      您也可以考虑从Apache切换到Lighttpd,或Nginx。我爱Apache。我使用了许多高级功能中的傻瓜。我接受它的开销,因为我需要它提供的东西。对于常见的LAMP堆栈,它不仅仅是需要而且浪费资源。

      对于MySQL:

      1. 在分析和更正查询时,您的优化工作将获得10倍的回报,而不是调整my.cnf值。我并不是说让你的缓存,连接等正确是不重要的......但对大多数人来说这只是问题的9%。
      2. 在质量检查期间,请启用常规查询日志< / a>在您的staging / dev mysqld上捕获所有发送的查询。 (不要在生产mysql服务器上执行此操作!)
      3. 使用EXPLAIN分析查询。特别是如果您正在使用带有ORM的框架(抽象出数据库并使您无法编写自己的SQL),则需要清除无关的JOIN,没有WHERE子句的SELECT,导致“使用filesort”的ORDER BY,以及查询不使用索引。
      4. 如果您使用的是MySQL 5.1 利用查询分析器
      5. 醇>

        其他值得考虑的工具是mk-visual-explain

        我引用了10篇很棒的参考资料。这些东西应该让你哼唱。请告诉我们结果如何。


相关问答

添加新评论