What is your favourite SDKPerf Command?!

Tamimi Member, Administrator, Employee Posts: 499 admin

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!


  • Tamimi
    Tamimi Member, Administrator, Employee Posts: 499 admin

    Pinging @TomF to see what his favourite command is πŸ‘€

  • uherbst
    uherbst Member, Employee Posts: 123 Solace Employee
    edited April 2022 #3

    My favourite sdkperf command (after a discussion with @Aaron ):

    Generate load with non-fixed message rate:

    # 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 &

  • marc
    marc Member, Administrator, Moderator, Employee Posts: 923 admin
    edited April 2022 #4

    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

  • Tamimi
    Tamimi Member, Administrator, Employee Posts: 499 admin

    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 πŸ˜‰

  • mstobo
    mstobo Member, Employee Posts: 22 Solace Employee

    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.

  • himanshu
    himanshu Member, Employee Posts: 67 Solace Employee
    edited April 2022 #7

    My favorite command is:

    bash sdkperf_java.sh -hm

    This prints out ALL the parameters and what they mean (both basic and advanced). I love it because I will never be able to remember them all or remember what they represent.

  • solaceleah
    solaceleah Member, Employee Posts: 8 Solace Employee

    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:


    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"

  • TomF
    TomF Member, Employee Posts: 406 Solace Employee

    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 ...