【问题标题】:Load testing for java client/server applicationjava客户端/服务器应用程序的负载测试
【发布时间】:2020-05-22 19:39:39
【问题描述】:

我已经编写了一个 java 客户端服务器应用程序(不是 http),我需要对其进行负载测试。但是,大多数工具(例如 jmeter 和grinder)似乎都是针对 http 请求的。有什么建议吗?

谢谢!

【问题讨论】:

    标签: java load-testing


    【解决方案1】:

    JMeter 允许编写插件。如果您的应用程序使用 HTTP 以外的协议,则该协议似乎是专有的,因此编写测试无论如何都需要一些自定义实现。 JMeter 允许这样做,强烈推荐。

    【讨论】:

      【解决方案2】:

      由于我们不知道您使用的是什么协议,因此请以易于扩展的方式编写您自己的客户端以进行负载测试。

      【讨论】:

        【解决方案3】:

        您可以查看Soatest,它声称是基于套接字的,并且应该能够使用您正在使用的任何网络协议(希望是 TCP/UDP)。

        【讨论】:

          【解决方案4】:

          您可以使用下面的基于JUnit4JUnit5 的负载运行器,它们可以简单地接受您的单元测试并在目标服务器上生成负载。这些不一定是 HTTP 测试,可以是任何带有 @Test 注释的测试

          负载配置如下所示,用于增加或减少负载:

          number.of.threads=2
          ramp.up.period.in.seconds=10
          loop.count=1
          

          您的负载测试将如下所示:

          @LoadWith("our_load_config.properties")
          @TestMapping(testClass = AnyTestEndPoint.class, testMethod = "anyTestMethod")
          @RunWith(ZeroCodeLoadRunner.class)
          public class LoadTest {
          
          }
          

          馈送到负载生成器的 JUnit 测试, 测试类如下所示:

          import org.junit.Test;
          
          public class AnyTestEndPoint {
          
              @Test
              public void anyTestMethod() throws Exception {
                 ...
                 // You can have your client code invoking the target server
                 ...
              }
          }
          

          注意: 您也可以向负载反应器提供多个 Junit 测试,以在服务器逻辑/api/进程的不同部分生成负载。

          访问HelloWorld Examples了解更多详情。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-09-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多