Huge CPU raising using MMSROUTINGCALLBACK

Huge CPU raising using MMSROUTINGCALLBACK SearchSearch
Author Message
marc bazimon
Posted on Monday, February 16, 2009 - 01:50 pm:   

Hi,
We integrate use of mmsrouting callback in order to take account about the portability number.
But since we apply it , CPU had raise to 100 % CPU,
it seems that MMS delivery has been also raise at about 10 additionnal seconds,
is it normal or something in the configuration missing?

we had just add
MMSRoutingURL=http://aaa.bbb.ccc.ddd:yyy/MMSRouter on mmsc.ini

Thanks for advice, we are still in production, but if we have some mms happy hour , it could be frightening,

Marc

application/mswordscreenshot from mmsc
screenshot_MMSC.doc (126.5 k)
Des - NowSMS Support
Board Administrator
Username: Desosms

Post Number: 476
Registered: 08-2008
Posted on Monday, February 16, 2009 - 05:40 pm:   

Hi Marc,

Can you tell me which version you are currently running?

What is the typical CPU load if you temporarily disable the callback?

There were some performance optimisations that were recently implemented, but before I make any recommendations I want to run some version comparison tests on our end ... so it would help to know what version you are running.

--
Des
NowSMS Support
marc bazimon
New member
Username: Marc_orange

Post Number: 2
Registered: 01-2007
Posted on Tuesday, February 17, 2009 - 07:19 am:   

Hi Des
Thanks fo your quick answer,

our MMSC are Now SMS/MMS Gateway v2008.06.03
and we have got a 5 mms/s license.

For CPU load, when MMSROUTINGCALLBACK are not implemented the CPU load are about 5 %

Thanks for your help , as i said before we are still in production , we didnt do a rollback at this time, because there is only the delay in delivery that can be bad for service


BR
Marc
Des - NowSMS Support
Board Administrator
Username: Desosms

Post Number: 477
Registered: 08-2008
Posted on Tuesday, February 17, 2009 - 03:20 pm:   

Hi Marc,

This is puzzling. The routing callbacks do add some overhead, but they normally do not add this much overhead.

However, when I was testing, I noticed something. Actually 2 things.

If a callback returns an invalid route, no validation on the route information is performed.

This ends up causing a problem that triggers a high CPU utilisation loop, as the message is scanned repeatedly trying to determine its routing.

In fact, the problem in the callback could have long since been fixed, but there could still be one or more stuck messages.

This problem is partially fixed in an update. Validation of the routing information returned by the callback is still not performed, but the repeated scanning loop is fixed, so that MMS messages with invalid routing information don't cause a problem.

Here is what I would suggest...

Temporarily disable the routing callback. Preferably at a time of lighter message traffic so that few messages will be affected.

This requires editing the MMSC.INI file, and performing a service restart after the edit.

I expect that the CPU utilisation will remain high. If it does, then we know the area where the problem is.

If the CPU level lowers, then there is an unexplained problem in the routing callback processing that needs further investigation.

In either case, re-implement the routing callback.

Assuming that the CPU level stays high, how to resolve it?

Option 1: Update to the 2009 release candidate version at http://www.nowsms.com/download/nowsms2009.zip.

Option 2: Find the stuck messages. They will be under the VASPQ directory, and they will likely have older file dates (unless the callback is still returning invalid routes occasionally).

Let me know what you find.

--
Des
NowSMS Support
marc bazimon
New member
Username: Marc_orange

Post Number: 3
Registered: 01-2007
Posted on Tuesday, February 17, 2009 - 07:04 pm:   

thx Des,
when invalid route are send from mmsroutingcallback router , the response are "unknow".
can we create a mms outbound routing call "unknow" that we can configure as route message to vASP via => block/reject message.
could it be a solution to not have the loop ?
thx for advice
Marc
Des - NowSMS Support
Board Administrator
Username: Desosms

Post Number: 483
Registered: 08-2008
Posted on Tuesday, February 17, 2009 - 07:17 pm:   

Hi Marc,

I *think* you can do that.

What I know will work is if you return:

Route=BlockMessage

Defining an "MMSC Routing" for "unknow" that is "block/reject message" *should* work the same.

Try that as a quick fix. You'll know it is working because if you try to send to an invalid number from a phone, the MMSC will refuse to accept the message and return an error to the sending phone. (Unfortunately, how the error is handled does vary by phone.)

If the messages are still accepted by the MMSC, change the script to return "BlockMessage".

--
Des
NowSMS Support
marc bazimon
New member
Username: Marc_orange

Post Number: 4
Registered: 01-2007
Posted on Thursday, February 19, 2009 - 02:10 pm:   

Hi Des
We did the change :
- creation of a new route call unknown that is route to block/reject message
- make some cleaning in the stuck message.

We are now in about 20 % of cpu instead of 100 %, so it is a good thing,
we have still to clean message that become yesterday and today before change.

at longest term , we will update the MMSC anyway.
Thanks a lot for your help,
Br
Marc
application/mswordscreenshot from MMSC
screenshot_after_change.doc (94.2 k)