什么是weblogic.socket.Muxer? [英] What is weblogic.socket.Muxer?
问题描述
您是否了解webLogic 8.1中使用的weblogic.socket.Muxer是什么?
Does any of you understand what weblogic.socket.Muxer is used for in WebLogic 8.1?
通常在线程转储中我看到类似于此的堆栈跟踪:
Often in thread dumps I see stack traces similar to this:
"ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" id=20 idx=0x68 tid=26709 prio=5 alive, in native, blocked, daemon
-- Blocked trying to get lock: java/lang/String@0x2b673d373c50[fat lock]
at jrockit/vm/Threads.waitForUnblockSignal()V(Native Method)
at jrockit/vm/Locks.fatLockBlockOrSpin(Locks.java:1675)[optimized]
at jrockit/vm/Locks.lockFat(Locks.java:1776)[optimized]
at jrockit/vm/Locks.monitorEnterSecondStageHard(Locks.java:1312)[optimized]
at jrockit/vm/Locks.monitorEnterSecondStage(Locks.java:1259)[optimized]
at jrockit/vm/Locks.monitorEnter(Locks.java:2439)[optimized]
at weblogic/socket/EPollSocketMuxer.processSockets(EPollSocketMuxer.java:153)
at weblogic/socket/SocketReaderRequest.run(SocketReaderRequest.java:29)
at weblogic/socket/SocketReaderRequest.execute(SocketReaderRequest.java:42)
at weblogic/kernel/ExecuteThread.execute(ExecuteThread.java:145)
at weblogic/kernel/ExecuteThread.run(ExecuteThread.java:117)
at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)
-- end of trace
这不是我有任何问题,只是有点理解:
It's not that I have any problems with that, it is just intresting to understand:
1)它在做什么?
2)它会影响任何表现吗?
1) what is it doing?
2) can it affect any performance?
推荐答案
来自文档( http://download.oracle.com/docs/cd/E13222_01/wls /docs100/perform/WLSTuning.html#wp1152246 ):
WebLogic Server使用名为muxers的软件模块
读取服务器上的
请求和客户端上的
响应。这些复用器
有两种主要类型:Java
复用器或本机复用器。
WebLogic Server uses software modules called muxers to read incoming requests on the server and incoming responses on the client. These muxers are of two primary types: the Java muxer or native muxer.
Java复用器具有以下
特性:
A Java muxer has the following characteristics:
- 使用纯Java从套接字读取数据。
- 它也是唯一可用的muxer RMI客户端。
- 阻塞读取,直到有数据要从套接字读取。当存在大量套接字和/或数据在套接字上很少到达
时,此行为无法很好地扩展。这通常不是客户端的问题,但它可能会给服务器带来巨大的瓶颈。
本机复用器使用特定于平台的
本地二进制文件,用于从
套接字读取数据。大多数平台
都提供了一些机制来轮询
套接字的数据。例如,Unix
系统使用轮询系统,而
Windows体系结构使用完成
端口。 Native提供了优越的
可伸缩性,因为它们实现了
非阻塞线程模型。当使用
本机复用器时,服务器
创建固定数量的线程
专用于读取传入的
请求。 BEA建议使用为
启用Native IO
参数选择的
默认设置,其中
允许服务器自动
选择要使用
服务器的适当muxer。
Native muxers use platform-specific
native binaries to read data from
sockets. The majority of all platforms
provide some mechanism to poll a
socket for data. For example, Unix
systems use the poll system and the
Windows architecture uses completion
ports. Native provide superior
scalability because they implement a
non-blocking thread model. When a
native muxer is used, the server
creates a fixed number of threads
dedicated to reading incoming
requests. BEA recommends using the
default setting of selected for the
Enable Native IO
parameter which
allows the server automatically
selects the appropriate muxer for the
server to use.
如果 Enable Native IO
参数是
未选中,服务器实例
专门使用Java多路复用器。这个
可能是可以接受的,如果有一个小的
数量的客户端,并且
的费率到达服务器的
相当高。在这些条件下,Java muxer执行
以及
本机muxer,并消除Java Native
接口(JNI)开销。与
本机复用器不同,用于读取请求的线程
不固定,
可以通过
配置百分比套接字读取器来为Java复用器调整/ code>
管理控制台中的参数设置。请参阅更改
可用插座数量
读者。理想情况下,您应该配置
此参数,以便
线程的数量大致等于
远程并发连接客户端的数量
最多为总线程池的50%
尺寸。每个线程等待固定的
时间量,以使数据在套接字上变为
。如果没有数据
到达,则线程移动到下一个
套接字。
If the Enable Native IO
parameter is
not selected, the server instance
exclusively uses the Java muxer. This
maybe acceptable if there are a small
number of clients and the rate at
which requests arrive at the server is
fairly high. Under these conditions,
the Java muxer performs as well as a
native muxer and eliminate Java Native
Interface (JNI) overhead. Unlike
native muxers, the number of threads
used to read requests is not fixed and
is tunable for Java muxers by
configuring the Percent Socket Readers
parameter setting in the
Administration Console. See Changing
the Number of Available Socket
Readers. Ideally, you should configure
this parameter so the number of
threads roughly equals the number of
remote concurrently connected clients
up to 50% of the total thread pool
size. Each thread waits for a fixed
amount of time for data to become
available at a socket. If no data
arrives, the thread moves to the next
socket.
然后,由于这些原因,使用本机复用器显然更好。
Then, for those reasons, it is obviously better to use native muxers.
这里看起来你使用的是默认的本机复用器( weblogic.socket.EPollSocketMuxer
),而不是Java muxer( weblogic.socket.SocketMuxer)
。
Here, it looks like you are using the default native muxer (weblogic.socket.EPollSocketMuxer
), not the Java muxer (weblogic.socket.SocketMuxer)
.
这篇关于什么是weblogic.socket.Muxer?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!