优化 Apache 以适应高并发请求

优化 Apache 以适应高并发请求

我正在运行一个 Apache2 Ubuntu 服务器,它负责处理来自移动应用程序的 API 请求。

最近遇到一个瓶颈,请求量越大(并发用户越多),请求响应就越慢。之前~1 或 2几秒钟就可以了,但是一旦并发用户增加(在某些高峰时段),它可能会延迟10秒或更长时间,即使服务器负载,中央处理器记忆仍然很低。

我的目标是提高 Apache2 和 Ubuntu Server 的服务能力尽可能多的并发用户以最低的响应时间。内存和 CPU 不是主要考虑因素因为 VPS 规格达到上限后可以扩展。我该怎么做?

我目前所做的:

  1. 配置 ulimit/etc/security/limits.conf并添加以下内容:

    • 软文件 40000
    • 硬盘 nofile 40000
    • 软nproc 40000
  2. 将以下行添加到/etc/pam.d/common-session

    会话需要 pam_limits.so

  3. 配置 Apache2/etc/apache2/mods-enabled/mpm_prefork.conf

    <IfModule mpm_prefork_module>
            启动服务器 20
            最小备用服务器 25
            最大备用服务器数 100
            最大请求工作者 150
            每个子节点的最大连接数 0

            最大客户数 8192
            每个孩子的最大请求数 0
            服务器限制 8192
     </IfModule>
  1. 将以下行添加到/etc/sysctl.conf

    fs.文件最大值 = 2097152

响应时间似乎有所改善(尽管有些请求仍然延迟),但并不令人满意,因为它仍然比非高峰时段慢得多。

答案1

停止使用 prefork 模块并开始在 apache 中使用 event mpm。Prefork 是旧方法,今后您需要安装 event mpm。

答案2

这可能不是您的网络服务器,而是链中的其他服务器。

  1. DNS。在某些情况下,如果问题显然不是数据库,则很有可能是 DNS。执行 nslookup 并查看命令需要多长时间。然后查找几个域。
  2. 这是网络,执行跟踪路由,看看网络上的任何跳转是否比平时花费更长的时间。
  3. Netstat -i 5查看网络接口是否存在任何错误。
  4. 确保KeepAlive已打开。特别是如果你的网站有 ajax 负载过大,你会提高性能。

我不认为更换 MPM 会对你有帮助。你的情况不是资源限制。而是其他原因。

相关内容