我们安装了 Bobje,并使用 crystal reports infoview 通过互联网与客户共享一些报告。大多数报告都可以正常工作,但是任何需要“更长时间”的报告似乎都会失败。更长时间大约是 3-4 分钟。如果我们在本地网络上运行相同的报告,它们可以正常工作。事实上,我们有一些需要 10-15 分钟的报告,它们在本地返回正常,但在互联网上却不行。
我们已经就此问题与 SAP 进行了联系,但尚未得到任何令人满意的解决方案(到目前为止!!)。主要是获取浏览器和 Java 版本。我们还尽可能地增加了超时时间,但这没有效果。
我们现在不知道下一步该做什么。一种说法是,这可能与“网络”有关,但我不确定从哪里开始。另一种想法是,这可能是操作系统套接字超时?
附加信息:
- 服务器 RH4
- Bobje 版本 XI 3.1 修复包 1.5
- Oracle 10g RAC
任何帮助将非常感激。
詹姆士
答案1
我认为我发现了一些你可能会用到的东西:
我们最终的解决方案是在 Oracle 端解决这个问题。我们将 Oracle 10g 服务器上 sqlnet.ora 中的 sqlnet.expire_time 参数从默认的“30”(30 分钟)修改为“1”(1 分钟)。
参数 SQLNET.EXPIRE_TIME 用于指定发送探测以验证客户端/服务器连接是否处于活动状态的时间间隔(以分钟为单位)。如果探测发现已终止的连接或不再使用的连接,它将返回错误,导致服务器进程退出。此参数主要用于数据库服务器,以便它可以释放未使用的服务器端资源。
探测的一个副作用是每次执行探测时,客户端和服务器之间都会有 TCP-IP 活动,防火墙会将该链接指定为活动链接。通过将探测间隔缩短至一分钟,我们设法欺骗防火墙,让其将数据库连接留在连接池中,并且不会终止它们,即使客户端可能在较长时间内不使用该连接执行查询。
答案2
下一步该怎么做:我会用某种嗅探器来确定到底发生了什么。Wireshark 是解决此类问题的绝佳工具。您将确切看到网络上发生的事情。在本地进行一次基线捕获,然后使用远程客户端连接进行另一次基线捕获。比较两者并查看不同之处。
我的猜测是:您在方程式中的某个地方有一个状态防火墙,它会在给定的空闲分钟数后终止连接。需要某种 TCP keepalive 方法来维持连接。
答案3
最后,我使用 ajp 连接器配置了 BO 中的嵌入式 tomcat。然后,我使用 mod_jk 配置了 apache httpd。这解决了该问题。
J