Linux 上 Nginx 访问慢的原因很多,一般可以从网络、系统、Nginx 配置、后端、资源几个层面排查。下面按常见原因 + 排查思路给你一个清单。
排查:
ping 域名或IP
mtr 域名或IP
iftop
表现: 所有请求都慢,尤其静态资源也慢。
Nginx 启动或请求时做 DNS 解析,解析慢会导致卡顿。
示例问题配置:
proxy_pass http://example.com;
解决:
resolver 并加缓存resolver 8.8.8.8 valid=10s;
worker_processes auto;
worker_connections 1024;
连接数太小,高并发时排队。
检查:
nginx -T | grep worker
access_log on;
高并发下磁盘 IO 成为瓶颈。
优化:
access_log off;
# 或异步日志
access_log /var/log/nginx/access.log main buffer=32k flush=5s;
大文件未压缩,传输慢。
gzip on;
gzip_min_length 1k;
gzip_comp_level 5;
Nginx 本身很快,但后端慢。
排查:
curl -w "%{time_total}\n" http://后端IP:端口
现象:
top
htop
free -h
iostat -x 1
常见问题:
ulimit -n
太小会导致连接失败或排队。
修改:
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
优化:
listen 443 ssl http2;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
排查:
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
proxy_pass?top / iostat 截图或输出如果你愿意,可以把 Nginx 配置 + 慢的现象发我,我可以直接帮你定位是哪一类问题。