有台生产服务器, Nginx 每天都会因为不同原因 exit 一次,虽然配了自动重启,有没办法排查是什么原因?平均一天 1820 万请求 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
drymonfidelia
V2EX    NGINX

有台生产服务器, Nginx 每天都会因为不同原因 exit 一次,虽然配了自动重启,有没办法排查是什么原因?平均一天 1820 万请求

  •  
  •   drymonfidelia 2024-08-15 13:19:10 +08:00 3776 次点击
    这是一个创建于 433 天前的主题,其中的信息可能已经有所发展或是发生改变。

    每天原因都不一样,这是今天的日志

    Aug 15 13:07:32 hostname nginx[3297853]: nginx: [emerg] host not found in upstream "backend.example.com" in /etc/nginx/sites-enabled/app1:25 Aug 15 13:07:32 hostname nginx[3297853]: nginx: configuration file /etc/nginx/nginx.conf test failed Aug 15 13:07:32 hostname systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE Aug 15 13:07:32 hostname systemd[1]: nginx.service: Failed with result 'exit-code'. Aug 15 13:07:32 hostname systemd[1]: Failed to start A high performance web server and a reverse proxy server. 

    在这几秒前崩了没写日志,这个日志是刚自动重启后又崩了的。没改配置,10 秒后第三次自动重启就成功了。backend 在别的服务器上,内网 DNS 也一直正常

    24 条回复    2024-08-16 15:02:04 +08:00
    swLoXtOtd89pGg8t
        1
    swLoXtOtd89pGg8t  
       2024-08-15 13:24:42 +08:00
    upstream 后端没起来?
    daimaosix
        2
    daimaosix  
       2024-08-15 13:24:50 +08:00
    看看是不是被 CC 了
    v1
        3
    v1  
       2024-08-15 13:24:50 +08:00
    内网 DNS 的问题,在 /etc/hosts 中配置 backend.example.com IP 试试看
    lpe234
        4
    lpe234  
       2024-08-15 13:25:57 +08:00
    感觉,`内网 DNS 也一直正常` 和 `host not found in upstream "backend.example.com" ` 相比较而言,NGINX 的日志更可信
    yannxia
        5
    yannxia  
       2024-08-15 13:27:09 +08:00
    host not found in upstream ,这个很明确吧
    billbur
        6
    billbur  
       2024-08-15 13:28:32 +08:00
    "backend.example.com"这可不像一个生产环境该出现的域名
    drymonfidelia
        7
    drymonfidelia  
    OP
       2024-08-15 13:29:18 +08:00
    @billbur 是公司的域名,我发日志的时候换成了 example
    march1993
        8
    march1993  
       2024-08-15 13:39:56 +08:00
    @drymonfidelia 挂之前的日志呢? sudo dmesg 看看有没有 OOM
    drymonfidelia
        9
    drymonfidelia  
    OP
       2024-08-15 14:15:17 +08:00
    @march1993 挂之前没有日志,就突然挂了
    wushenlun
        10
    wushenlun  
       2024-08-15 14:21:59 +08:00 via Android
    upstream 别写域名写 ip ,内网 dns 问题,最好要有 debug 日志
    yinmin
        11
    yinmin  
       2024-08-15 14:50:37 +08:00
    upstream 写 ip 。如果 upstream 是 http ,加:proxy_set_header ;如果 upstream 是 https ,加:proxy_ssl_name 、proxy_ssl_server_name 、proxy_set_header

    参考代码如下:
    location /app/ {
    proxy_pass https://192.168.1.100:443;
    proxy_ssl_name backend.example.com;
    proxy_ssl_server_name on;
    proxy_set_header Host backend.example.com;
    ...
    }
    abolast
        12
    abolast  
       2024-08-15 15:18:32 +08:00
    /etc/nginx/sites-enabled/app1 这个文件应该脱敏贴一下吧,nginx 迭代这么多年指定是不会有容易被碰到的 bug ,大概率是你配置写得有问题
    catamaran
        13
    catamaran  
       2024-08-15 16:16:45 +08:00
    有工具在改配置文件? configuration file /etc/nginx/nginx.conf test failed
    runwu2022
        14
    runwu2022  
       2024-08-15 16:36:17 +08:00
    nginx 的配置文件里面 upstream 块配置检查一下,报错明显指向 upstream 内的 server host 主机无法解析或者无法找到
    blackeeper
        15
    blackeeper  
       2024-08-15 17:56:58 +08:00
    这个问题我遇到过,排查过,就是内网 DNS 服务器的问题,写死到 hosts 文件就可以了
    drymonfidelia
        16
    drymonfidelia  
    OP
       2024-08-15 18:05:23 +08:00
    @wushenlun
    @runwu2022
    @blackeeper
    @yinmin 我记得 Nginx 是只有启动的时候会解析一次 DNS ,如果是 DNS 的问题的话应该不会中途崩掉吧?
    @abolast 里面 import 了十几个文件,不知道应该贴哪个
    hefish
        17
    hefish  
       2024-08-15 18:25:46 +08:00
    @drymonfidelia /etc/nginx/sites-enabled/app1 贴这个。
    yinmin
        18
    yinmin  
       2024-08-15 19:01:48 +08:00
    @drymonfidelia

    关于“host not found in upstream”错误,你使用 11 楼的写法,就可以避免了。

    关于不明原因的退出重启,如果你的 nginx 是基于 systemd (systemctl)部署的,你可以试试这命令查看 nginx 系统级日志:journalctl -u nginx

    如果使用 docker 部署的,可以试试:docker logs <nginx 容器名称>
    justseemore
        19
    justseemore  
       2024-08-15 19:10:47 +08:00
    ```
    upstream backend {
    server xxx.com;
    }

    localtion / {
    proxy_pass http://backend;
    ......
    }
    ```
    blackeeper
        20
    blackeeper  
       2024-08-15 22:26:27 +08:00
    @drymonfidelia 你这个 nginx 是 reload 了,然后 dns 没办法解析,ng 就退出了。
    xxxccc
        21
    xxxccc  
       2024-08-16 09:47:35 +08:00
    “/etc/nginx/sites-enabled/app1:25” 看看这个文件的第 25 行吧
    drymonfidelia
        22
    drymonfidelia  
    OP
       2024-08-16 13:49:53 +08:00
    @xxxccc 第 25 行就是 proxy_pass 没什么特别的
    drymonfidelia
        23
    drymonfidelia  
    OP
       2024-08-16 13:50:52 +08:00
    @yinmin 我贴的就是 `journalctl -u nginx` 输出的日志,之前不知道为什么没输出日志直接崩了,现在按照你说的把域名换成 IP 了,不知道今天还会不会崩
    yinmin
        24
    yinmin  
       2024-08-16 15:02:04 +08:00
    @drymonfidelia 你查一下/var/log/nginx 下面的日志文件 access.log 、error.log 在 nginx 异常重启前的日志情况

    如果日志文件很大,可以使用 awk 根据时间查看:

    awk '$4 >= "[15/Aug/2024:13:07:00" && $4 <= "[15/Aug/2024:13:07:33"' /var/log/nginx/access.log
    awk '$1 >= "2024/08/15" && $1<= "2024/08/15" && $2 >="13:07:00" && $2<="13:07:33"' /var/log/nginx/error.log

    $4 是 access.log 的日期的位置,如果你们自定义过 access.log 的格式,可以修改到匹配的位置
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     956 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 21:55 PVG 05:55 LAX 14:55 JFK 17:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86