什么是weblogic.socket.Muxer? [英] What is weblogic.socket.Muxer?

查看:946
本文介绍了什么是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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆