我在WebLogic中对应用程序进行性能测试,并且在某些时候性能开始降低,我看到所有提供http请求的线程都被卡在此代码中
sun.nio.ch.DevPollArrayWrapper.poll0(Native Method)
sun.nio.ch.DevPollArrayWrapper.poll(DevPollArrayWrapper.java:223)
sun.nio.ch.DevPollSelectorImpl.doSelect(DevPollSelectorImpl.java:84)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
weblogic.socket.NIOSocketMuxer$NIOOutputStream.writeInternal(NIOSocketMuxer.java:1090)
weblogic.socket.NIOSocketMuxer$NIOOutputStream.write(NIOSocketMuxer.java:983)
weblogic.socket.JSSEFilterImpl.writeToNetwork(JSSEFilterImpl.java:773)
weblogic.socket.JSSEFilterImpl.wrapAndWrite(JSSEFilterImpl.java:734)
我相信上述意味着WebLogic没有足够的频道来发送回复,但我不确定哪个设置与此相关。我已检查操作系统上的文件限制,并将其设置为无限制。我不确定还需要检查什么。有任何想法吗?代码在运行SunOS的Solaris机箱上运行。
编辑:线程池已配置为使用最少250个线程进行初始化,并且可以增长到400个线程。在问题出现时,我们处于250个线程,其中只有60个正在处理请求。
答案 0 :(得分:0)
线程在选择频道时挂起
没有
我相信上述意味着WebLogic没有足够的渠道来回复
没有
在选择网络事件时一个线程阻塞,这意味着没有传入数据,套接字中没有空格发送缓冲区等,具体取决于所选择的事件。在这种情况下,它是由堆栈下面的写入调用的,这表示套接字发送缓冲区中没有空间,这表明对等端读取速度很慢。
在这方面你无能为力。