【发布时间】:2015-08-15 08:20:24
【问题描述】:
我们的基于 Web 的 Oracle 10g Forms 应用程序存在问题。
客户端随机断开连接(登录应用程序后可能需要 1 分钟到 3 小时)。
应用服务器 - 运行 Oracle Forms 10g 的 Windows Server 2003 R2
数据库服务器 - 也运行 Oracle DB 的 Linux 服务器
在事件发生时,我们在 Apache 错误日志中得到以下日志。
[2015 年 8 月 15 日星期六 10:26:35] [错误] [客户端 ClientIP] [ecid: 1439623595:AppServerIP:2760:3216:6822,0] MOD_OC4J_0015: recv() 返回 0。没有可用的消息被接收并且 oc4j 已经优雅地(有序地)关闭了连接。
[2015 年 8 月 15 日星期六 10:26:35] [错误] [客户端 ClientIP] [ecid: 1439623595:AppServerIP:2760:3216:6822,0] MOD_OC4J_0054: 无法调用网络例程以接收来自 oc4j 的 ajp13 消息.
[2015 年 8 月 15 日星期六 10:26:35] [错误] [客户端 ClientIP] [ecid: 1439623595:AppServerIP:2760:3216:6822,0] MOD_OC4J_0033: 无法从 oc4j 接收 ajp13 消息。
[2015 年 8 月 15 日星期六 10:26:35] [错误] [客户端 ClientIP] [ecid: 1439623595:AppServerIP:2760:3216:6822,0] MOD_OC4J_0121: 无法使用网络工作者服务请求:OC4J_BI_Forms_15无法恢复。
[2015 年 8 月 15 日星期六 10:26:35] [错误] [客户端 ClientIP] [ecid: 1439623595:AppServerIP:2760:3216:6822,0] MOD_OC4J_0013:无法调用目标:OC4J_BI_Forms 的服务()来服务请求。
另外,我可以在 Application.log 中看到以下错误(不确定是否相关)
15/08/15 10:38:19 formsweb:表单会话 中止:无法与运行时进程通信。
15/08/15 10:38:19 formsweb:表单会话 异常堆栈跟踪:
java.io.IOException: FRM-93000: 意外的内部错误。
详细信息:运行表单中的 Content-Length 无效或不存在
在 oracle.forms.servlet.ListenerServlet.forwardResponseFromRunform(未知来源)
在 oracle.forms.servlet.ListenerServlet.doPost(未知来源)
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
在 com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.3.0)].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:835)
在 com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.3.0)].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:341)
在 com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.3.0)].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:816)
在 com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.3.0)].server.http.AJPRequestHandler.run(AJPRequestHandler.java:231)
在 com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.3.0)].server.http.AJPRequestHandler.run(AJPRequestHandler.java:136)
在 com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.3.0)].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
在 java.lang.Thread.run(Thread.java:534)
我们已经测试了网络,从客户端到应用服务器或数据库服务器的错误时没有 ping 掉线。并且应用服务器上的12502端口也是开放的。
以前有没有人遇到过这种错误? 这些日志的含义是什么?
在 Application Server (2003 R2) 上更新 netstat -s 结果
IPv4 Statistics
Packets Received = 771212
Received Header Errors = 0
Received Address Errors = 1435
Datagrams Forwarded = 0
Unknown Protocols Received = 0
Received Packets Discarded = 322
Received Packets Delivered = 769487
Output Requests = 779485
Routing Discards = 0
Discarded Output Packets = 0
Output Packet No Route = 0
Reassembly Required = 0
Reassembly Successful = 0
Reassembly Failures = 0
Datagrams Successfully Fragmented = 4
Datagrams Failing Fragmentation = 0
Fragments Created = 8
ICMPv4 Statistics
Received Sent
Messages 5912 5912
Errors 0 0
Destination Unreachable 0 0
Time Exceeded 0 0
Parameter Problems 0 0
Source Quenches 0 0
Redirects 0 0
Echos 5902 10
Echo Replies 10 5902
Timestamps 0 0
Timestamp Replies 0 0
Address Masks 0 0
Address Mask Replies 0 0
TCP Statistics for IPv4
Active Opens = 18140
Passive Opens = 23088
Failed Connection Attempts = 149
Reset Connections = 674
Current Connections = 220
Segments Received = 756872
Segments Sent = 771596
Segments Retransmitted = 463
UDP Statistics for IPv4
Datagrams Received = 6522
No Ports = 575
Receive Errors = 267
Datagrams Sent = 1504
【问题讨论】:
-
检查 TNS 监听器日志和数据库警报。您可能需要增加 TNS 日志(服务器和客户端)中的跟踪级别。对丢包使用“netstat -s”。在我处理过的 2 个项目中,发现此类问题都是由故障 NIC 或故障网络驱动程序引起的。我们甚至在具有相同硬件的 2 台服务器上得到了这个 - 结果发现这两个服务器上的 NIC 都来自一个有问题的批次。
-
谢谢。我们更改了服务器上的网卡端口并测试,仍然存在错误。我今天将在两台服务器上重新安装驱动程序。我已编辑问题以包含 netstat -s 结果。