playSMS Forum

Queries execution time grows up on highload

I try to scale up playsms by starting playsmsd on multiple servers. They all connect to the same database. After starting Apache JMeter to check throughput, queries execution time grow up to 6 seconds. There are many simple queries in mysql_slow.log. For example, SELECT * FROM playsms_tblSMSOutgoing WHERE p_status=‘0’ AND p_smsc=‘blocked’ AND flag_deleted=‘0’. All this fields have indexes.

Please help me fix this issue! I want to handle about 100 sms per second, but for now it handles only about 15 sms per second.

Do you use playSMS master or v1.4.3 ? If you’re using 1.4.3 please test it with master version instead. There are some changes in master version that should speed up performance.


Thanks a lot for answer!

Can i ask one more question please? Is it scalable solution to have multiple running playsmsd daemons that use the same database?

No, I dont think so. But I never try it, so I dont know.

But, it is possible with modified playsmsd. playSMS daemon is just reading a database and process it row by row, so if different playsmsd reading different part of database then the concurrent submit to gateway will increase too.

In single server you can increase concurrent process by changing these configs (edit config.php not config-dist.php and restart playSMS daemon after every edit):


Can you tell me how much SMS per second can be successfully handled by PlaySMS without the queue increasing?

The way concurrent process calculated is incorrect right now. Currently the number of concurrent process is limited to sendsmsd_chunk value to sendsmsd_queue * sendsmsd_chunk, so its 20 to 400. This calculation will be corrected soon.

SMS per second depends on how fast the process can be done, if its up to 1 second than you’ll have 20 to 400 SMS per second.