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

Reply via email to