全部产品
云市场

如何进行 TCP 协议的压测

更新时间:2019-03-21 16:43:12

如果您需要对 TCP 协议的场景进行压测,您可以使用 JMeter 的 TCP Sampler 来编写脚本,然后将脚本文件上传至 PTS 发起压测。

JMeter 操作步骤

  1. 启动 JMeter GUI。

  2. 为 JMeter 测试计划添加 TCP Sampler Config,定义脚本中所有 TCP Sampler 的共用参数。

    1. 右键单击测试计划,选择 Add > Config Element > TCP Sampler Config。

      97192_1

    2. 在 TCP Sampler Config 中,填写 TCP Sampler 的共用参数,例如 Server Name or IP 和 Port Number。

      97192_2

  3. 为 JMeter 测试计划添加一个线程组,为线程组添加一个 TCP Sampler。

    97192_3

  4. 设置 TCP Client classname,以 TCPClientImpl 为例。

    说明

    JMeter 中 TCP Sampler 可以通过三种方式实现,主要区别为内容的编码格式不同:

    • TCPClientImpl(默认的 TCP Sampler):发送内容为编辑器中的纯文本;
    • BinaryTCPClientImpl:发送的内容是二进制字节(由编辑器中的十六进制字符转换而来);
    • LengthPrefixedBinaryTCPClientImpl:在 BinaryTCPClientImpl 基础上,在发送内容上增加前缀。此前缀表示发送内容的长度。
  5. 根据您的实际压测需求,配置其他选项。

    JMeter-TCP配图2

    配置说明如下:

    • 超时(毫秒):
      • Connect timeout:建立连接的超时时间,单位是毫秒;
      • Response timeout:等待响应的超时时间,单位是毫秒;
    • Re-use connection:是否复用前置 session 的连接;
    • Close connection:每次发送新数据之前,是否断开当前连接并新建连接;
    • Set NoDelay:勾选此项,消息将以独立的包发送;不勾选此项,较小的消息会合并在一个包中发送。
    • SO_LINGER:用于设置延迟关闭的时间,等待套接字发送缓冲区中的数据发送完成。未选中时,在关闭连接发送完FIN后会立即进行一些清理工作并返回。如果勾选了SO_LINGER选项,并且设置了值,则在清理之前会等待一段时间;
    • EOL:设定来自于服务器数据流的一个结束标识字节,如果没有设置则会一直读到输入流结束;
    • Text to send:填入纯文本的发送内容。

    说明

    • BinaryTCPClientImplLengthPrefixedBinaryTCPClientImpl 的配置与 TCPClientImpl 类似。区别是 BinaryTCPClientImpl 和 LengthPrefixedBinaryTCPClientImpl 的 Text to send 框中需要输入十六进制编码格式的内容,最终发送的内容为二进制数据。
    • 您也可以基于 TCPClientImpl 定义自己的实现方式,并将其放在上述的 TCP Sampler 的 TCPClient classname 中。

    其他常见配置,例如预处理、后置处理、正则表达式提取和断言组件,同样可结合 TCP Sampler 使用。

  6. 根据您的压测需要,参照上述步骤,配置多个线程或多个 TCP Sampler。

  7. 进行脚本调试,调试成功后,保存 .jmx 脚本文件。

PTS 操作步骤

将 .jmx 脚本、JAR 文件(如有)、CSV(如有)上传到 PTS,设置压测量级,即可随时发起压测。

详见 JMeter 原生压测