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

JMeter操作步骤

  1. 启动JMeter GUI。
  2. 为JMeter测试计划添加TCP Sampler Config,定义脚本中所有TCP Sampler的共用参数。
    1. 右键单击测试计划,选择Add > Config Element > TCP Sampler Config
      TCP Sampler Config路径
    2. 在TCP Sampler Config中,填写TCP Sampler的共用参数,例如Server Name or IP和Port Number。
      填写参数
  3. 为JMeter测试计划添加一个线程组,为线程组添加一个TCP Sampler。
    添加线程组
  4. 设置TCP Client classname,以TCPClientImpl为例。
    说明 JMeter中TCP Sampler可以通过三种方式实现,主要区别为内容的编码格式不同:
    • TCPClientImpl(默认的TCP Sampler):发送内容为编辑器中的纯文本。
    • BinaryTCPClientImpl:发送的内容是二进制字节(由编辑器中的十六进制字符转换而来)。
    • LengthPrefixedBinaryTCPClientImpl:在BinaryTCPClientImpl基础上,在发送内容上增加前缀。此前缀表示发送内容的长度。
  5. 根据您的实际压测需求,配置其他选项。
    TCP-JMeter配图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压测