• 转 Nginx connect() failed (110: Connection timed out)


    https://www.jianshu.com/p/f0f05c02e93a

    jmeter 压力测试准生产环境 报错

    2020/06/03 19:54:10 [error] 23419#0: *34243300 connect() failed (110: Connection timed out) while connecting to upstream, client: 10.2.40.11, server: , request: "POST /analysis/report/noreiinfo/list HTTP/1.1", upstream: "http://192.168.70.232:18080/analysis/report/noreiinfo/list", host: "192.168.70.231:19002"

    排查思路
    看到time out,以为是服务器或者nginx性能不足
    使用ab压测工具,对相关Req进行压测,然后监控相关服务器性能和nginx性能。
    看了下监控平台,相关服务器性能都比较平稳,没有较大的波动。
    继续观察nginx的监控,nginx的active数量并没有超出设定的最大值。
    结论:排除相关服务器性能问题

    根据time out问题,查看了nginx相关源码,发现是getsockopt这个系统调用发生超时错误。可以知道高并发的时候,导致backend负载过高,不能及时处理nginx的req导致time out问题。

    解决方法

    检查了相关nginx的upstream的相关配置,发现keepalive设置的值较小,把值设定了1000的时候,继续ab压测多次观察,发现time out问题没有复现,之前每分钟复现一次time out,现在不会在复现



    反思
    keepalive是什么?
    针对第一个问题,查看了相关nginx资料,对keepalive介绍

    The connections parameter sets the maximum number of idle keepalive connections to upstream servers

    请注意空闲keepalive连接的最大数量中空闲这个关键字,很多人会产生另外一个误解:认为这个参数是设置到upstream服务器的长连接的数量,分歧在于是最大连接数还是最小连接数当使用nginx作为反向代理时。但nginx文档空否定了这个说法。

    t should be particularly noted that the keepalive directive does not limit the total number of connections to upstream servers that an nginx worker process can open.

    如何设定keepalive的值?
    nginx长连接消耗内存,设置少了,就会产生很多time-wait连接占用端口。所以这里设定值需要经过计算。根据QPS和平均响应时间大体能计算出需要的长连接的数量。比如10000 QPS和100毫秒响应时间就可以推算出需要的长连接数量大概是1000. 然后将keepalive设置为这个长连接数量的10%到50%。

    其它注意问题
    当使用nginx作为反向代理时,为了支持长连接,需要做到两点:

    从client到nginx的连接是长连接
    从nginx到server的连接是长连接
    从HTTP协议的角度看,nginx在这个过程中,对于客户端它扮演着HTTP服务器端的角色。而对于真正的服务器端(在nginx的术语中称为upstream)nginx又扮演着HTTP客户端的角色。
    ————————————————
    版权声明:本文为CSDN博主「fomin_zhu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/fomin_zhu/article/details/104921719

    https://www.jianshu.com/p/f0f05c02e93a





  • 相关阅读:
    为什么测试人员需要了解代码逻辑、表结构
    http报文常见的请求头、响应头
    测试人如何做出一份好简历
    如何制定测试计划
    写SQL的套路
    我是如何理解对公信贷业务
    db2----实操篇
    Oracle----高级操作
    常见web中间件漏洞(二)Apache漏洞
    常见web中间件漏洞(一)IIS漏洞
  • 原文地址:https://www.cnblogs.com/python-xiakaibi/p/13039758.html
Copyright © 2020-2023  润新知