总结
这两天物资网网址崩溃问题,暂时解决,效果待观察,临时调整oracle INBOUND_CONNECT_TIMEOUT参数(有安全风险)
日志记录问题
--从nginx,oracle日志看出,连接超时导致崩溃,tomcat-->nginx-->oracle 之间的访问超时
--问题需把java的连接及时断开,一般都是程序异常退出导致,长时间连接不做事
--问题需要查询网络延迟原因,客户端验证时间过长
--临时恢复方法:重启tomcat集群,就会恢复
报错截图
报错日志
2019/07/26 11:58:21 [error] 30059#30059: *768457 no live upstreams while connecting to upstream, client: ip, server: xx request: "GET /unlogin/queryPurchaseTenderDetailInit.jhtml?model=2&id=5c58ecd1654d43c0b1a5b59e9dde708f HTTP/1.1", upstream: "http://ecm_request/unlogin/queryPurchaseTenderDetailInit.jhtml?model=2&id=5c58ecd1654d43c0b1a5b59e9dde708f", host: "x想、n", referrer: "http://xx/unlogin/queryPurchaseTenderDetailInit.jhtml?model=2&id=5c58ecd1654d43c0b1a5b59e9dde708f"
2019/07/26 11:58:21 [error] 30059#30059: *768488 no live upstreams while connecting to upstream, client: ip, server: xxx.cn, request: "GET /unlogin/queryPurchaseClarifyaddDetailInit.jhtml?model=2&id=f6ffd676a635442b8da2f9bf20cf6d0c HTTP/1.1", upstream: "http://ecm_request/unlogin/queryPurchaseClarifyaddDetailInit.jhtml?model=2&id=f6ffd676a635442b8da2f9bf20cf6d0c", host: "xxx.cn", referrer: "http://xx/unlogin/queryPurchaseClarifyaddDetailInit.jhtml?model=2&id=f6ffd676a635442b8da2f9bf20cf6d0c"Fatal NI connect error 12170.
VERSION INFORMATION:
TNS for Linux: Version 11.2.0.1.0 - Production Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.1.0 - Production TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.1.0 - Production Time: 26-7月 -2019 11:58:36 Tracing not turned on. Tns error struct: ns main err code: 12535TNS-12535: TNS:operation timed out
ns secondary err code: 12560 nt main err code: 505TNS-00505: Operation timed out
nt secondary err code: 110 nt OS err code: 0 Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.149)(PORT=53670))可能问题原因:
1 网络攻击,半开连接攻击
2 电信云应用端到服务端防火墙策略有问题,或者带宽存在问题,时间会超时
3 Client在default 60秒内没有完成认证,如果超过这个时间客户端没有提供正确的认证信息,服务器会自动中止该连接
(比较大的事务查询,导致60s内没有未完等,或者java异常连接未及时断开)
推测是3 client超过60 问题
解决方法:
1 tomcat程序方面修改,java自动断开连接,去优化解决延迟,把访问控制在60s以内 (建议修改)
2 电信云应用层到服务层之间,防火墙策略,流量带宽大小策略进行修改,查询网络延迟,把访问控制在60s以内 (建议修改)
3 oracle11G默认策略60s,
一种是网络延时,客户端验证时间过长
一种是长时间连接不做事
如果超过这个时间客户端没有提供正确的认证信息,服务器会自动中止该连接
临时解决方案(目的解决物资网无法访问问题)
修改oracle参数,从60s改成无限制
1)、设置sqlnet.ora文件:SQLNET.INBOUND_CONNECT_TIMEOUT=0;
2)、设置listener.ora文件:INBOUND_CONNECT_TIMEOUT_listenername=0;
3)、然后reload或者重启监听
该参数主要是防止DoS攻击,恶意攻击者可以通过不停的开启大量连接请求,占用服务器的连接资源,使得服务器无法提供有效服务。在10.2.0.1起,该参数默认设置为60秒,所以此次修改无限制会有安全风险,可考虑从ip限制等其他方面加固安全