Hi, Having used kannel for a couple of years, I am now at a point where I need to start ramping up my throughput, but I am finding that I can't sustain any more than 2-3 messages a second through my 2x25 SMPP binds.
If I walk through my application: - PHP/Apache/Postgresql application presents messages to smsbox. On this occasion I try to send 2200 messages through. They are delivered to smsbox in blocks of 25 numbers. If I study smsbox.log, I see the entire process of passing the messages to smsbox takes 26 seconds. - smsbox then chops these up into individual messages and queues them. If I study smsbox-access.log, again I see all 2200 send-SMS requests added in about 26 seconds. So far so good. - If I now go to access.log, I see that I'm taking 22 MINUTES to do the 2200 transmits. Because this is so long, more customers come along with big sends, and soon I have 10,000 messages queued and waiting. Result is a system churning through 2-3 messages per second. I'm guessing this is a simple matter of my not understanding the correct settings for my max-pendings etc. What I'm hoping is to kick off a slightly high-level discussion on the factors I need to look at to achieve X messages per second, and sustain this level of trafic before I get a snowball effect with queued messages and a flood of DLRs. My thinking, which seems to have been wrong, was that if I have a through put to SMSC of 50msgs per second, and an ACK takes say 3 seconds to come back, then I should handle 3x50=150 pending messages, so I set max-pending-submits = 100 on both binds. Doesn't seem to have done the trick. I'd appreciate any views or suggestions on how I scale this thing. Let me know if you need more info. Thanks, Dave Points to note: - This is CVS today (20080314) - using file as store - All messages have DLR mask 31, so lots of DLRs coming in. - using mysql for dlrs - everything currently on a single Dual P4 IBM Netfinity, 4GB RAM. Not cutting edge, but a good solid system, RAID array etc. Config: # CORE group = core admin-port = 13000 smsbox-port = 13001 admin-password = bar status-password = foo log-file = "/logs/kannel1/kannel.log" access-log = "/logs/kannel1/access.log" dlr-storage = mysql store-type = file store-location = "/logs/kannel1.store" log-level = 1 group = mysql-connection id = mydlr host = localhost username = xx password = xx database = kannel_dlr max-connections = 1 # SMSC SMPP A 1 group = smsc smsc = smpp smsc-id = smpp_A host = xxx port = 6700 receive-port = 6700 system-type = "" service-type = CMT dest-addr-ton = 1 dest-addr-npi = 1 enquire-link-interval = 60 address-range = "" throughput = 25 log-file = "/logs/kannel1/smppA1.log" log-level = 1 max-pending-submits = 100 # SMSC SMPP A 2 group = smsc smsc = smpp smsc-id = smpp_A host = xxx port = 6700 receive-port = 6700 system-type = "" service-type = CMT dest-addr-ton = 1 dest-addr-npi = 1 enquire-link-interval = 60 address-range = "" throughput = 25 log-file = "/logs/kannel1/smppA2.log" log-level = 1 max-pending-submits = 100 # SMSBOX SETUP group = smsbox bearerbox-host = localhost sendsms-port = 13013 smsbox-id = wtsmsbox sendsms-chars = "0123456789 +-" log-file = "/logs/kannel1/smsbox.log" log-level = 1 access-log = "/logs/kannel1/smsbox-access.log" mo-recode = 1 max-pending-requests = 1024
