Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么是weblogic.socket.Muxer?_Java_Sockets_Weblogic_Weblogic8.x_Muxer - Fatal编程技术网

Java 什么是weblogic.socket.Muxer?

Java 什么是weblogic.socket.Muxer?,java,sockets,weblogic,weblogic8.x,muxer,Java,Sockets,Weblogic,Weblogic8.x,Muxer,你们是否了解weblogic 8.1中weblogic.socket.Muxer的用途 在线程转储中,我经常看到类似于以下内容的堆栈跟踪: "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@0x2b67

你们是否了解weblogic 8.1中weblogic.socket.Muxer的用途

在线程转储中,我经常看到类似于以下内容的堆栈跟踪:

"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
这并不是说我对此有任何问题,我只是想了解:

1) 它在干什么

2) 它会影响任何性能吗?

对于任何给定的应用程序服务器,线程转储将显示数百个(如果不是数千个)后台线程。这些服务器是复杂的野兽,而这些线程只是完成其工作的后台管道

“多路复用器”是一种多路复用器,它是一种将多个数据流组合到单个通道上的机制。Weblogic将使用这些来与自身或集群中的其他节点交换数据。在任何给定的时间,其中一些将被“阻止”,因为它们没有任何事情可做

几乎可以肯定,这不值得担心。如果你看岩石下面,你肯定会发现下面有一些丑陋的东西在阳光下向你眨眼。

我发现这可以很好地解释这种情况:

套接字Muxer管理服务器的 现有的套接字连接。首先 确定哪些套接字具有传入端口 等待处理的请求。信息技术 然后读取足够的数据以确定 协议,并分派套接字 到适当的运行时层 关于协议。在运行时层, 套接字muxer线程决定 要使用哪个执行线程队列 并相应地委派请求

从文档()中:

WebLogic服务器使用软件模块 调用muxer读取传入的 服务器上的请求和传入的 客户机上的响应。这些传声器 有两种主要类型:Java muxer或本地muxer

Java muxer具有以下功能 特点:

  • 使用纯Java从套接字读取数据
  • 它也是唯一可用于RMI客户端的muxer
  • 阻止读取,直到有数据要从套接字读取。当存在大量套接字和/或数据不经常到达时,此行为无法很好地扩展 在插座上。这对于客户端来说通常不是问题,但它会为服务器造成巨大的瓶颈
本机muxer使用特定于平台的 要从中读取数据的本机二进制文件 插座。所有平台中的大多数 提供一些机制来轮询 数据的套接字。例如,Unix 系统使用轮询系统和 Windows体系结构使用补全 港口。土生土长 可伸缩性,因为它们实现了 非阻塞线程模型。当 使用本机muxer,即服务器 创建固定数量的线程 专门阅读来函 请求。BEA建议使用 默认设置为选定的
启用本机IO
参数 允许服务器自动运行 选择适当的多路复用器用于 要使用的服务器

如果
启用本机IO
参数为 未选中,服务器实例将被删除 专门使用Java muxer。这 如果有一个小的 客户数量和当前的费率 到达服务器的请求是 相当高。在这种情况下,, Java muxer的性能与 本机muxer和消除Java本机 接口(JNI)开销。不像 本机muxer,线程数 用于读取的请求不是固定的,并且 可通过 配置
百分比套接字读取器
中的参数设置 管理控制台。看见理想情况下,您应该配置 此参数使 线程数大致等于 远程并发连接客户端 高达总线程池的50% 尺寸。每个线程都等待一个固定的 数据转换的时间量 可在插座上使用。如果没有数据 到达时,线程移动到下一个线程 插座

那么,出于这些原因,使用本地多路复用器显然更好


这里,看起来您使用的是默认的本机muxer(
weblogic.socket.EPollSocketMuxer
),而不是Java muxer(
weblogic.socket.SocketMuxer)

单词“muxer”是单词“multiplexer”的缩写。您看到的是一个内部Weblogic类。抱歉,我不知道为什么会出现这些错误。这不是错误,只是从线程转储中剪切的堆栈跟踪。