温馨提示×

linux nginx为何访问慢

小樊
56
2026-10-07 21:22:22
栏目: 智能运维

Linux 上 Nginx 访问慢的原因很多,一般可以从网络、系统、Nginx 配置、后端、资源几个层面排查。下面按常见原因 + 排查思路给你一个清单。


一、网络层面(最常见)

1. 网络延迟 / 带宽问题

  • 服务器到客户端网络差(跨地域、丢包)
  • 带宽被打满

排查:

ping 域名或IP
mtr 域名或IP
iftop

表现: 所有请求都慢,尤其静态资源也慢。


二、DNS 解析慢

2. Nginx 配置中使用了域名(如 proxy_pass 域名)

Nginx 启动或请求时做 DNS 解析,解析慢会导致卡顿。

示例问题配置:

proxy_pass http://example.com;

解决:

  • 用 IP
  • 或配置 resolver 并加缓存
resolver 8.8.8.8 valid=10s;

三、Nginx 自身配置问题

3. worker 进程 / 连接数不足

worker_processes auto;
worker_connections 1024;

连接数太小,高并发时排队。

检查:

nginx -T | grep worker

4. 开启了大量日志

access_log on;

高并发下磁盘 IO 成为瓶颈。

优化:

access_log off;
# 或异步日志
access_log /var/log/nginx/access.log main buffer=32k flush=5s;

5. gzip 未开启或配置不合理

大文件未压缩,传输慢。

gzip on;
gzip_min_length 1k;
gzip_comp_level 5;

四、后端(PHP / Java / Node 等)慢

6. proxy_pass 后端响应慢

Nginx 本身很快,但后端慢。

排查:

curl -w "%{time_total}\n" http://后端IP:端口

现象:

  • 静态资源快
  • 动态接口慢

五、系统资源问题

7. CPU / 内存 / 磁盘 IO 高

top
htop
free -h
iostat -x 1

常见问题:

  • 磁盘 IO 100%(日志、swap)
  • 内存不足导致 swap

8. 文件描述符不够

ulimit -n

太小会导致连接失败或排队。

修改:

/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

六、SSL / HTTPS 慢

9. HTTPS 握手慢

  • 未启用 HTTP/2
  • 证书链过长
  • 未缓存 session

优化:

listen 443 ssl http2;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

七、Nginx 被攻击 / 爬虫

10. 大量无用请求

  • CC 攻击
  • 爬虫疯狂访问

排查:

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

八、快速定位思路(实用)

# 看响应时间
curl -w "time: %{time_total}\n" http://你的站点

# 看 Nginx 状态
nginx -T

# 看系统瓶颈
top
iostat -x 1

九、你可以补充这些信息,我能精确判断

  1. 是静态资源慢还是接口慢?
  2. 本地访问慢,还是外网慢?
  3. 是否用了 proxy_pass?
  4. Nginx 配置(可脱敏)
  5. top / iostat 截图或输出

如果你愿意,可以把 Nginx 配置 + 慢的现象发我,我可以直接帮你定位是哪一类问题。

0 踩