网站首页 > 精选教程 正文
问题描述:
近期平台对外开放了数据查询接口,在数据量特别大时,返回结果时间可能会超过3秒,接口开放后,系统本身调用没有问题,其他第三方平台接入时,总会报链接超时问题;
问题原因:
查看tomcat日志无任何错误,一开始以为是tomcat接收参数最大限制问题,对tomcat做了一次整体优化,修改连接数、修改post限制,问题仍存在;那问题可能出在nginx转发上面;
经排查,而在nginx中出现了499的错误,官方解释是nginx定义的一个状态码,用于表示这样的错误:
错误原因
1、nignx做proxy时,频繁的post,nginx认为不安全,记录499
可以在nignx的proxy配置中开启 proxy_ignore_client_abort on 功能是:确定在客户端关闭连接时是否应该关闭与代理服务器的连接,而不再等待响应
如果使用了proxy_ignore_client_abort on。 那么客户端主动断掉连接之后,Nginx 会等待后端服务器处理完(或者超时),然后记录“后端的返回信息”到日志。因此,如果后端返回200,就记录200 ;如果后端返回5XX ,那么就记录 5XX。
如果超时(默认60s,可以用 proxy_read_timeout 和proxy_send_timeout设置),Nginx 会主动断开连接,记录504
2、服务器返回http头之前,客户端就提前关闭了http连接,客户端请求服务端时,服务端响应慢,客户端觉得时间长主动关闭了连接, 比如浏览器(客户端)请求一个接口觉得很慢,就关掉了浏览器、 nginx做proxy的时候,后端执行时间长(如执行sql慢,调用其它接口慢)等,应该从后端去优化下,
通用解决方案:
1.499网上的解释是客户端主动关闭了连接
在一个项目上传文件的时候,nginx log报499,关闭iptables就可以
2.从排除故障的方法来说
nginx->tomcat,问题就出在这两个上面
看nginx的请求是否在日志里面能发现,这次是post请求是499
看tomcat的日志,是否有异常
3.从网络层,应用层,从下至上排除
iptables和网络方面的问题
4.使用工具
tcpdump
tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854 -w /tmp/post.log
tcpdump -i eth0 '((port 8000) and (tcp[(tcp[12]>>2):4]=0x47455420))' -nnAl -w /tmp/GET.log
0x4745 是post请求
5、设置客户端连接超时时间
发现第三方的请求是用的httpclient代理模式,而httpclient的链接超时时间设置的是2秒,在服务端还未返回数据是,就关闭了链接,调大httpclient的链接超时时间即可;
猜你喜欢
- 2024-10-03 提示“504连接源站超时”是怎么回事
- 2024-10-03 蓝易云 - 如何优化Nginx服务进程详细。
- 2024-10-03 微服务架构统一异常监控Sentry 微服务统一异常处理
- 2024-10-03 详解Nginx的rewrite应用 nginx rewrite作用
- 2024-10-03 学习Vulhub的Nginx 解析漏洞 lua nginx
- 2024-10-03 nginx httpstatus 408 研究 nginx配置负载均衡
- 2024-10-03 学习Vulhub的Nginx 文件名逻辑漏洞(CVE-2013-4547)
- 2024-10-03 网络抓包定位504 gateway timeout问题
- 2024-10-03 nginx 500 502 504 区别 nginx的502
- 2024-10-03 网站报错504怎么办? 网站打不开显示504啥意思?
你 发表评论:
欢迎- 最近发表
-
- 我的世界光影MOD下载(我的世界光影mod下载安装)
- 我的世界1.7/1.8VoxelMap小地图MOD下载
- 我的世界1.7.10多世界 整合包(我的世界1.7.10forge整合包)
- 我的世界1.8最好用的修改器下载(我的世界1.8最好用的修改器下载安装)
- 我的世界更多弯曲动作MOD下载(我的世界更多弯曲动作mod下载手机版)
- 我的世界龙珠MOD下载(我的世界龙珠模组整合包下载)
- 我的世界1.7.10以太2 下载(我的世界以太2mod1.12.2)
- 我的世界虚拟人生MOD下载分享(我的世界虚拟人生下载安装)
- 我的世界无正版账号的简单联机方法(非网易版,仅适用于局域网)
- “我的语言极限,即是我的世界的极限。” ——《On Java》书籍推荐
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)