当前位置: 首页 > news >正文

极客联盟网站建设公司怎么样wordpress付费服务器

极客联盟网站建设公司怎么样,wordpress付费服务器,手机上怎么做投票网站,深圳喷绘制作公司oracle线程阻塞本案例研究描述了在AIX 6.1和IBM Java VM 1.6上运行的Oracle Service Bus 11g遇到的线程阻塞问题的完整根本原因分析过程。 本文也是您提高线程转储分析技能的绝佳机会#xff0c;我强烈建议您学习并正确理解以下分析方法。 它还将展示正确数据收集的重要性我强烈建议您学习并正确理解以下分析方法。 它还将展示正确数据收集的重要性而不是过早的中间件Weblogic重新启动。 环境规格 Java EE服务器Oracle Service Bus 11g 操作系统AIX 6.1 JDKIBM JRE 1.6.0 64位 RDBMSOracle 10g 平台类型企业服务总线 故障排除工具 Quest Software Foglight for Java监视和警报 Java VM线程转储IBM JRE javacore格式 问题概述   从我们的Oracle Service Bus Weblogic环境中观察到主要性能下降。 Foglight代理还发送了警报表明Weblogic线程使用率显着增加。 事实的收集和验证   通常Java EE问题调查需要收集技术事实和非技术事实因此我们可以得出其他事实和/或就根本原因进行结论。 在采取纠正措施之前要对以下事实进行验证以便得出根本原因 对客户有什么影响 高 受影响平台的最近更改 是的在中断报告之前OSB控制台中的一些业务服务的日志记录级别已更改 受影响平台最近的流量增加了吗 没有 从多久以来观察到此问题 日志记录级别更改后观察到新问题 重新启动Weblogic服务器是否可以解决问题 是 结论1 先前在某些OSB业务服务上应用的日志记录级别更改似乎触发了此线程阻塞问题。 但是此时的根本原因仍然未知。 Weblogic线程监视Foglight for Java   Foglight for Java 来自Quest Software是一款出色的监视工具可让您完全监视任何Java EE环境以及完整的警报功能。 该工具在我们的生产环境中用于监视每个Oracle Service Bus受管服务器的中间件Weblogic数据包括线程。 您可以在下面看到线程的持续增加以及未决的请求队列。 供您参考Weblogic运行缓慢的线程被标识为“正在运行的线程”如果运行几分钟根据您配置的阈值最终可以提升为“ STUCK”状态。 现在您下一步应该采取什么行动 Weblogic重新启动 绝对不是……针对此类问题的第一个“React”是捕获JVM线程转储。 此类数据对于您执行正确的根本原因分析并了解潜在的悬挂状况至关重要。 捕获到此类数据后您就可以继续执行Weblogic服务器恢复操作例如重新启动完全托管服务器JVM。 线程卡住线程转储可以救援   此中断场景中的下一个操作步骤是在尝试恢复受影响的Weblogic实例之前从IBM JVM快速生成一些线程转储快照。 使用kill -3 Java PID生成了线程转储该脚本确实在Weblogic域的根目录生成了一些javacore文件。 javacore.20120610.122028.15149052.0001.txt 一旦生产环境备份并开始运行团队将按照以下步骤Swift进行捕获的线程转储文件的分析。 线程转储分析步骤1 –确定线程执行模式   第一步是快速遍历所有Weblogic线程并尝试确定常见的问题模式例如从远程外部系统等待的线程处于死锁状态的线程从其他线程等待以完成其任务的线程等。 分析确实Swift揭示出许多线程处于与以下相同的阻塞情况中。 在此示例中我们可以在TransactionManager Java类OSB内核代码中看到处于阻塞状态的Oracle Service Bus线程。 [ACTIVE] ExecuteThread: 292 for queue: weblogic.kernel.Default (self-tuning)J9VMThread:0x0000000139B76B00, j9thread_t:0x000000013971C9A0,java/lang/Thread:0x07000000F9D80630, state:B, prio5(native thread ID:0x2C700D1, native priority:0x5, native policy:UNKNOWN)Java callstack:at com/bea/wli/config/transaction/TransactionManager._beginTransaction(TransactionManager.java:547(Compiled Code))at com/bea/wli/config/transaction/TransactionManager.beginTransaction(TransactionManager.java:409(Compiled Code))at com/bea/wli/config/derivedcache/DerivedResourceManager.getDerivedValueInfo(DerivedResourceManager.java:339(Compiled Code))at com/bea/wli/config/derivedcache/DerivedResourceManager.get(DerivedResourceManager.java:386(Compiled Code))at com/bea/wli/sb/resources/cache/DefaultDerivedTypeDef.getDerivedValue(DefaultDerivedTypeDef.java:106(Compiled Code))at com/bea/wli/sb/pipeline/RouterRuntimeCache.getRuntime(RouterRuntimeCache.java(Compiled Code))at com/bea/wli/sb/pipeline/RouterManager.getRouterRuntime(RouterManager.java:640(Compiled Code))at com/bea/wli/sb/pipeline/RouterContext.getInstance(RouterContext.java:172(Compiled Code))at com/bea/wli/sb/pipeline/RouterManager.processMessage(RouterManager.java:579(Compiled Code))at com/bea/wli/sb/transports/TransportManagerImpl.receiveMessage(TransportManagerImpl.java:375(Compiled Code))at com/bea/wli/sb/transports/local/LocalMessageContext$1.run(LocalMessageContext.java:179(Compiled Code))at weblogic/security/acl/internal/AuthenticatedSubject.doAs(AuthenticatedSubject.java:363(Compiled Code))at weblogic/security/service/SecurityManager.runAs(SecurityManager.java:146(Compiled Code))at weblogic/security/Security.runAs(Security.java:61(Compiled Code))at com/bea/wli/sb/transports/local/LocalMessageContext.send(LocalMessageContext.java:144(Compiled Code))at com/bea/wli/sb/transports/local/LocalTransportProvider.sendMessageAsync(LocalTransportProvider.java:322(Compiled Code))at sun/reflect/GeneratedMethodAccessor980.invoke(Bytecode PC:58(Compiled Code))at sun/reflect/DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37(Compiled Code))at java/lang/reflect/Method.invoke(Method.java:589(Compiled Code))at com/bea/wli/sb/transports/Util$1.invoke(Util.java:83(Compiled Code))at $Proxy111.sendMessageAsync(Bytecode PC:26(Compiled Code)) …………………………… 线程转储分析步骤2 –检查被阻塞的线程链   下一步是检查涉及我们确定的模式的受影响和受阻的线程链。 正如我们在线程转储分析的第4部分中所看到的那样IBM JVM线程转储格式包含一个单独的部分该部分提供了所有线程阻塞链的完整细分例如Java对象监视器池锁。 快速分析确实揭示了以下线程元凶。 如您所见Weblogic线程16是实际的罪魁祸首有300多个线程正在等待获取共享对象监视器TransactionManager 0x0700000001A51610 / 0x0700000001A51628上的锁。 2LKMONINUSE sys_mon_t:0x000000012CCE2688 infl_mon_t: 0x000000012CCE26C8: 3LKMONOBJECT com/bea/wli/config/transaction/TransactionManager0x0700000001A51610/0x0700000001A51628: Flat locked by [ACTIVE] ExecuteThread: 16 for queue: weblogic.kernel.Default (self-tuning) (0x000000012CA3C800), entry count 1 3LKWAITERQ Waiting to enter: 3LKWAITER [STUCK] ExecuteThread: 0 for queue: weblogic.kernel.Default (self-tuning) (0x000000011C785C00) 3LKWAITER [STUCK] ExecuteThread: 1 for queue: weblogic.kernel.Default (self-tuning) (0x000000011CA93200) 3LKWAITER [STUCK] ExecuteThread: 2 for queue: weblogic.kernel.Default (self-tuning) (0x000000011B3F2B00) 3LKWAITER [STUCK] ExecuteThread: 3 for queue: weblogic.kernel.Default (self-tuning) (0x000000011619B300) 3LKWAITER [STUCK] ExecuteThread: 4 for queue: weblogic.kernel.Default (self-tuning) (0x000000012CBE8000) 3LKWAITER [STUCK] ExecuteThread: 21 for queue: weblogic.kernel.Default (self-tuning) (0x000000012BE91200) .................. 线程转储分析步骤3 –线程元凶更深入的分析   一旦确定了罪魁祸首下一步就是对该线程当前正在执行的计算任务进行更深入的审查。 只需返回原始线程转储数据并从下至上开始分析罪魁祸首线程堆栈跟踪。 正如您在下面看到的那样针对我们的问题案例的线程堆栈跟踪非常清楚。 它确实表明线程16当前正在尝试提交在Weblogic / Oracle Service Bus级别进行的更改。 问题在于提交操作正在挂起并且花费了太多时间导致线程16保留来自TransactionManager的共享对象监视器锁定的时间太长并使其他Oracle Service Bus Weblogic线程“饥饿”。 [ACTIVE] ExecuteThread: 16 for queue: weblogic.kernel.Default (self-tuning) J9VMThread:0x000000012CA3C800, j9thread_t:0x000000012C9F0F40, java/lang/Thread:0x0700000026FCE120, state:P, prio5 (native thread ID:0x35B0097, native priority:0x5, native policy:UNKNOWN)Java callstack:at sun/misc/Unsafe.park(Native Method)at java/util/concurrent/locks/LockSupport.park(LockSupport.java:184(Compiled Code))at java/util/concurrent/locks/AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:822)at java/util/concurrent/locks/AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:853(Compiled Code))at java/util/concurrent/locks/AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1189(Compiled Code))at java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:911(Compiled Code))at com/bea/wli/config/derivedcache/DerivedCache$Purger.changesCommitted(DerivedCache.java:80)at com/bea/wli/config/impl/ResourceListenerNotifier.afterEnd(ResourceListenerNotifier.java:120)at com/bea/wli/config/transaction/TransactionListenerWrapper.afterEnd(TransactionListenerWrapper.java:90)at com/bea/wli/config/transaction/TransactionManager.notifyAfterEnd(TransactionManager.java:1154(Compiled Code))at com/bea/wli/config/transaction/TransactionManager.commit(TransactionManager.java:1519(Compiled Code))at com/bea/wli/config/transaction/TransactionManager._endTransaction(TransactionManager.java:842(Compiled Code))at com/bea/wli/config/transaction/TransactionManager.endTransaction(TransactionManager.java:783(Compiled Code))at com/bea/wli/config/deployment/server/ServerDeploymentReceiver$2.run(ServerDeploymentReceiver.java:275)at weblogic/security/acl/internal/AuthenticatedSubject.doAs(AuthenticatedSubject.java:321(Compiled Code))at weblogic/security/service/SecurityManager.runAs(SecurityManager.java:120(Compiled Code))at com/bea/wli/config/deployment/server/ServerDeploymentReceiver.commit(ServerDeploymentReceiver.java:260)at weblogic/deploy/service/internal/targetserver/DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)at weblogic/deploy/service/internal/targetserver/DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13)at weblogic/deploy/service/internal/targetserver/DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68)at weblogic/work/SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528(Compiled Code))at weblogic/work/ExecuteThread.execute(ExecuteThread.java:203(Compiled Code))at weblogic/work/ExecuteThread.run(ExecuteThread.java:171(Compiled Code)) 根本原因连接点   在这一点上事实和线程转储分析的收集确实使我们能够确定事件链如下 生产Oracle Service Bus管理员应用的日志记录级别更改 Weblogic部署线程16无法正确提交更改 执行客户端请求的Weblogic运行时线程Swift开始排队并等待共享库监视器TransactionManager上的锁定 Weblogic实例的线程不足生成警报并迫使生产支持团队关闭并重新启动受影响的JVM进程 我们的团队计划不久后开放一个Oracle SR以共享此OSB部署行为以及客户端请求线程和OSB日志记录层之间的硬依赖性。 在此期间除非另行通知否则不会在维护时段内尝试更改OSB日志记录级别。 结论   我希望本文能帮助您了解和理解强大的线程转储分析功能以查明阻塞线程问题的根本原因以及任何Java EE生产支持团队捕获此类重要数据以防止将来再次发生的重要性。 请不要犹豫发表任何评论或问题。 参考 Oracle Service Bus –我们JCG合作伙伴 Pierre-Hugues Charbonneau的“ 阻塞线程”案例研究 位于Java EE支持模式和Java教程博客。 翻译自: https://www.javacodegeeks.com/2012/08/oracle-service-bus-stuck-thread-case.htmloracle线程阻塞
http://www.zqtcl.cn/news/188277/

相关文章:

  • 现在还有企业做网站吗做百度推广送的网站
  • 公司年前做网站好处互联网推广运营是做什么的
  • 公司网站建设杭州钓鱼网站制作的报告
  • 宁海有做网站的吗网络规划设计师需要掌握哪些
  • 百度云注册域名可以做网站明码有了主机如何做网站
  • 门户网站推广方案连云港市电信网站建设
  • 网站程序如何制作app商城开发价格
  • 用易语言做攻击网站软件国药控股北京有限公司
  • 宁津 做网站湛江招聘网最新招聘
  • 网站建设优化服务器asp企业网站
  • 门窗网站源码建筑模板厂家联系方式
  • 太原网站建设解决方案做建筑机械网站那个网站好
  • 丹徒做网站产品外贸营销推广方案
  • 信息技术 网站建设教案做是么网站
  • 网站建设培训报名wordpress 到小程序
  • 郑州做网站软件建设网站培训
  • 做网站卖东西赚钱吗凡科互动官网登陆
  • 免费写作网站通道一通道二通道三免费
  • 腾讯云做网站选哪个网络广告推广员
  • 昆明网站开发哪家好做网站怎么做小图标
  • 泉州做外贸网站成都idc机房托管
  • 南京林业大学实验与建设网站宁波软件开发制作
  • 北京专业网站制作服务郑州有学网站制作
  • 搭建wordpress需要什么样的环境专注软件优化分享的网站
  • 网站备案后 如何建设下载免费ppt模板
  • 重慶网站建设网络服务器可提供的常见服务有什么、什么、什么和什么服务
  • 网站制作有限公司英文都不懂 学网站建设维护难吗
  • 深圳网站建设公司开发制作网站免费的网页网站
  • 开发网站公司德州做网站公司电话
  • 公司门户网站开发个人网站备案成功后怎么做