I tested kannel with fakesmsc, experimenting with different interval times
and message counts.
Due to the primitive implementation of main_connection_loop() in 
smsc_fake.c it has some impact when the interval is "too small". It trys to
read all messages from fakesmsc and when finished send the response of the
smsbox to fakesmsc. The behaviour is not optimal, but the overall
performance is stable.

When I turned on storing in a store-file, the effect ist that many messages
accumulate in the store file. When I have more than 2000 elements in store
and continue to send messages with a high rate, the performance goes down to
nearly zero. Matching ack's to msg and file writing consumes most of the
processor time. This is also due to the fact that implementation of
list_extract_matching() inefficient in this situation.

I want to make sure that 
* "all" messages are delivered and
* the troughput is stable also on in high load situations.

The following questions come to me:
* Is it safe to rely on sqlbox instead of a store-file, because we might
loose messages when one of the processes crash? - I think no.
* How do you come around this problem in production?

We were already thinking of implementing an improved queue with optimized
extract_matching procedure.

Any hints appreciated.

-- 
Andreas W.

+++ GMX DSL-Tarife 3 Monate gratis* +++ Nur bis 25.7.2004 +++
Bis 24.000 MB oder 300 Freistunden inkl. http://www.gmx.net/de/go/dsl


Reply via email to