我已经部署了一个多层java应用程序,并且不时看到应用程序中的作业失败,导致pipe道损坏和通道错误类似于:
Caused by: java.nio.channels.ClosedChannelException at sun.nio.ch.SocketChannelImpl.ensureWriteOpen(SocketChannelImpl.java:125) at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:294) at com.common.connectionmanager.AsyncSocket$AsyncSocketOutputStream.write(AsyncSocket.java:466) at java.io.DataOutputStream.writeInt(DataOutputStream.java:180)
和
2009-06-15 14:02:53,492 ERROR [com.ClientConnectionManager] [Socket (ClientConnectionManager.java:368) - Client connection error com.ConnectionException: Error encoding message to stream Caused by: java.io.IOException: Broken pipe at sun.nio.ch.FileDispatcher.write0(Native Method) at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:29) at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:104) at sun.nio.ch.IOUtil.write(IOUtil.java:75) at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:302) at com.common.connectionmanager.AsyncSocket$AsyncSocketOutputStream.write(AsyncSocket.java:466) at java.io.DataOutputStream.writeInt(DataOutputStream.java:180)
我认为这意味着我的两台服务器之间的networking连接暂时中断,这些错误告诉我,服务器不能相互通话。
所有的服务器都连接在一个1GBPS的局域网上。
有关的服务器正在运行Solaris – 任何人都可以推荐任何工具来监视它们之间的networking连接,并发现它是否确实在不时地退出?
运行pingtesting一段合理的时间。
ping 10.1.1.10> connection.txt
结果将在文件connection.txt的末尾。
Ping 10.1.1.10的统计信息:
数据包: 发送= 53 , 收到= 53 ,丢失= 0(0%丢失),
大约以毫秒为单位的往返时间:
最小值= 0ms,最大值= 0ms,平均值= 0ms
你没有提到这些服务器是如何连接的……局域网/广域网等,这将在你应该开始排除故障的地方发生巨大的变化。 如果是局域网,开始监视这些服务器插入的交换机接口,查找错误(也许你的双工/速度设置是错误的),也许其中一个服务器不断请求自动协商,或者混合在一起的电缆。 由于老旧的拥塞,你也可能会看到超时 – 交换机上有一个感染恶意软件的PC /你正在使用10BaseT。
如果您要通过广域网,首先需要一个工具,比如smokeping,这个工具可以监控一个连接,并告诉你什么时候连接失败。 如果你看到丢包,这可能是拥塞/蹩脚的连接/有人正在您的ISP上的电缆踩…可能是任何东西。
Bonne的机会。
我无法提供任何特定于Solaris的build议,但是不是通过ping或类似的方式来testing连接,而是更好地监视接口。 如果连接被丢弃,我想你会在日志中看到它的一些东西。