nginx线上排查错误:open() “/usr/share/nginx/html/xxx failed以及no live upstreams while connecting to upstream

因为做了一个秒杀的项目,所以需要使用jmeter压测,请求是50000个,如果是单击压测的话会出现很多error,原因就是单机的负载是有限的。所以使用nginx来做负载均衡,将请求转发到多个服务上。
但是压测的时候发现仍然出现很多错误,这就很不正常了,进入nginx目录下的logs目录,查出error.log文件,其中出现了大量如下从错误日志:
一、

2021/04/02 09:19:25 [error] 22#22: *249 open() "/usr/share/nginx/html/seckill/do_seckill" failed (2: No such file or directory), client: 192.168.63.15, server: localhost, request: "POST /seckill/do_seckill HTTP/1.1", host: "192.168.63.128"

在linux中一切皆文件,上面的意思就是打开文件失败,没有这个文件,那么就在配置文件中(events块)将连接数调大:

worker_connections 10240;#每一个进程打开的最大连接数,包含了nginx与客户端和nginx与upstream之间的连接

具体多大看具体情况。并且添加:

worker_rlimit_nofile 20480; #每个进程打开的最大的文件数

这个配置受限于操作系统/etc/security/limits.conf,所以还要将这个文件添加如下配置:

hard nofile 204800
soft nofile 204800
soft core unlimited
soft stack 204800

二、再进行压测,jmeter没有出现error,但是在nginx日志中又出现下面日志:

2021/04/07 02:41:02 [error] 25#25: *45386 no live upstreams while connecting to upstream, client: 192.168.63.15, server: 192.168.63.128, request: "POST /seckill/do_seckill HTTP/1.1", upstream: "http://myserver/seckill/do_seckill", host: "192.168.63.128"

这个就和设置的负载均衡有关了,因为我在配置文件中是这样配置的:

    upstream myserver {
        server 192.168.63.120:8080 weight=2 max_fails=3 fail_timeout=50s;
        server 192.168.63.125:8080 weight=2 max_fails=3 fail_timeout=50s;
        server 192.168.63.128:8080 weight=1 max_fails=3 fail_timeout=50s;
        keepalive 200;#nginx与服务之间的最大空闲长连接
    }

50s内失败重试次数为3,超过3次后就将当前服务剔除,50s后再进行重试。
这样就会导致一台服务down掉的时候,流量全部打到另外一台服务器。如果另外一个也down掉,那么就会打印日志。将重试次数调大,no live upstreams”出现的概率变少了很多,但却没有完全消失。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中提到,nginxhtml目录位置在/usr/share/nginx/html。这是DockerHub网站中nginx页面的信息。接下来引用提到,在进入服务器后,使用命令"./nginx -s reload"重新读取配置文件时,出现了错误信息"nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)"。在logs文件夹中发现确实没有nginx。最后引用中给出了一个创建容器并挂载数据卷到容器内HTML目录的命令"docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx"。 综上所述,/usr/share/nginx/htmlnginxhtml目录位置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Docker的基本使用](https://blog.csdn.net/m0_37922192/article/details/121414001)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Nginx启动常见错误及解决方法](https://download.csdn.net/download/weixin_38722164/14088503)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值