2015-07-03 30 views
-1

我的性能测试在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

您正在看到一台为网络提供网络流量的网络服务器。你想要解决什么具体问题? –

+0

这是堆栈跟踪的顶部。你是否认为这意味着它正在进行实际传输? – Farzad

回答

0

线程上选择通道

我相信上述表示的WebLogic没有足够的通道来响应发送回

号挂

这是one线程阻止选择网络事件并且它表示没有传入数据,套接字发送缓冲区中没有空间等,具体取决于正在选择的事件。

在这种情况下,它是通过进一步向下写入堆栈来调用的,这表明套接字发送缓冲区中没有空间,这表示对等体读取速度慢。

在这方面你无能为力。

+0

感谢您的解释 – Farzad