精华内容
下载资源
问答
  • weblogic最大线程 定义或什么是缠线? 如果线程 在设定 的时间 内连续工作(非空闲),则WebLogic Server会将其诊断为阻塞 。 您可以通过更改在诊断出线程被阻塞之前的时间长度( Stuck Thread Max Time ),...

    weblogic最大线程

    定义或什么是缠线?
     
    如果线程 在设定 的时间 内连续工作(非空闲),则WebLogic Server会将其诊断为阻塞
    您可以通过更改在诊断出线程被阻塞之前的时间长度( Stuck Thread Max Time ),以及通过更改服务器检查线程是否被阻塞的频率,来调整服务器的线程检测行为。 在此处查看如何更改“粘线最大时间”。

    问题还是为什么“粘线”是邪恶的?
     
    WebLogic Server自动检测执行队列中的线程何时变为“阻塞”状态。 由于卡住的线程无法完成其当前工作或接受新工作,因此服务器每次诊断出卡住的线程时都会记录一条消息。 如果执行队列中的所有线程都卡住,服务器将根据执行队列将其运行状况更改为“警告”或“严重”:

    • 如果默认队列中的所有线程都卡住,则服务器会将其运行状况更改为“ 严重” (您可以将Node Manager应用程序设置为在严重运行状态下自动关闭和重新启动服务器。有关更多信息,请参阅“配置和管理WebLogic Server”中的“ Node Manager功能 ”。)
    • 如果weblogic.admin.HTTP,weblogic.admin.RMI或用户定义的执行队列中的所有线程都卡住了,则服务器会将其运行状况更改为“ 警告”
    因此,实际上,几个“阻塞线程”可能不会使服务器崩溃,从而阻止服务器处理请求,但这是一个不好的信号。 通常,卡住的线程数将增加,并且服务器最终将崩溃。

    为避免应用程序完全失败该怎么办?
     

    WebLogic Server会定期检查卡住的线程(这是“ 卡住线程计时器间隔” ,您可以在此处进行调整)。 如果所有应用程序线程都卡住,则服务器实例将自身标记为失败,如果配置为失败,则退出。 您可以配置节点管理器或第三方高可用性解决方案以重新启动服务器实例以进行自动故障恢复。您可以将以下操作配置为在并非所有线程都卡住但卡住的线程数超过配置的阈值时发生:如果工作管理器卡住了线程,请关闭它。 关闭的工作管理器将通过发送拒绝消息来拒绝新工作并拒绝队列中的现有工作。 在群集中,群集客户端将故障转移到另一个群集成员。
    • 如果应用程序中存在线程阻塞,请关闭应用程序。 通过使其进入管理模式来关闭该应用程序。 属于该应用程序的所有工作管理器都将关闭,并按上述方式运行。
    • 将服务器实例标记为失败,如果服务器中存在线程阻塞,则将其关闭。 在群集中,已连接或尝试连接的群集客户端将故障转移到另一个群集成员。

    如何识别问题?
     

    推荐的方法是检查线程转储。 选中“ 发送电子邮件警报以查找有关带有线程转储线程卡住中间件魔术文章” ,使线程转储在发生时自动发送给您。

    帮助您分析线程转储的工具有:

    如何解决该问题?
     

    确定导致卡住线程的代码(即执行所花费的时间超过堆栈线程的最大时间)后,可以使用工作管理器执行代码。 工作管理器具有“忽略卡住线程”选项,该选项使您能够执行长时间运行的作业。 见下文:

    以下是有关如何创建工作管理器的一些帖子

    测试:如何创建卡死线程?
     
    如何创建“卡住线程”以测试您的weblogic设置? 将断点放在请求所调用的支持bean或模型方法中。 如果您在断点处等待“最大线程停留时间”,则会注意到服务器日志中将显示“线程滞留”跟踪:

    <16 =?? 2011 12:28:22 ?? EET><Error><WebLogicServer><BEA-000337><[STUCK] ExecuteThread: '2' for queue: 
    'weblogic.kernel.Default (self-tuning)' has been busy for "134" seconds working on the 
    request "weblogic.servlet.internal.ServletRequestImpl@6e6f4718[
    GET /---/---/----/---/days.xhtml HTTP/1.1
    Connection: keep-alive
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
    Cookie: JSESSIONID=DYG5TDTZSnKLTFw5CMMdLCD9sPsZS4Jqlmxj9wdGNyt1BnPcfNrR!-1520792836
    
    
    
    
    ]", which is more than the configured time (StuckThreadMaxTime) of "60" seconds. Stack trace:
           --------------------------------------------(--------------------.java:83)
           javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:823)
           com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:285)
           com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
           com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
           javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)
           org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:55)
           org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
           org.primefaces.component.fieldset.FieldsetRenderer.encodeContent(FieldsetRenderer.java:95)
           org.primefaces.component.fieldset.FieldsetRenderer.encodeMarkup(FieldsetRenderer.java:76)
           org.primefaces.component.fieldset.FieldsetRenderer.encodeEnd(FieldsetRenderer.java:53)
           javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)
           javax.faces.component.UIComponent.encodeAll(UIComponent.java:1620)
           javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
           javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)
           org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:55)
           org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
           org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:229)
           org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:152)

    更多挖掘:

    src:

    参考:ADF和Weblogic How To博客上, 我们的JCG合作伙伴 Spyros Doulgeridis 处理Weblogic的粘滞线程


    翻译自: https://www.javacodegeeks.com/2012/05/dealing-with-weblogic-stuck-threads.html

    weblogic最大线程

    展开全文
  • 有一天突然出现一个实例GC回收告警,GC回收不了,监察日志发现实例出现大量stuck线程,过了一会就把内存耗尽OOM了,重启后有效,但是总是在不同的实例上出现,而且只是一个实例,从这一点基本就可以判定是一条异常...

    最近整理历史处理过的问题  看到了当时16年刚毕业入司那年遇到的一个比较有意思的问题,这里记录下,也是一个问题排查的思路

     

    现象

    是一个生成pdf函件的系统。后文都称为【pdf生成系统】,功能很单一,就是根据传过来的参数,然后用不同的模板(jasper模板)生成各种pdf

    有一天突然出现一个实例GC回收告警,GC回收不了,监察日志发现实例出现大量stuck线程,过了一会就把内存耗尽OOM了,重启后有效,但是总是在不同的实例上出现,而且只是一个实例,从这一点基本就可以判定是一条异常数据导致的,这条异常数据不断尝试,不断出问题,处理的线程无法释放导致的

    于是两个方向走,一遍排查这个异常数据,一边如果再次出现,立马重启,毕竟要保证生产正常

    (运维的第一任务就是保证生产正常,一切工作都是基于这个哦,这是运维铁律,如果系统都不正常,再多出彩的加分项工作都是无用的,这也是我毕业之后第一个领导教我的,一直作为我的运维准则)

    排查

    因为对weblogic比较熟,所以立马就想到了stuck线程的概念:如果执行线程处理某个请求的粘滞时间超过了配置的粘滞线程最大时间,stuck线程,粘滞线程最大时间是在weblogic配置的,默认是600秒

    所以如果日志里面打印出了stuck线程的日志,那么就可以根据stuck日志打印的时间,以及当前堵塞的时间来倒推这个请求开始的时间,stuck日志如下:

    那么倒推这个请求的时间就是   18:15:56   减去  940秒,也就是请求产生的时间大概在18:00:16左右

    打印pdf有一个tracer日志,里面记录了每次调用开始打印的记录:,根据18:00:16这个时间查找日志,于是找到了最符合的这一单数据

    那么如果这一单一直在重试,肯定不会只有这一个记录,于是又搜了别的异常过的实例,都搜到了这个异常单,一直在不断的重试

    其实这个时候就已经可以确定这个异常单了,但是可以再确定下这个异常单到底有没有生成pdf,就去搜了下out日志(所有pdf生成成功都会再这个日志记录,如下图,对应单号都会有export done 打印成功的日志)

    果然没有搜到这一个异常数据生成pdf的记录

     

     

    处理&原因

    最后核实这一单的数据,是上游调用系统前端录入了错误的信息,导致传了错误的关键字信息给【pdf生成系统】,后台根据不同条件会调用不同的子模板去生成pdf,这个异常单因为数据不对,调用了错误的子模板,导致子模板的长度超过父模板,于是无法生成pdf

    而上游系统每小时都会对未生成pdf的单再次补处理,于是每次调用都会导致一个实例产生stuck线程,stuck线程会一直占用一个对象,导致最后OOM。

    最后是上游系统对这一单的数据做了修改,问题就解决了

     

    当然,系统也是需要做优化的,上游系统需要对录入做最基本的校验,【pdf生成系统】也需要做一些容错处理,不应该因为一单异常数据,就导致服务异常

     

    推荐公众号,分享运维知识:龙叔18岁

     

     

    展开全文
  • tomcat线程模型分析

    2018-12-23 18:11:26
    一般的web服务器肯定不止tomcat,还有weblogic,jetty等,但是到目前为止,只用过tomcat服务器。简单总结一下收获。 tomcat支持四种现场模型 BIO 同步阻塞式IO,就是传统的java.io,该模式下每个请求都会创建一个线程,...

    tomcat线程模型源码初体验

    常用的web服务器肯定不止tomcat,还有weblogic,jetty等,但是到目前为止,只用过tomcat服务器。简单总结一下收获。

    tomcat支持四种线程模型

    • BIO
      同步阻塞式IO,就是传统的java.io,该模式下每个请求都会创建一个线程,性能开销大,不适合高并发场景,但是稳点,适合连接数目小且固定的架构。
    • NIO
      同步非阻塞IO(jdk1.4后),该模式基于多路复用选择器(selector)监测连接状态再通知线程处理,从而达到非阻塞的目的,能更好的支持并发,tomcat8.0之后默认采用。
    • APR
      全称是apache protable runtime,以jni的形式调用Apache HTTP服务器的核心动态链接库,需要安装APR库。(具体我也没用过)
    • AIO
      异步非阻塞式IO,jdk1.7后之支持,不需要多路复用选择器,而是通过请求处理线程执行完后,回调通知继续执行后续操作。tomcat8.0后支持。

    在tomcat中配置线程模型
    在tomcat->conf中找到server.xml,打开找到下面配置。

    这里默认就是BIO,BIO还有一种写法就是:protocol=“org.apache.coyote.http11.Http11Protocol“
    NIO
    protocol=”org.apache.coyote.http11.Http11NioProtocol“
    AIO
    protocol=”org.apache.coyote.http11.Http11Nio2Protocol“
    APR
    protocol=”org.apache.coyote.http11.Http11AprProtocol“

    tomcat中BIO源码分析
    大致流程如下:

    入口就是JioEndPoint这个类(因为早期就只有BIO,所以这里命名就是javaIo),这个类里面有个内部类Acceptor,有客户端请求时首先就会到这里,在这里插入图片描述
    这里的countUporAwaitConnection()方法是统计tomcat的连接数,默认设置的是10000,如果超过了这个数,就会把请求放到阻塞队列中。在这里插入图片描述
    这里的acceptSocket就是调用了ServerSocket的accept方法。到这,客户端和服务器就建立了连接。

    在这里插入图片描述
    下面的processSocket就是具体处理连接了,
    在这里插入图片描述
    getExecutor就是从线程池中取线程去执行这个socket
    处理就是在SocketProcessor这个类中,这个类实现了runnable接口,run方法中就是根据socket状态处理在这里插入图片描述

    tomcat中NIO源码分析
    主要流程:
    在这里插入图片描述
    在这里插入图片描述
    从这里面可以看出,tomcat切换成nio后,有三类线程,acceptor,poller,socketProcessor。
    在这里插入图片描述
    这里就是NioEndpoint了,可以看出开始和bio区别不大,主要就是serverSock.accpet,只是这个地方就是SocketChannel了,serverSocket就是ServerSocketChannel,下面看看初始化
    在这里插入图片描述
    得到socket后,就是把它封装成一个管道,然后注册到poller中,在这里插入图片描述
    这里的socket.getSelector就是得到多路复用器,把管道注册到selector中
    在这里插入图片描述
    注册后,selector就开始轮循,1秒钟会轮循一次
    在这里插入图片描述
    获取需要处理的channel进行处理,processKey就是具体的处理
    在这里插入图片描述

    到这就分析结束了,分析的不够细致,上面仅是个人理解。

    展开全文
  • Weblogic使用NIO模型

    2017-11-15 21:10:00
    Weblogic线程数一直比较少,我一直认为他是采用的NIO模型,今天突然发现他的accept线程栈是采用的BIO,DynamicListenThread线程栈: java.net.PlainSocketImpl.socketAccept(Native Method) java.net....

    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


    展开全文
  • hotspot线程模型 以下问题将测试您对Linux操作系统上运行的Java应用程序的垃圾收集和高CPU故障排除的知识。 当调查过多的GC和/或CPU利用率时,此故障排除技术尤其重要。 它将假定您无权使用高级监控工具,例如...
  • 如果线程 在设定 的时间 内连续工作(非空闲),则WebLogic Server会将其诊断为阻塞 。 您可以通过更改在诊断出线程被阻塞之前的时间长度( Stuck Thread Max Time ),以及更改服务器检查线程是否被阻塞的频率...
  • Weblogic入门

    万次阅读 多人点赞 2017-06-13 00:08:52
    Weblogic
  • 说实话,执行线程的设置没有什么准确的计算公式,一切都得依赖测试和实际的运行情况。设置少了,会有等待队列;设置多了,性能也未必高。但是,对于调优,我还是建议先不足再增加,即先少后多。通常情况下,如果一...
  • 优化WebLogic

    2012-09-12 15:22:20
    优化 WebLogic服务器性能参数 WebLogic 配置文件(config.xml)包含了大量很直观的与性能有关的参数,能通过配置环境与应用程序得到很好的优化。基于系统的需要调整这些参数不仅...在WebLogic 中队列元素的线程数等于
  • WebLogic 优化

    千次阅读 2016-03-10 16:05:00
    优化 WebLogic 服务器性能参数   WebLogic 配置文件(config.xml)包含了大量很直观的与性能有关的参数,能通过配置环境与应用程序得到很好的优化。基于系统的需要调整这些...一 修改运行队列线程数的值。在WebL
  • weblogic 理解MBean

    千次阅读 2014-11-13 19:27:08
    为了完全理解WebLogic服务器如何工作,并让它表现出最佳性能,我们很有必要理解几个概念。最重要的概念都在下面的...当客户端向WebLogic发起请求时,响应该请求的实际工作是由叫做执行线程的Java线程执行的。用户可以使
  • weblogic调优方案

    2011-05-04 22:37:00
    <br />优化WebLogic 服务器性能参数 WebLogic 配置文件(config.xml)包含了大量很直观的与性能有关的参数...在WebLogic 中队列元素的线程数等于同时占用运行队列的应用程序的数目。当任务加入一个WebLogic
  • weblogic 应用事项

    千次阅读 2010-07-27 18:01:00
    创建WebLogic 配置/域 域是一组逻辑上相关的WebLogic Server资源,您可以把它当作单个管理单元进行管理。域将所有的资源和应用程序信息保存在一个基于XML的配置库中。为了在WebLogic Server上部署并运行...
  • Weblogic调优

    2014-08-14 16:32:24
    他们计划从另一种产品迁移到WebLogic Express上,但是令他们吃惊的是,WebLogic Express下的CPU占用量要远远高于他们原本使用的产品。 我们以优先级的顺序列出了各种性能调优参数,试图解决问题。列在上面的是我所...
  • 优化WebLogic 服务器性能参数 收藏 优化WebLogic 服务器性能参数WebLogic 配置文件(config.xml)包含了大量很直观...试着采用下列WebLogic配置方法,或许能使你的系统达到最佳状态:一 修改运行队列线程数的值。在...
  • WEBLOGIC服务器管理

    千次阅读 2014-04-22 17:06:46
    WebLogic服务器管理概述 本章将介绍WebLogic服务器的管理工具,内容如下: ü 域、管理服务器以及受管理的服务器 ü 启动管理控制台 ü 运行时对象与配置对象 ü 对日志消息的集中访问 BEA WebLogic ...
  • WebLogic及其他

    2019-10-03 00:39:38
    如何给WebLogic指定大小的内存?  在启动WebLogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS= -Xms32m -Xmx... 可以在管理控制台中修改对应服务器的启动模式为开发或产品...
  • weblogic调优参数配置

    千次阅读 2012-03-08 14:01:20
    WebLogic 配置文件(config.xml)包含了大量很直观的与性能有关的参数,能通过配置环境与应用程序得到很好的优化。基于系统的需要调整这些参数...在WebLogic 中队列元素的线程数等于同时占用运行队列的应用程序的数目
  • 线程

    2015-09-08 23:27:56
    1)多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线 程的处理的数据,而B线程又修改了A线程处理的数理。显然这是由于全局资源造成的,有时为了解 决此问题,优先考虑使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,918
精华内容 4,767
关键字:

weblogic线程模