It goes without saying that you did not configure for debug ?
Aarno
On 15 Mar 2008, at 01:56, Dave Clarke wrote:
Thanks for this Alejandro
I'll look at trying the fake smsc. The carrier has given me a
throughput of 50, and advised that I split this across 2 binds,
which I have done, setting the throughput figures at 25 and 25. I
never see any throttling erors.
The reason I set the max-pending-submits to 100 was that, with log
level 0, and max-pending-submits set to 10, I was able to see that
I was only able to send 10 submit_sm, and would then have to wait
for a submit_sm_resp before I could submit another message. I
thought that increasing to 100 would give me a better window, as
sometimes my submit_sm_resp seem to take forever. Maybe I need to
talk to the carrier about the length of time it takes to get the
submit_sm_resp back from them.
Thank for your input. I think I'll open a ticket with the carrier
in case it's simply a misconfig on their side.
Dave
On 3/15/08, Alejandro Guerrieri <[EMAIL PROTECTED]> wrote:
Dave,
I can't make a 100% accurate diagnostic without further tests, but
looks like the bottleneck is on the links with the carrier.
You can try using the fake smsc module instead of your links, and
queue a fair amount of traffic. If the bottleneck is on those
links, you'll get much better performance when using the fake smsc.
Probably, what it's happening is that the smsc is only accepting a
small amount of traffic, and maybe you should lower the throughput
values to avoid retries and throttling on the other side.
What I'd try:
* Try reducing max-pending-submits to 10. Experiment with other
values also. 100 looks rather high imho.
* Check on your logfiles if there's any "throttling errors".
* Also ask your smsc what's the maximum accepted rate and set the
thorughput value to that value.
Hope it helps,
Alejandro
On Fri, Mar 14, 2008 at 9:14 PM, Dave Clarke <[EMAIL PROTECTED]>
wrote:
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