Forum Discussion
scott_nixon_825
Apr 05, 2005Historic F5 Account
3DNS 4.6.3 SOAP is slow while being queried
3DNS 4.6.3 build 82
Our 3DNS that uses SOAP is extremley slow the time it takes to run
against the perl script they have that queries 3DNS.
It takes up 15 min to process the queries.
Customer perl script works as follows:
Calls routines based on the documentation in the API from F5: GET the data centers, wideip and VS in the wide IP/pool. For 18 wide-IPs (3 VsB objects each), it takes 14 seconds. For 1 wide-IP (2 VsH objects), it takes 4 seconds.
Current SOAP machine is 2.66Ghz processor with 512MB memory. 12393K running process, spending most of it's time in sbwait and connect status. Load level of the machine is 0, I don't see swap or paging usage.
Each connection/API call takes a HTTPS session startup, that's why it's slow.
Please note that the customer is commenting on the overall performance
problem on the 3DNS API. Also note that he's calling several methods
to get the data he wants.
Perhaps helping the customer to derive desirable bulk methods?
The bulk methods may be the only way to resolve the performance problem.
Since the performance metrics are already known to development I am
submitting this issue to dev central
Hoping DevCentral would be able to better answer the customer's questions
regarding how to get the data he desires using bulk methods instead of
using individual calls to acquire it.
- Currently, there is no way to add HTTP Keep-alive support to the SOAP::Lite client libraries so the overhead of the SSL negotiation on each method call is unavoidable.
- I've been looking at this for a while and as luck will have it, in version 0.65 of SOAP::Lite, the authors have exposed the HTTP request object allowing custom insertion of HTTP headers. This allows the user, in the client code, to inject the Authenticate header thus eliminating the need for the infamous request-with-no-auth, 401-error, request-with-auth, 200-success. By including the following line after your SOAP::Lite object instantiation, you'll bypass half of the round trips needed!
... $soap = SOAP::Lite -> uri('urn:iControl:System/SystemInfo') -> proxy($sURL); $soap->transport->http_request->header ( 'Authorization' => 'Basic ' . MIME::Base64::encode("$sUID:$sPWD", '') );
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects