java - 负载/压力测试 Java 应用程序

标签 java multithreading thread-safety stress

全部,

我们有一个基于 HTTP Servlet、EJB 和 POJO 构建的 Java 应用程序。客户端使用 HTTPServlet 访问应用程序,应用程序使用 Web 服务。

我需要对该应用程序进行压力测试,以测试负载、线程安全性和响应时间 使用 HTTPURLConnection API 和 JAXB api 使用 Web 服务。

由于 JAXB 编码/解码存在线程安全问题,需要加载测试和线程安全

我见过通过指定事务数和线程数来进行应用程序负载测试。我也想对我的应用程序做同样的事情

任何建议都值得赞赏

最佳答案

是的,您可以使用 JMeter 来测试响应时间,尽管我怀疑您是否会通过使用 JMeter 发现所有并发问题。 JMeter 在应用程序负载测试方面非常有用,但请记住:

1 确保您的测试正在复制您的实际用例。

  1. 您没有在同一个机器上运行应用程序和 JMeter。

  2. 您正在使用真实的新数据和现有数据。

编写并发测试可能非常棘手。更好的方法是非常仔细地检查使用已知不安全类的代码。例如,JAXB 的解决方法可以是使用局部变量在每个请求处理程序上创建一个新的 Unmarashaller。

例如

 public void handler(HttpServletRequest req) {
    Unmarshaller u = context.createUnmarshaller();
    u.unmarshal(...);
}

显然这会带来性能问题,因此如果可能的话最好使用不同的库。如果您部署非线程安全的代码,您更有可能遇到很难重现的错误。

如果您确实希望编写并发集成测试,那么请提前阅读第 12 章《Java 并发实践中的测试并发程序》,因为编写好的测试比您想象的要困难得多。

关于java - 负载/压力测试 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19304086/

相关文章:

java - 使用 JFrame 的 JAVA 贷款计算器出现异常?

java - 不推荐使用 MockitoJUnitRunner

c# - ThreadPool 错过事件

java - 使用多线程写入多个文件时如何解决 I/O 瓶颈

java - 如何像 Vector 一样将 ArrayList 大小增加到 100%

java - 在内部存储的文件夹内创建文件

java - 如何使用 .substring 方法从索引开始并在其后获取 x 数字或字符?

ruby 线程#allocate TypeError

linux - 关于僵尸进程和线程的问题

C# 随机数生成器陷入循环