Weblogic使用NIO模型

本文探讨了WebLogic服务器中线程模型的具体实现,包括 BIO 和 NIO 的使用情况。通过设置-Dweblogic.MuxerClass参数启用NIO模型,并详细介绍了不同条件下WebLogic如何选择合适的Muxer。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值