Weblogic使用NIO模型

Weblogic的线程数一直比较少,我一直认为他是采用的NIO模型,今天突然发现他的accept线程栈是采用的BIO,DynamicListenThread线程栈:

java.net.PlainSocketImpl.socketAccept(Native Method)
java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390)
   - 已锁定 java.net.SocksSocketImpl@1b77816
java.net.ServerSocket.implAccept(ServerSocket.java:453)
java.net.ServerSocket.accept(ServerSocket.java:421)
weblogic.socket.WeblogicServerSocket.accept(WeblogicServerSocket.java:38)
weblogic.server.channels.DynamicListenThread$SocketAccepter.accept(DynamicListenThread.java:535)
weblogic.server.channels.DynamicListenThread$SocketAccepter.access$200(DynamicListenThread.java:417)
weblogic.server.channels.DynamicListenThread.run(DynamicListenThread.java:173)
java.lang.Thread.run(Thread.java:619)

这让我突然陷入了恐慌。资料显示在添加

-Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer之后,wls才会采用NIO.  DynamicListenThread线程栈:

sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:145)
   - 已锁定 java.lang.Object@1dc22ad
weblogic.socket.WeblogicServerSocket.accept(WeblogicServerSocket.java:30)
weblogic.server.channels.DynamicListenThread$SocketAccepter.accept(DynamicListenThread.java:535)
weblogic.server.channels.DynamicListenThread$SocketAccepter.access$200(DynamicListenThread.java:417)
weblogic.server.channels.DynamicListenThread.run(DynamicListenThread.java:173)
java.lang.Thread.run(Thread.java:619

对这位前辈了解真得太少了。

weblogic共有三个Muxer(我也不知道该怎么译):

如果-Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer被设置刚采用NIOSocketMuxer,否则如果NativeIOEnabled是true, 则采用native muxer. 如果前两个条件都不满足,则会采用纯java的Java Muxer

虽然accept线程采用的是BIO,但weblogic实现了一套 native muxer,来处理请求读写。而这一套native muxer在unix平台用得是多路复用(类似Java nio模型),在window平台用的是完成端口(jdk7才有)。

 

本文转自 anranran 51CTO博客,原文链接:http://blog.51cto.com/guojuanjun/941697


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值