WEB开发网
开发学院软件开发Java 使用 Problem Diagnostics Lab Toolkit 增强故障排... 阅读

使用 Problem Diagnostics Lab Toolkit 增强故障排除技能

 2010-05-21 00:00:00 来源:WEB开发网   
核心提示: 休眠 5 秒钟,获得一个全局锁:lock1,使用 Problem Diagnostics Lab Toolkit 增强故障排除技能(6),释放全局锁:lock2,释放全局锁:lock1,而其他线程也就受到影响,当线程的总数超过 Web 容器的最大线程数时,这个代码片段可以在单线程环境中安全运行;

休眠 5 秒钟。

获得一个全局锁:lock1。

释放全局锁:lock2。

释放全局锁:lock1。

这个代码片段可以在单线程环境中安全运行;然而,它会在多线程环境下引起死锁。当两个不同的线程在步骤 2 和步骤 6 之前独立运行时,其中一个线程已经占用了 lock1 并等待 lock2,反之亦然。因此,如果您模拟多个同时运行此代码的客户机,那么就会重现死锁场景。

图 5. 单击 Edit Action 按钮后出现的代码编辑器
使用 Problem Diagnostics Lab Toolkit 增强故障排除技能

查看原图(大图)

压力模拟

PDTK 提供了一个内置的压力引擎,可以轻松地模拟并发访问场景。图 6 展示了如何设置压力引擎:展开 Advanced Settings 窗格并配置 Client number、Invoke times 和 Think time(请求之间的时间间隔)。在本文中,将客户机的数量设置为 2。在配置好高级设置后,展开 Action Buttons 窗格并单击 DeadLock Jsp 按钮。压力引擎将模拟两个向 Dead Lock JSP 发送同步请求的客户机。

图 6. 设置压力引擎
使用 Problem Diagnostics Lab Toolkit 增强故障排除技能

监视线程

如图 7 所示,展开 Monitors 窗格会看到三个选项卡:Thread、Memory 和 ResponseTime。单击 Thread 选项卡获得线程的状态。从图 7 所示的线程信息可以看到,两个线程都处于阻塞状态。死锁意味着两个程序都不能通过编程的方式终止,而其他线程也就受到影响。当线程的总数超过 Web 容器的最大线程数时,那么所有新的请求都将被拒绝。

上一页  1 2 3 4 5 6 7  下一页

Tags:使用 Problem Diagnostics

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接