【问题标题】:Oracle Forms 10g users disconnecting randomly with error FRM-92102Oracle Forms 10g 用户随机断开连接并出现错误 FRM-92102
【发布时间】: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 结果。

标签: oracle apache oracle10g


【解决方案1】:

netstat -s 需要定期运行,并随着时间的推移检查丢弃数据包的值等。

我在 Metalink 上查看了您的问题。如果您有权访问 MetaLink(或 My Oracle Support),请尝试搜索 Note 300232.1。它是这样说的:

由于这些错误,报告请求会在 httpd.conf 中的超时时间。这些重新提交的请求被路由到 不同的OC4J岛,导致不稳定。

解决方案

1) 将 httpd.conf 中的超时值设置为大于 报告的执行时间 参考文献

注意:294749.1 - WebForms 调整/性能/超时问题故障排除

还有一个综合说明的参考:

WebForms 10g 调优/性能/超时问题疑难解答 (文档 ID 294749.1)

在 HTTP 端,要调整的目标参数是:

- KeepAlive 
- MaxClient
- MinSpareServers 
- MaxSpareServers
- KeepAliveTimeout 
- MaxRequestsPerChild
- ThreadLimit
- ThreadsPerChild
- Global-thread-pool

OC4J 参数:

- Xconcurrentio
- Xms(sizem) -Xmx(sizem)
- Xss
- OC4J Load Balancing 
- client 
- server
- session-timeout
- Xconcurrentio

表单调整:

prestartInit
prestartMin
prestartIncrement
prestartTimeout

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 2017-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多