选择频道

时间:2015-07-03 15:10:34

标签: java weblogic solaris nio

我在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个正在处理请求。

1 个答案:

答案 0 :(得分:0)

  

线程在选择频道时挂起

没有

  

我相信上述意味着WebLogic没有足够的渠道来回复

没有

选择网络事件一个线程阻塞,这意味着没有传入数据,套接字中没有空格发送缓冲区等,具体取决于所选择的事件。

在这种情况下,它是由堆栈下面的写入调用的,这表示套接字发送缓冲区中没有空间,这表明对等端读取速度很慢。

在这方面你无能为力。