Mac OS X套接字超时

时间:2015-08-28 12:55:03

标签: java macos sockets timeout

我的OS X(约塞米蒂)机器出现了一个奇怪的问题:网络通信似乎比同一网络的其他Windows机器慢,而且超时似乎更短。

当我尝试运行Java应用程序时,每个超过15秒的事务都会返回:

java.sql.SQLRecoverableException: IO Error: Operation timed out
    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:876)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1153)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1275)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3620)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
    at dome.dbComponents.dataModels.rowSet.StatementStatus.executeQuery(StatementStatus.java:71)
    at com.dome.dCell.common.services.enterprise.types.Infusr.loadSQLFieldList(Infusr.java:976)
    at dome.util.xml.converter.typeSQLManager.ThreadLoadSqlField.run(ThreadLoadSqlField.java:103)
Caused by: java.net.SocketException: Operation timed out
    at java.net.SocketInputStream.socketRead0(Native Method) 
INFO  [28 Aug 2015 14:35:32,427] DomeEnterpriseService.loadAll(true) executed in 19724 ms 

当我们的企业服务从数据库加载所有企业超过15秒时发生超时(这不是一个糟糕的查询,只有很多信息要存储在内存中)。

这可能不直接与我们的软件配置与OS X不兼容。我试图在同一个iMac上的Windows 7 VM(带有VirtualBox)中运行相同的应用程序,问题仍然存在。

我检查了与数据库机器(Linux服务器)的连接,一切似乎都很好。

我也在/etc/sysctl.confnet.inet.tcp.msl)尝试了不同的配置,但似乎没有太大的区别。另外,我没有找到类似Linux的net.ipv4.tcp_syn_retries配置,也许我正在搜索错误的关键字,但我没有找到太多关于调整OS X超时的信息。

我不记得以前在这台机器上遇到过这个问题。我将JDK 1.7更新到最新版本(1.7.0_79),所有操作系统更新都没有改进。 我们尝试使用不同的机器(Linux和Windows,它是唯一的Mac),没有人能够重现这一点。

有什么想法吗?

0 个答案:

没有答案