You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

高流量下EC2与RDS实例资源占用低但网站仍卡顿

排查方向与解决方案

1. Nginx 连接数与进程配置瓶颈

  • 检查nginx.conf里的worker_processes(建议设为CPU核心数)和worker_connections(建议设为系统最大文件描述符的一半,用ulimit -n查看系统文件描述符上限),高流量下连接数不足会导致请求排队。
  • 用ss -tulnp | grep nginx查看连接状态,如果出现大量TIME_WAIT或SYN_RECV,调整keepalive_timeout、tcp_fin_timeout等TCP参数,比如把keepalive_timeout设为65s,tcp_fin_timeout设为30s。

2. PHP-FPM 进程与性能问题

  • 查看PHP-FPM配置(比如www.conf)的进程管理模式:如果是动态模式,检查pm.max_children、pm.start_servers等参数,高流量下pm.max_children太小会导致请求等待空闲PHP进程,即使EC2资源没跑满也会拖慢响应。
  • 开启PHP-FPM慢日志:在配置里设置slowlog = /var/log/php-fpm/slow.log和request_slowlog_timeout = 2s,定位执行超时的脚本,这类脚本在高流量下会累积拖慢整体Web响应。
  • 检查PHP的memory_limit,如果脚本内存占用接近上限,会触发频繁的内存回收或进程重启,间接导致延迟。

3. EC2 微型实例的带宽限制

  • EC2微型实例(如t2.micro/t3.micro)是突发带宽模式,高流量时段可能耗尽带宽额度。通过CloudWatch查看NetworkIn/NetworkOut指标,或用iftop实时监控带宽,若带宽跑满,即使CPU内存空闲,请求也会因数据传输延迟变慢。

4. Nginx 与 PHP-FPM 的通信优化

  • 优先用Unix套接字代替TCP连接PHP-FPM,Unix套接字性能更高,注意设置正确的权限(比如listen.mode = 0660);如果用TCP,检查本地回环的延迟(用ping 127.0.0.1或mtr 127.0.0.1),高流量下微小延迟也会被放大。
  • 调整Nginx的FastCGI超时参数:fastcgi_connect_timeout、fastcgi_send_timeout、fastcgi_read_timeout,避免因超时中断请求,同时防止慢请求长期占用连接资源。

5. 缓存机制缺失

  • 开启Nginx静态资源缓存:对CSS/JS/图片等静态文件设置expires头部,让浏览器缓存,减少Nginx和PHP的重复处理。
  • 启用PHP OPcache:在php.ini里开启opcache.enable=1,缓存编译后的PHP脚本,避免重复解析编译,提升PHP执行速度。
  • 检查应用层是否用了缓存(如Redis/Memcached),高流量下直接命中缓存能大幅减少PHP和数据库的请求量。

6. 系统内核参数调整

  • 修改TCP相关内核参数,缓解高流量下的连接压力:
    • net.ipv4.tcp_tw_reuse=1:复用TIME_WAIT状态的连接
    • net.core.somaxconn=1024:增大监听队列上限
    • net.ipv4.tcp_max_tw_buckets=5000:减少TIME_WAIT队列长度
      修改后执行sysctl -p生效。

内容的提问来源于stack exchange,提问作者wjNoh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 10:52:08