
我是开发者,目前不知道往哪方面查,请广大 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 开 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 sparkssssssss 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 PRO 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 PRO |
39 skyone123 2022-12-07 00:31:58 +08:00 @mytsing520 大佬有没有详细一点的解决思路 |
40 mytsing520 PRO 执行 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 tcp_tw_recycle 的坑踩过,网上有人给出过总结。http://blog.51cto.com/leejia/1954628 |