我是开发者,目前不知道往哪方面查,请广大 v 友提供思路
不定期出现访问未响应情况,持续时间几分钟,期间 nginx 映射所有访问不了,并服务器也 ssh 不上,日志没出现 Too many open files 等任何报错
服务器:阿里 ecs.g7.large ,2 核 8G 内存
nginx 自己编译
nginx version: nginx/1.22.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/home/nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_sub_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-pcre --with-pcre-jit --with-debug
部署服务:很多静态文件,但不是 js 、css 这些
访问量:不太清楚怎么算
#user nobody;
worker_processes 2;
worker_cpu_affinity auto;
pid logs/nginx.pid;
error_log /home/nginx/logs/error.log notice;
worker_rlimit_nofile 8192;
events {
worker_connections 4096;
multi_accept on;
accept_mutex on;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
charset utf-8;
#access_log logs/access.log main;
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
server_names_hash_bucket_size 128;
server_names_hash_max_size 512;
keepalive_timeout 65;
send_timeout 30s;
client_header_timeout 15;
client_body_timeout 15;
reset_timedout_connection on;
proxy_connect_timeout 5s;
proxy_send_timeout 120s;
proxy_read_timeout 120s;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 4;
gzip_types text/css text/xml application/javascript;
gzip_vary on;
gzip_disable "MSIE [1-6].";
include /home/nginx/conf/conf.d/*.conf;
}
1
chendy 2022-12-05 16:19:36 +08:00
目测网络问题,可能需要检查:
1. 服务器的带宽占用情况 2. 客户端到服务器之间的网络连通情况 |
2
wanacry 2022-12-05 16:25:10 +08:00
首先,建议您查看 nginx 日志,看是否出现了任何异常信息。您可以使用 tail -f 命令实时监控日志文件,如果发现了任何异常信息,可以尝试分析并进行相应的调整。
此外,您可以使用 netstat 命令查看当前服务器上的 TCP 连接情况,看是否出现了连接数过多的情况。如果发现连接数过多,可以考虑增加 worker_connections 参数的值,以便支持更多的连接。 同时,您可以使用 ps 命令查看 nginx 进程的 CPU 和内存使用情况,如果发现 CPU 或内存使用率过高,可以尝试增加服务器的 CPU 核心数或内存容量,或者调整 nginx 配置参数,以提高服务器的处理能力。 如果您仍然无法找到原因,建议您启用 nginx 的 debug 模式,该模式可以输出更详细的日志信息,方便您定位问题。 总之,排查 nginx 未响应情况的方法有很多,可以根据实际情况逐一排查,以便找到问题的根本原因。 |
3
zhangxudong 2022-12-05 16:28:37 +08:00
大概率带宽跑满了
|
4
vampuke 2022-12-05 16:36:06 +08:00
ssh 不上的话 大概率不是 nginx 的问题了
|
5
BadAngel 2022-12-05 16:41:24 +08:00 via Android
最好能提供网络结构。现象看是网络访问超时,问题出现时分为外部网络访问和本地网络访问,描述现象没有这个区别。
如果只是外部无法访问 Nginx ,那么问题可能出现在 Nginx 到出口,建议排查 Nginx 到出口的网络质量和出口网关。 如果内部也无法访问 Nginx 和后端服务器,那么问题可能出现在内部网络环境,建议排本地网络环境,包括但不限于网关进出口路由,同网段内设备是否有 IP 冲突,又或者广播风暴等情况 |
6
zonas OP @chendy
@zhangxudong 网络是 25Mbps ,我看监控曲线,宽带使用率最高才 50 ,基本上 20%左右 @BadAngel 这个问题我没仔细查过,现在情况 nginx 访问不了,ssh 也连不上,当我 ssh 连上,nginx 也好了 内部网络应该没问题,用阿里一台服务器,没什么内网结构 |
8
liuzhedash 2022-12-05 16:55:37 +08:00
@zonas
ssh 连上,nginx 就好了,这个可以基本确定是网络的问题,琢磨 nginx 配置啥的没啥道理。 服务器是在国外嘛?如果是的话就比较好解释了。 如果是国内的,其实应该 traceroute 看看,并且找阿里云发个工单协助排查,总之和服务器自身的软件没啥关联。 |
9
killva4624 2022-12-05 16:59:56 +08:00
“nginx 访问不了,ssh 也连不上,当我 ssh 连上,nginx 也好了”
--- 大概率是网络问题了,可以用 tcping 持续测一段时间看看。 |
10
zzzmh 2022-12-05 17:03:08 +08:00
25Mbps ? 是大陆地区的吗? 如果这么大带宽都会有网络连不上,首先考虑找阿里云发工单问问有没有可能是他提供的网络有问题。BUT 前提得是大陆地区,非大陆地区的网络不通畅是日常
|
11
vonsy 2022-12-05 17:12:39 +08:00
https://mmonit.com/monit/
装个监控, 持续监视 CPU,内存,IO,网络, Nginx 端口, 设置个邮件通知. |
12
zonas OP @liuzhedash
@killva4624 @zzzmh 国内,杭州区域,对是这个单位 25Mbps ,阿里配置就是这个单位 这个问题是要升级网络相关配置吗,比如吞吐量还是? 工单不知道问题要怎么描述,说我具体几分几秒断? |
14
wlsnx 2022-12-05 18:02:10 +08:00
不像是 nginx 的问题,有可能是网络的问题,也有可能是某个进程占用的过多的 cpu 或内存,内存用光机器是会不响应的,oom ill 之后又会像平常一样。看一下 dmesg 有没有 oom 。两核心 load1.94 ,不考虑 IO ,cpu 占用有点高,检查一下有没有可疑进程,检查一下 crontab 。最好装个监控。
|
15
defunct9 2022-12-05 18:16:13 +08:00 1
开 ssh ,让我上去看看
|
16
dorothyREN 2022-12-05 19:57:26 +08:00
2c 的机器 cpu 负载 1.94 属于满载了。
|
17
zonas OP |
19
Ggmusic 2022-12-05 22:46:59 +08:00 via Android
只部署 Nginx 的话,available 才 2G 不太可能啊.
|
20
xiaobai1213 2022-12-05 23:11:15 +08:00
本地搭个监控吧 感觉像是网络问题 或者内存怼满了
|
21
lsp7572 2022-12-06 00:27:18 +08:00
ssh 都上不去的话,不要排查 nginx ,而是排查机器负载情况
|
23
momocha 2022-12-06 08:17:00 +08:00 via iPhone
升级带宽,记得好像有按流量但支持最大峰值的选项,固定峰值的很贵
|
24
zonas OP @Ggmusic 还部署业务 docker ,netdata 用于监控,还有 goaccess 分析 nginx 访问情况
@xiaobai1213 @lsp7572 目前分析是阿里自带监控和 netdata @momocha 我就是按流量算,25Mbps ,但看峰值,感觉不是带宽不够 |
25
Alliot 2022-12-06 10:11:59 +08:00
首先单纯的 Nginx 配置来看,没啥问题。load 也在正常范围之内。所以定位最大的可能是网络问题, 在 server 端创建一个 TCPing 长 ping 一下并看看日志?
|
26
coolloves 2022-12-06 10:37:25 +08:00
大概率是带宽问题吧,因为你 nginx 提供静态文件,可以看下 nginx 的 access 日志,是否有大量的访问导致瞬间满了
|
27
raptor 2022-12-06 10:42:15 +08:00
SSH 不上应该不是 NGINX 问题,要么是网络问题,要么是系统问题。分析一下卡死时段的监控数据看看。
|
28
BadAngel 2022-12-06 12:21:20 +08:00 via Android
基于较大可能性是网络问题,分别从服务端 ping 网关和 DNS ,如果是多网卡,就都 ping 一下,且输出带时间日志。
从日志看 网关不通或者两个都不通,查内部 DNS 不通,查外部 |
29
zonas OP |
30
proxychains 2022-12-06 14:10:10 +08:00
@wanacry 这是 ChatGPT 吧
|
31
mytsing520 2022-12-06 17:23:51 +08:00
cat /var/log/messages
看看有没有什么东西 |
32
Ggmusic 2022-12-06 19:47:43 +08:00 via Android
实例上部署了大量的应用,这就很难说是网络或者 Nginx 的问题了。有可能是某(几)个应用的文件句柄过多,导致系统级的 openfiles 超了,又或者某个应用线程数过高,导致系统无法 fork 新线程。
|
33
zonas OP |
34
skyone123 2022-12-06 22:33:02 +08:00
@zonas 嗯,我之前也遇到这种 ssh 和服务同时无法访问,应该是公司网络的问题,web 上会显示连接重置,你可以同时试下,当公司网络无法访问服务时候,远程家里电脑访问是否可以,我之前发现这个问题,
|
35
skyone123 2022-12-06 22:38:22 +08:00
有可能是你们公司存在一种检测,当出现大量连接时候,网关路由会中断这个 连接一段时候,可能几分钟后就恢复了
|
36
zonas OP @skyone123 根据阿里工单建议,我 mtr 公司和服务器两个方向,他说在移动运营商发生丢包中断。那我要不要找运营商问问?
|
37
mytsing520 2022-12-06 23:43:39 +08:00 1
|
39
skyone123 2022-12-07 00:31:58 +08:00
@mytsing520 大佬有没有详细一点的解决思路
|
40
mytsing520 2022-12-07 11:31:08 +08:00 1
执行 sysctl -a | grep tcp_tw_recycle
如果 net.ipv4.tcp_tw_recycle = 1 ,那么 vi /etc/sysctl.conf ,找到 net.ipv4.tcp_tw_recycle ,将值修改为 0 ,保存退出 再执行 sysctl -p |
41
zonas OP @mytsing520 这个之前的确设 1 ,我改成 0 看看有没有好转
|
42
Ggmusic 2022-12-07 22:53:57 +08:00 via iPhone 1
tcp_tw_recycle 的坑踩过,网上有人给出过总结。http://blog.51cto.com/leejia/1954628
|