java.net.SocketException: Error in poll for fd=117, revents=32
at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:131)
at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:32)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
BEA-101083出现在客户端请求往服务器端发送请求数据的时间内没有结束。HttpCompleteMessageTimeout默认值为60秒,最大值为480秒。如果没有设定,会取server---->Protocols---->General中的CompleteMessageTimout值(general中配置适合于所有协议,包括Http, T3, IIOP等)。如果两个都没有设定,那么weblogic server会将该值设定为:CompleteMessageTimeoutTrigger. CLEANUP_TRIGGER_TIMEPERIOD_LOW=2secs。
注意:CompleteMessageTimeout是数据包,而不是整个请求的timeout时间。
BEA-101083通常是因为客户端发送的请求数据不能在HttpCompleteMessageTimeout内完成,常见的两种情况是:性能很差的网络环境、黑客攻击(连续的向服务器写入数据,但每次写入很少的数据,例如,10bytes/secs或更少)。客户端数据读取超时是通过SocketMuxer.TimeoutTrigger实现的。这个trigger同时还负责IdleTimeout(KeepAlive的HttpConnection的Duration,默认为30秒)。要解决BEA-101083,主要是解决解决网络性能问题,另外就是加强网络安全管理,防止黑客攻击。最后在说一下CompleteMessageTimeout设定,weblogic admin console上提示改设定是动态的,即不需要重启,但实际并不是这样的。如果该设定是要解决BEA-101083,那么它是动态的,不要重启。
阅读(5090) | 评论(0) | 转发(0) |