๐ Happy Holidays! ๐ฅณ
Most of Solace is closed December 24โJanuary 1 so our employees can spend time with their families. We will re-open Thursday, January 2, 2024. Please expect slower response times during this period and open a support ticket for anything needing immediate assistance.
Happy Holidays!
Please note: most of Solace is closed December 25โJanuary 2, and will re-open Tuesday, January 3, 2023.
What is your favourite SDKPerf Command?!
During one of his office hours, @Aaron and @derrick_solace started talking about SDKPerf and some of the cool ways they use the tool with ๐ Watch it here!
What is YOUR favourite SDKPerf tool command? What do you use it for and how do you use it? What's your SDKPerf trikcsssss?!
Thanks @rey for asking the question and starting the conversation!
Comments
-
My favourite sdkperf command (after a discussion with @Aaron ):
Generate load with non-fixed message rate:
#!/bin/bash # issue: # to see nice charts in any monitoring, you need to create load with variable message-rate # Idea (from Aaron): # - run some sdkperf in parallel # - play around with -bd and -ibd (burst duration in seconds, interburst-duration in seconds) SDKPERF="./sdkperf_c -cip=localhost:55555 -cu=default@default -mt=persistent -mr=1000 -mn=1000000 -ptl='test/123'" $SDKPERF -bd=1 -ibd=11 & $SDKPERF -bd=3 -ibd=7 & $SDKPERF -bd=7 -ibd=19 & $SDKPERF -bd=5 -ibd=13 &
2 -
I tend to use simple publishing to a topic
-ptl
and subscribing to a topic-stl
the most, but if you want something fancier I think it's pretty common to have test message payloads in files. This command lets you publish the contents of those multiple files repeatedly:# Publish Messages from 3 files at a rate of .5 per second sdkperf_java.sh -cip localhost:55555 -cu default -ptl acme/rideshare/billing/receipt/created/0.0.1 -pal /private/tmp/codegen/sampleMessages/1.json,/private/tmp/codegen/sampleMessages/2.json,/private/tmp/codegen/sampleMessages/3.json -mn 100 -mr .5
0 -
One cool (and not so popular in my opinion) feature of SDKPerf is you can use it an REST echo server! Download the SDKPerf REST client and configure it to bind to a port of choice via
./sdkperf_rest.sh -spl=12345 -md -q
That way, SDK perf will bind to the specified port and act as a webhook endpoint, echoing any RDP request that comes to this port
Also, after pointing out from @Aaron ๐
3 -
One I like to use for troubleshooting, when I'm looking for specific troublesome messages, is to use it as a queue browser with the "-qb" flag,
./sdkperf_java.sh -cip localhost:55554 -sql Q/BrowseMeNow -qb -md > qb.log
Dumps all the messages to a log where you can then search them based on different criteria.
3 -
I'm a fan of -epl to add message headers. I frequently use it for message sequence number generation, but it can be used with many Session Properties.
For JCSMP it looks like this:
-epl "jcsmp.<propertyName>,<value>" (eg "jcsmp.GENERATE_SEQUENCE_NUMBERS,true")
Or for CCSMP:
epl="SESSION_SEND_SEQUENCE_NUMBER,1"
Full command for a publisher to add sequence number to every message:
sdkperf_java.bat -cip localhost -ptl topic -mn 10 -epl "jcsmp.GENERATE_SEQUENCE_NUMBERS,true"
3 -
Thanks for the ping, @Tamimi !
I do a similar trick to @himanshu, except whenever I install a new version I:
sdkperf_*.sh -hm > sdkperf.options
The option to insert data from a file is a favourite of mine:
sdkperf_*.sh -pal some_data.dat -ptl ...
Also, client mode is very useful for creating a very quick request/response responder client:
sdkperf_*.sh -stl request/topic -cm=reply ...
2