java - Java App 的加载问题 - 如何复制?

标签 java oracle tomcat jmeter load-testing

我有一个使用 oracle DB 的 java 应用程序,在 apache tomcat 上运行。在正常的日子里,java 应用程序运行良好。然而,一天的流量翻了一番,应用程序开始遇到响应时间和超时增加的问题。

在那之后,我们尝试使用 jmeter 运行负载测试,并经历了相同的负载量,但从未遇到过任何来自测试的响应/超时问题。顺便说一句,我们检查了我们的网络监控工具,基础设施没有问题。

如果我想在测试期间重现相同的问题,我可以检查我应该寻找什么吗?复制这一点将有助于确保我们将要进行的更改能够奏效。

谢谢!

最佳答案

潜在的问题是:如何使负载测试足够真实以复制在生产中观察到的访问数据库的缓慢情况。我们的评论交流中的思考过程是审查和排除在负载测试中通常未正确模拟并给出过于乐观的性能结果的因素。我审查了 4 个因素:

  1. 负载测试脚本是否正确关联了动态值?是的,因为负载测试创建的记录与场景匹配。如果不是这种情况,那么负载测试中失败的事务将是响应过快的原因。建议手动关联您的脚本。

  2. 负载测试脚本是否正确地模拟了多个经过身份验证的用户?应用程序不需要登录。如果不是这种情况,那么使用单个用户运行负载测试将无法测试维护多个用户 session 的系统开销。建议使用具有多个凭据的数据集对记录的凭据进行参数化。

  3. 负载测试脚本是否正确地模拟了通过 cookie 进行身份验证的匿名用户?应用程序不使用 cookie 身份验证。如果不是这种情况,那么建议在记录之前清除浏览器缓存以确保不会记录过时的 cookie,然后确保脚本中的 cookie 关联配置正确。

  4. 负载测试脚本是否正确模拟记录场景中的数据?假设测试场景记录了一些用作数据库查询标准的用户条目。如果您重播模拟同一条目的多个迭代,由于应用程序或数据库缓存,数据库可能不会被此类查询命中。如果是这种情况,则建议使用测试数据集对用户条目进行参数化。

如果最后一个因素也不是,那么还有更多的因素要经过。有关相关性和参数化负载测试的更多信息,请查看此博客 http://www.stresstimulus.com/blog/post/eradicating-load-testing-errors-1

关于java - Java App 的加载问题 - 如何复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43018811/

相关文章:

oracle - 将 SPATIAL 数据从 Oracle 迁移到 Postgresql

mysql - Elastic Beanstalk hibernate MySQL

java - 无法在 linux 中的 tomcat 上运行 solr(404 未找到/solr)

tomcat - 更改war的上下文路径,无法使用ant添加JSP文件夹

Java接口(interface)参数

java - XSLT 传输失败,因为 Weblogic 找不到位于 rt.jar 中的类

Oracle 对某些用户隐藏列

Java DatabaseMetaData.getColumns() 方法并不适用于所有用户

java - HtmlUnit 关闭所有窗口内存泄漏

java - 获取 ANDROID_ID 解析 ...R$string 失败;