跳到主要内容

SDKPerf命令行选项

要查看完整的命令行选项列表,请在启动 SDKPerf 时在命令提示符中输入 –hm(更多帮助)。

常用选项

以下是更常用的命令行选项:

命令行选项描述示例
连接选项
-cip=hostPubSub+ 事件代理的主机(通常是 IP:port-cip=192.168.1.100
-cu=user[@vpn]客户端用户名和消息 VPN 名称-cu=user01@vpn01
-cp=string客户端密码-cp=secret
-cc=int客户端连接数量-cc=1
-z=int启用压缩并指定压缩级别-z=1
订阅选项
-sql=list客户端将从中接收消息的队列名称列表-sql=Q/1,Q/2
-stl=list作为订阅应用的主题列表(如果与 -sql 一起使用,则映射到队列)-stl=T/a/b,T/c/d
-tqe=int每个客户端创建的临时队列端点数量-tqe=1
发布选项
-pql=list消息将被发布的队列名称列表-pql=Q/1,Q/2
-ptl=list消息将被发布的主题列表-ptl=T/a/b,T/c/d
-mt=string发布消息的消息类型:{持久 | 非持久 | 直接}
默认值:direct-mt=persistent
-mn=int要发布的消息总数-mn=10000
-mr=int每秒发布的消息数量(发布速率)-mr=100
-msa=list自动生成的二进制附件负载大小列表(以字节为单位)-msa=100,200,500
通用选项
-q启用安静模式以抑制实时消息速率-q
-md将所有接收到的消息以文本形式转储到屏幕上。不要在高消息速率下使用此选项。-md
-hm显示完整的命令行选项集-hm
-he显示一些示例命令行-he

JMS选项

JMS 用户需要考虑以下与 JNDI 配置相关的额外 CLI 选项。

命令行选项描述示例
-jcf=stringJMS 连接工厂。
默认值:/jms/cf/default-jcf=/JNDI/CF/demo
-jndi启用 JNDI 主题和队列查找。默认情况下,队列和主题端点是从会话创建的,而不是通过 JNDI 查找。-jndi

MQTT 选项

MQTT 用户应考虑以下与 MQTT QoS 和会话清理相关的额外 CLI 选项。

命令行选项描述示例
-mpq=intMQTT 发布者 QoS。设置发布的 MQTT 消息的服务质量(QoS)。
默认值:0;接受值:0、1 和 2。-mpq=1
-msq=intMQTT 订阅 QoS。设置请求的订阅的服务质量(QoS)。
默认值:0;接受值:0、1 和 2。
还可以通过在主题后附加 qos= 来覆盖每个订阅的默认订阅 QoS。例如:
-stl=test_topicqos=1-msq=1
-mcs=boolMQTT 标志,指示会话是否应被清理。
默认值:1(true);接受值:1(true)、0(false)-mcs=1

REST选项

REST 用户应考虑以下额外的 CLI 选项。

命令行选项描述示例
-spl=list服务器端口列表。定义 REST 消费者连接的端口的逗号分隔列表。-spl=8081

性能和延迟测量

延迟测量由几个选项控制。通常默认值被选择为可以通过仅添加 -l 到命令来启用延迟测量。然而,通常需要调整这些参数以匹配您的环境。对于高吞吐量测试,启用 Nagle 算法以提高网络效率是有用的。

命令行选项描述示例
-l启用延迟测量(默认值为无延迟)。-l
-psm启用平滑发布者。默认情况下,延迟测试启用此选项。-psm
-lg=int延迟粒度因子。默认值:0
控制桶大小。延迟粒度每增加一级,桶大小增加一倍。当前桶大小将打印在延迟统计信息中以供参考。-lg=4
-lb=int延迟桶数量。默认值:1024 个桶。最大值为 4096。当您在延迟百分位数中看到 N/A 时,增加桶的数量可能会有所帮助。-lb=4096
-lp=2设置延迟精度为小数点后的重要数字。对于亚毫秒级延迟测量很有用。-lp=2
-lwu=sec设置延迟预热时间(以秒为单位)。默认值因工具而异;基于 Java 的工具通常可以从更大的预热时间中受益。在预热期间到达的消息不会计入延迟测量。-lwu=10.0
-nagle启用 Nagle 算法(RFC 896),以实现更高的 TCP 吞吐量。-nagle

顺序检查

启用顺序检查后,发布的消息将在 Solace 消息中编码发布者 ID 和消息 ID。我们将具有相同发布者 ID 的所有消息集合称为“发布者流”。

消费者将在消息处理期间解码这些信息,并验证每个发布者流的收到的消息 ID 是否按顺序排列。每个发布者流收到的第一个消息 ID 将作为该流的起始点。

命令行选项描述示例
-oc启用顺序检查-oc
-pso=int发布者流偏移量。客户端将根据此偏移量分配发布者 ID。-pso=1
-poo=int发布者顺序偏移量。每个发布者流中的初始消息 ID 将应用此偏移量。-poo=100
-upt使用属性而不是二进制附件对完整性数据进行编码/解码。-upt

除非明确指定 -pso 选项,否则所有客户端将具有相同的发布者 ID。

示例输出

以下是工具的示例输出。此命令将使一个客户端在主题上发送一条消息并在同一主题上接收它。

$ sdkperf_java -cip=HOST -cu=user01@default -ptl=T/a -mn=1 -msa=100 -mr=1 -stl=T/a
  • -cip-cu 用于标识 PubSub+ 事件代理、消息 VPN 和客户端用户名
  • -ptl-stl 用于标识发布和订阅主题
  • -mn-mr 指定以 1 条消息/秒的速率发送一条消息
  • -msa 指定消息大小为 100 字节

SDKPerf 启动时,它会将环境信息打印到控制台。

CLASSPATH: :./lib/commons-cli-1.2.jar:./lib/commons-logging-1.1.3.jar:./lib/nativetimer.jar:./lib/sol-common-7.1.1.174.jar:./lib/sol-jcsmp-7.1.1.174.jar:./lib/sol-sdkperf-7.1.1.55.jar:./lib/sol-sdkperf-jcsmp-7.1.1.55.jar:./lib/thirdparty/*.jar:./lib/optional/log4j.jar
:./lib/optional/
JAVA: /usr/bin/java
SOLACE_VM_ARGS: -Xms512m -Xmx1024m
Run Info: CPU usage currently disabled.
Client naming used:
logging ID = perf_client000001
username = user01
vpn = default
client names = sdk generated.

在上述示例中,您可以看到 Java 类路径、JRE 位置和 VM 参数。此外,SDKPerf 还会打印有关客户端的信息,以便于在 PubSub+ 事件代理上轻松识别客户端。

在这些系统信息之后,SDKPerf 将为程序的每个阶段打印一条状态信息。

> Getting ready to init clients
> Adding subscriptions if required
> Getting ready to start clients.
> Starting publish.
PUB MR(5s)= 0, SUB MR(5s)= 0, CPU=0
======>Main thread finish
> Running sdkperf shutdown...
Pausing -ped time to allow clients to finish recv messages (2000 ms)

然后,最后在关闭时,它将打印汇总统计信息,概述已完成的工作。

-------------------------------------------------
Aggregate Stats (Total # clients: 1):
-------------------------------------------------
Total Messages transmitted = 1
Computed publish rate (msg/sec) = 1.0
-------------------------------------------------
Total Messages received across all subscribers = 1
Messages received with discard indication = 0
Computed subscriber rate (msg/sec across all subscribers) = 1.0

CPU usage = 0%

至少,SDKPerf 总是会打印发送和接收的消息数量以及计算出的消息速率。当工具用于测量延迟、消息顺序、消息完整性等时,它会根据需要打印更详细的统计信息。