【问题标题】:Performance - How To Debug Slow Ubuntu Apache/PHP/MySQL Server性能 - 如何调试缓慢的 Ubuntu Apache/PHP/MySQL 服务器
【发布时间】:2015-12-07 19:26:38
【问题描述】:

我在 Ubuntu 14.04.2 LTS(GNU/Linux 3.13.0-48-generic x86_64)上运行 Apache/PHP/MySQL 网络服务器,内存为 4gb。

在过去的几天里,随着服务器负载的增加(每秒 100-200 个请求),它似乎完全停止了提供页面。以下是一些性能统计数据:

  • 传入网络 I/O:2mb/s
  • 传出网络 I/O:11mb/s
  • 正在使用的内存 (RAM):1.1gb
  • CPU 使用率:2%

这是mpm_prefork.conf中的值:

<IfModule mpm_prefork_module>
    StartServers              5
    MinSpareServers           5
    MaxSpareServers           50
    MaxRequestWorkers         150
    MaxConnectionsPerChild    5000
</IfModule>

请求发生在通常具有一个数据库查询并返回 JSON 格式的数据的页面上。它不是图形/数据库/资源​​密集型。

重新启动网络服务器将允许它为页面提供大约 1 分钟的服务,直到负载增加并返回到冻结状态。

我可以寻找或更改什么来解决这个问题?

【问题讨论】:

    标签: apache lamp


    【解决方案1】:

    您首先必须确定问题出在 Apache 服务器上、PHP 代码上、mySQL 数据库查询上,甚至是 mySQL 数据库参数上。

    您需要针对这些组件进行分析。

    从 CPU 和内存使用情况来看,这并不是硬件大小的问题,而是与应用程序配置或组件参数化有关的问题。

    我将首先检查 SQL 请求需要多长时间。只需 google mysql database profiling tools,如果需要,您将找到提高 mySQL 性能的方法。

    【讨论】:

    • 更新较晚,但问题似乎是长时间运行的 POST 请求,这将使用大量 prefork mpm 服务器(RAM 很重)。将这个长时间运行的 API 调用切换到使用 event mpmwsgi 和简单的 Python 实现的 Apache 上运行效果最好。
    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    相关资源
    最近更新 更多