Increasing Throughput on SMPP Links

We recently began using what we call an SMS Push application.  SMS Push allows us to send Text Messages to our subscribers in bulk.  Typically these messages are some Marketing promotion or a Customer Service announcement. The message text and a list of MDNs is provided to the application and it sends them serially, one at a time.  We wanted to speed that up.

The SMS Push application was provided by Quantum System Integrators in Costa Mesa, CA.  We’ve worked with them on several projects before and they’ve always high quality software and services with excellent customer support.  The application runs on Sun Solaris and is started from the shell command line.  It sends a predetermined messages to each MDN in a list provided as a command-line argument.  The application spawns a single instance of itself and sends the messages.  Through-put has been about 1 message per second, using an SMPP link to our Primal Technologies SMS-C.

To speed the delivery rate we first tweaked the configuration options of the application.  This is a simple messages per second parameter which seemed to have little effect.  We reduced each a bit on each of successive pushes without a noticeable difference.  We even tried decreasing the value of this parameter thinking possibly it had not been coded properly.  This, too, had no effect and QSI assured us that it had been coded correctly.

Next we asked Primal technologies to investigate the settings on their SMPP link.  They tweaked a bit and then told us that they had configured all of our SMPP links the same.  As through-put on our Inter-Carrier Gateway (ICG) service provider link is sometimes as high as 10 messages per second we knew there was lots of headroom.  We again went back to QSI and they suggested starting several instances of the application at once. We tried this and it worked, up to a point.  We could get 4 instances of the application started and the through-put scaled almost linearly, which is good.  We monitored the SMS message queue and saw no adverse impact, so we thought more instances could be started.  However, with the start of the fifth instance we received a UNIX error message saying the instance received no bind from the SMPP link.

So back to Primal Technologies.  yes, there were several limits in place.  First, this SMPP link was restricted to only 4 instances.  Second, the overall SMS-C could only spawn 16 instances, and most of these were being taken by the ICG link, so allowing the SMPP link used by SMS Push to have more would not matter.  Third and last, there was an overall limit on the number of messages per second the SMS-C could process.  This was a parameter setting and not a hardware limitation.  So Primal Technologies increased the total number of SMPP links available, increased the number accessible to SMS Push, and increased the limit on the number of messages per second.

Happily these steps finally allowed us to message our entire subscriber base in less than 2 hours.  Whether or not this is a Good Thing is an open question.

I should also mention that QSI is building into their application parameters to allow more fine-tuned control of the message delivery rate, so that manually spawning additional application instances will no longer be necessary.

One reply on “Increasing Throughput on SMPP Links”

Comments are closed.