cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
1730
Views
0
Helpful
0
Comments
cdnadmin
Level 11
Level 11
This document was generated from CDN thread

Created by: Laurent TRELET on 11-03-2009 11:19:55 AM
Hello,
I have a problem with SOAP requests on the RISPORT service (CUCM v6.1).
I developped an application in order to find IpPadresses of the devices on my cluster (about 1400 devices). To do it, I first
execute AXL queries in order to get the devices list (executeSqlQuery...). then, I execute a SOAP request on the RSIPORT for
each device I have in my list.
 
for each phone (SEPXXXXXXXXXX)the request i send on the RISPORT is like this (on https://" + serveur +
"/realtimeservice/services/RisPort) :
 
---------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:SelectCmDevice soapenv:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/"
ns:ns1="http://schemas.cisco.com/ast/soap/">
<StateInfo xsi:type="xsd:string"/>
<CmSelectionCriteria href="#id0"/>
</ns1:SelectCmDevice><multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns2:CmSelectionCriteria" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns2="http://schemas.cisco.com/ast/soap/">
<MaxReturnedDevices xsi:type="xsd:unsignedInt">200</MaxReturnedDevices>
<Class xsi:type="xsd:string">Phone</Class>
<Model xsi:type="xsd:unsignedInt">255</Model>
<Status xsi:type="xsd:string">Registered</Status>
<NodeName xsi:type="xsd:string" xsi:nil="true"/>
<SelectBy xsi:type="xsd:string">Name</SelectBy>
<SelectItems soapenc:arrayType="ns2:SelectItem[1]" xsi:type="soapenc:Array"><item href="#id1"/>
</SelectItems>
</multiRef>
<multiRef id="id1" soapenc:root="0" soapenv:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns3:SelectItem" xmlns:ns3="http://schemas.cisco.com/ast/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<Item xsi:type="xsd:string">SEPXXXXXXXXXX</Item>
</multiRef>
</soapenv:Body>
</soapenv:Envelope>
--------------------------------------------------


This works well for the first devices but an error always appears at an unpredictable moment. This error is "HTTP error
500"... In the SOAP traces on the CUCM, i can read the following text. The last lines refers to an error I don't really
understand :
 
-------------------------------------------------
2009-03-11 11:45:32,331 ERROR [http-8443-Processor22] risport.RisBindingImpl - DeviceQuery->query  error=1
2009-03-11 11:45:33,303 INFO  [http-8443-Processor22] security.RequestRateControl - findInCache("SILCAXL")
2009-03-11 11:45:33,304 INFO  [http-8443-Processor22] security.RequestRateControl -

http://schemas.cisco.com/ast/soap/action/#RisPort#SelectCmDevice
2009-03-11 11:45:33,309 INFO  [http-8443-Processor22] risport.RisBindingImpl - 0 Last item: SEP0015CAB0CD3
2009-03-11 11:45:33,310 INFO  [http-8443-Processor22] risport.RisBindingImpl - selection=SEP0015CAB0CD3 stateinfo= tModel=255

tSubSystem=0 node2search=null maxValues=200 selectBy=Name
2009-03-11 11:45:33,326 ERROR [http-8443-Processor22] risport.RisBindingImpl - DeviceQuery->query  error=1
2009-03-11 11:45:34,212 INFO  [http-8443-Processor22] security.RequestRateControl - findInCache("SILCAXL")
2009-03-11 11:45:34,213 INFO  [http-8443-Processor22] security.RequestRateControl -

http://schemas.cisco.com/ast/soap/action/#RisPort#SelectCmDevice
2009-03-11 11:45:34,218 INFO  [http-8443-Processor22] risport.RisBindingImpl - 0 Last item: SEP0017E0354E46
2009-03-11 11:45:34,219 INFO  [http-8443-Processor22] risport.RisBindingImpl - selection=SEP0017E0354E46 stateinfo=

tModel=255 tSubSystem=0 node2search=null maxValues=200 selectBy=Name
2009-03-11 11:45:35,222 INFO  [http-8443-Processor22] security.RequestRateControl - findInCache("SILCAXL")
2009-03-11 11:45:47,278 INFO  [Thread-75] timedcache.MaxTimeToLiveCache - Reaping -

com.cisco.ccm.serviceability.soap.security.RequestRateControl
2009-03-11 11:45:47,279 INFO  [Thread-75] timedcache.MaxTimeToLiveCache - Cache entries, hits, misses 1:2426:9069
2009-03-11 11:45:52,319 INFO  [Thread-76] timedcache.MaxTimeToLiveCache - Reaping - com.cisco.ccm.axl.AXLRouter
2009-03-11 11:45:52,319 INFO  [Thread-76] timedcache.MaxTimeToLiveCache - Cache entries, hits, misses 1:263:2184
2009-03-11 11:46:07,647 INFO  [TLC_RisPerfmonQueryThread] controller.RisPerfmonQuery - run():wake up from suspend mode.
2009-03-11 11:46:07,648 INFO  [TLC_RisPerfmonQueryThread] controller.RisPerfmonQuery - init():Initializing perfmon query

handler...
-------------------------------------------------

 
It seems to have a problem of "RateControl". After seeing this, I tried to insert break of 6 seconds between each SOAP
requests and I have no error... But I have a lot of device and the time to get all IpPadresses is up to 3 hours !
 
So is there an limitation with SOAP request on the RISPORT ? I use the same code for execute AXL request for many
applications and i never had errors like that. I saw the limit of 200 devices maximum by response. So the only way I found to
get the IP Adresses of all my devices is to execute individual SOAP requests. How can i solve my problem ? How do you do the
get Ipadresses when you have more than 200 devices ?
 
Thank you in advance for your help.
 
Regards.
 

Subject: RE: CUCM RISPORT Requests to get Ipadresses
Replied by: David Staudt on 11-03-2009 01:46:04 PM
The RisPort service is throttled (see the Rate Control Mechanism section under Serviceability XML Programming.)  RisPort requests by default are limited to 15 per minute.  As you mention, up to 200 devices can be queried at a time, the trick is to:
 
- Get a list of all the device names to be queried, say, using Administrative AXL
- Create a SelectCmDevice requests the specifies the first 200 device names
- Repeat for the next set of 200 devices (at 15 requests per minute) until all devices have been retrieved.
 
Thus you can query theoretically 200 x 15 = 3000 devices per minute.  Some additional considerations:
 
- A single devicename can return multiple records.  This occurs if the device was registered to one UCM node, then reregistered to another.
- Other applications could be making RisPort requests at the same time, and adding to the throttle limit.  The application should be prepared for unexpected 500 response and have a self-throttle/back-off algorithm - it should NOT repeatedly resubmit the requests at a high rate.

Subject: RE: CUCM RISPORT Requests to get Ipadresses
Replied by: Laurent TRELET on 11-03-2009 03:37:28 PM
Thank you David for your answer. This is exactly she answer I was searching for.
 
Thank you again !

Subject: RE: CUCM RISPORT Requests to get Ipadresses
Replied by: Muhammad Sabir on 05-06-2009 08:06:48 PM
Looks like we can increase the number of requests per minute up to 18. Is there a way to increase the 200 devlice count, to say 300?

Subject: RE: CUCM RISPORT Requests to get Ipadresses
Replied by: David Staudt on 05-06-2009 10:10:09 PM
That limit is not configurable.
Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community:

Quick Links