【问题标题】:Java Servlet: performance issueJava Servlet:性能问题
【发布时间】:2015-09-10 08:21:16
【问题描述】:

我写了一个简单的 servlet,它只包含服务方法(下面的代码)。我在 weblogic 服务器(版本 10.3.6)下运行测试,并使用 Gatling 执行负载测试。 但是我对图中提到的峰值时间响应的巨大变化感到惊讶(http://i.stack.imgur.com/QP2Fz.png):例如,选定的峰值提到 99% 的线程有 27 ms 作为时间响应,只有 1% 的线程有时间响应等于 320ms。

Servlet 代码:

@Override
   public void service(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException
        {
            String responseMessage = "hello world";
            // the message (which is the route)
            response.setContentType("text/xml;charset=utf-8");
            response.setStatus(200);
            response.setContentLength(2);
            OutputStream outputStream = response.getOutputStream();
            outputStream.write(responseMessage.getBytes());         
        }

【问题讨论】:

  • 问题是什么?
  • 我想了解峰值的原因以及谁来降低最大值
  • 您可以先尝试分析您的 service 方法,同时使用 Gatling 对其进行测试。如果执行时间在此范围内似乎是恒定的,那么问题可能出在 Weblogic 和/或其配置上。

标签: java performance servlets weblogic


【解决方案1】:

1% 的线程的时间响应等于 320 毫秒

没有。第 99 个百分位数是 27 毫秒,最大值是 320mx,这意味着 1% 的响应时间在这两个值之间。由于您不知道那里的分布,因此您无法判断它们主要位于下侧还是上侧。

我对时间响应的巨大变化感到惊讶

一个应用程序涉及许多物理组件,这些组件通常不是专门供您使用,而是与他人共享(网络、CPU 等),因此必然会发生故障。

你想要的是保持他们的概率很低。

所以现在我们正在谈论统计数据。您需要有足够的值以使您的样本具有统计显着性,并且知道您的第 99.9 和 99.99 百分位数是多少,这样您才能真正了解打嗝的样子。加特林标准报告不给你,你必须从simulation.log文件中的数据计算出来。

【讨论】:

  • 感谢您的回复。我已经分析了应用程序并分析了日志文件,特别是垃圾收集器暂停,但我没有找到这个峰值的任何原因。可能如你所说,可能与物理组件有关。
猜你喜欢
  • 2010-09-17
  • 2013-07-01
  • 2011-12-06
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
相关资源
最近更新 更多