知名做网站公司,电子商务网站建设论文3000字,青浦php网站开发培训,网页微信手机登录查看数据库告警日志如下图。发现问题时间段#xff0c;没有数据库服务故障报错#xff0c;但是存在较多TNS-12535、12560、12170、00505错误#xff1a; 通过检查问题时间段应用日志#xff0c;也记录了Caused by:java.sql.SQLRecoverableException: IO 错误: Connection r…查看数据库告警日志如下图。发现问题时间段没有数据库服务故障报错但是存在较多TNS-12535、12560、12170、00505错误 通过检查问题时间段应用日志也记录了Caused by:java.sql.SQLRecoverableException: IO 错误: Connection reset和Caused by: java.net.SocketException: Connection reset等连接重置的相关报错 问题分析
1、数据库层面分析
参考官网关于这类数据库错误的文章A Demonstration of the Alert Log Timeouts Occur: TNS-12170/TNS-12535/TNS-12560/TNS-00505 (Doc ID 2461900.1)
ORACLE官方针对这类错误明确错误堆栈依次为TNS-12170/TNS-12535/TNS-12560/TNS-00505这表明由于网络问题已建立的连接超时。例如网络电缆被拔出防火墙断开连接或者客户端崩溃而没有通知服务器等等。
在这种情况下oracle服务器进程无法确定客户端状态它必须等到tcp保活超时可能是几个小时则该过程将被终止并且上述消息将被打印在警报日志中。这是一个网络/应用程序问题而不是oracle错误。
所以原因需要从数据库以外方向去查。
2、应用报错层面分析
参考官网关于SQLRecoverableException这类应用报错误的文章1JDBC 11.2.0.3 Application Fails With java.sql.SQLRecoverableException: IO Error: Connection reset (Doc ID 1575238.1)
可以看到该应用程序日志的版本与上面官网JDBC 11.2.0.3 ojdbc6.jar connection with JDK 1.6 匹配。 主要原因为该问题是由位于客户端和服务器之间的TCP/IP网络设备防火墙、路由器等引起的该设备设置为在超过任何MTU最大传输单元或数据包大小时限制或限制通过它的通信。
What Causes the java.net.SocketException: Connection Reset Error? (Doc ID 786219.1) ORACLE官方认为导致connection reset被重置的常见原因为
1客户端浏览器已刷新或关闭。如果由于这种情况而报告错误消息通常是因为系统中可能存在性能问题。要解决此问题请找到性能不佳的瓶颈并消除它。
2客户端和WebLogic服务器之间有防火墙防火墙已断开连接。对于这种情况请正确设置防火墙。
3网络拥塞导致操作超时。缓解网络拥塞问题应该得到解决
所以该问题主要是由于应用端与数据库服务器端的网络通信异常导致本次问题。建议做如下调整
网络层面检查应用端、服务器端、防火墙的MTU值是否一致更改应用端、服务端的MTU值与防火墙一致MTU默认值为1500参考可调至9000oracle原厂建议oracle服务器是 9000同时参考了其他银行的MTU值建议网络工程师可以用ping包的方式 测试出符合当前环境的最佳MTU 。
数据库层面
在sqlnet.ora增加参数 SQLNET.INBOUND_CONNECT_TIMEOUT 0
在 listener.ora 增加 INBOUND_CONNECT_TIMEOUT_LISTENER 0