Nginx APP接口连接超时

内网有一台APP服务器,接口是通过Nginx发布的。手机通过无线登陆APP,有时候提示连接超时。

无线路由器和APP服务器,是通过内网交换机连接的。应该不会超时啊,可能是路由器问题。

然后换了好几个路由器,小米mini,华硕RT-AC87U,TP-LINK WVR1750G

咨询厂商,测试了一下,当时超时的时候,访问百度视频什么的是正常的。路由器没有问题,可能是服务器问题。因为服务器是pc机主机,配置比较差,后来换成DELL R620,还是同样的问题。

因为公司周围有30几个无线,2.4G传输速度是450M,可能是无线干扰问题。

最后买了一个Nighthawk X6 R8000,2.4G传输速度是600M,发现还是有超时。

网上搜索资料nginx超时问题,优化了一些参数,发现还是有超时。

手机安装(Ping & DNS)软件,版本是2.3,用TCP Ping持续测试dts.xx.com,

大约1~2分钟,提示connection timed out,超时会持续一分钟。出现超时的时候,手机登陆APP,就会提示连接超时。

然后超时的时候,在服务器抓包

[[email protected] ~]#tcpdump -i eth0 -s0 -w a.cap

发现无线路由器向服务器发送了SYN请求包,但是没有得到服务器回应。

出现TCP Retransmission(TCP 包重传)

因为服务器开启了tcp_tw_recycle(为了支持高并发)

tcp请求回收,如果开了这个,那在默认60s内同一个ip包过来是会被回收的

网络过来的数据包的时间肯定是小于这个请求时间的,那么服务器就会认为他是无效的连接,就会拒绝连接,所以才会出现TCP包重传。

所以才会出现上面的现象,超时持续一分钟。

后来我把tcp_tw_recycle关了

vi /etc/sysctl.conf

设置为0,表示关闭

net.ipv4.tcp_tw_reuse = 0

net.ipv4.tcp_tw_recycle = 0

加载配置

[[email protected] ~]#sysctl -p

最后再次用TCP Ping测试,测试20分钟,没有出现连接超时。

APP刷新数据,也没有出现超时。

哎,解决这个问题,之前都是靠瞎猜的。分析问题没有层层刨析,搞了这么长时间,才搞定。

路由器只提供数据转发功能,只要转发了,它的任务就完成了。

应该是服务器问题,然后抓包,为什么服务器没有回应?

为什么出现TCP Retransmission(TCP 包重传)?

这样问题就越来越接近真相了,就好解决了,就好像福尔摩斯一样。

后来发现系统日志出现

Jun 19 11:13:45 127.0.0.1TCP: time wait bucket table overflow

那就只能增加net.ipv4.tcp_max_tw_buckets的值

net.ipv4.tcp_max_tw_buckets = 100000

加载配置

[[email protected] ~]#sysctl -p

再次观察,就没有了。

时间: 2024-08-26 08:38:38

Nginx APP接口连接超时的相关文章

nginx报错 连接超时问题

问题:上传excel文件解析数据并加载数据到MySql数据库表中的时候,报错(该Excel文件有13105列)最终返回给浏览器 POST http://.......404 not found nginx 解决: 原因: 后台程序处理的时间过长,但是访问后端接口走的是nginx代理 nginx使用proxy模块时,默认的读取超时时间是 60s 后来设置如下参数解决 proxy_connect_timeout 后端服务器连接的超时时间_发起握手等候响应超时时间 proxy_read_timeout

Nginx优化——连接超时,进程管理,压缩,防盗链(二)

Nginx实现连接超时 在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间 使用fiddler工具查看connection参数 超时参数 Keepalive_timeout设置连接保持超时时间,一般可只设置该参数,默认为65秒,可根据网站的情况设置,或者关闭,可在http段,server段,或者location段设置Client_header_timeout指定等待客户端发送请求头的超时时间Client_body_timeout设置请求体

配置Nginx实现连接超时及修改进程数!

在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可以设置相应的连接超时参数,实现控制连接访问时间.keepalived_timeout :设置连接保持超时时间,一般可只设置该参数,默认为 75 秒,可根据网站的情况设置,或者关闭,可在 http 段.server 段.或者 location 段设置.client_header_timeout :指定等待客户端发送请求头的超时时间.client_body_timeout :设置请求体读超时时间.若出现超时,会返回 408 报错 [[e

Nginx之连接超时,进程管理优化(负载均衡)

Nginx之连接超时 在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费可设置相应的连接超时参数,实现控制连接访问时间 配置nginx [[email protected] ~]# yum install pcre-devel zlib-devel gcc gcc-c++ -y ##安装环境包 [[email protected] ~]# useradd -M -s /sbin/nologin nginx ##创建程序性用户 [[email protected] ~]# mkdir /

Nginx服务优化(五)设置连接超时

配置Nginx实现连接超时 在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间. 1.用"curl -I"命令查看connection参数 [[email protected] nginx]# curl -I 192.168.52.131 HTTP/1.1 200 OK Server: nginx/1.1.1 Date: Wed, 13 Nov 2019 11:06:54 GMT Content-Type: text/html

Nginx服务优化之隐藏版本号、修改用户与组、配置页面缓存与时间、日志分割以及设置连接超时

Nginx服务优化之隐藏版本号.修改用户与组.配置页面缓存与时间.日志分割以及设置连接超时 前言 ? 在企业信息化应用环境中,服务器的安全性和响应速度需要根据实际情况进行相应参数配置,以达到最优的用户体验. ? 默认的nginx安装参数只能提供最基本的服务,还需要调整如网页缓存时间.连接超时.网页压缩等相应参数,才能发挥出服务器的最大作用. 一.隐藏版本号 ? 我们为什么要隐藏版本号? ? 我们一定要有一个意识:对于软件或者说服务,其安全性必然不可能是无懈可击的,总会或多或少地存在各种bug或者

android产品研发(十二)-->App长连接实现

转载请标明出处:一片枫叶的专栏 上一篇文章中我们讲解了android应用内页面跳转协议-scheme协议,通过该协议我们可以跳转至指定的Activity,并在该Activity中解析scheme用于跳转到指定的页面,我们可以利用scheme协议实现应用内页面跳转.H5页面与Native页面相互跳转.通知栏消息跳转相应页面等,具体可参考:android产品研发(十一)–>使用scheme实现页面跳转. 而本文中我们将讲解一下App的长连接实现.一般而言长连接已经是App的标配了,推送功能的实现基础

HttpClient 4.5版本设置连接超时时间

HttpClient升级到4.5版本后,API有很多变化,HttpClient 4之后,API一直没有太稳定,我感觉4.5版本抽象后,很多API应该快稳定了. 使用HttpClient,一般都需要设置连接超时时间和获取数据超时时间.这两个参数很重要,目的是为了防止访问其他http时,由于超时导致自己的应用受影响. 4.5版本中,这两个参数的设置都抽象到了RequestConfig中,由相应的Builder构建,具体的例子如下: CloseableHttpClient httpclient = H

Qt之处理QNetworkAccessManager网络连接超时

简述 在网络操作中,经常会由于各种原因引起网络连接超时,究竟何为网络连接超时? 网络连接超时:在程序默认的等待时间内没有得到服务器的响应 简述 超时原因 Qt 中的网络连接超时 超时原因 引起网络连接超时的原因很多,下面,列举一些常见的原因: 网络断开,不过经常显示无法连接 网络阻塞,导致你不能在程序默认等待时间内得到回复数据包 网络不稳定,网络无法完整传送服务器信息 系统问题,系统资源过低,无法为程序提供足够的资源处理服务器信息 设备不稳定,如网线松动.接口没插好等等 网络注册时系统繁忙,无法