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
