Due to some inefficiencies with our backend database, my VirtualCenter service currently returns performance data very slowly. I've increased the timeout to handle that on the VC client side of things, but the problem is crippling my efforts at a VI Perl- based performance gathering system. The error I'm seeing is this:
SOAP request error: 500 SSL read timeout:
at /usr/share/perl/5.8/VMware/VIM2Stub.pm line 180
SoapClient::request('SoapClient=HASH(0x981bf10)', 'QueryPerf', '<_this type="PerformanceManager">PerfMgr<...') called at /usr/share/perl/5.8/VMware/VIM2Stub.pm line 26568
VimService::QueryPerf('VimService=HASH(0x98084f4)', '_this', 'ManagedObjectReference=HASH(0x996e4f4)', 'querySpec', 'PerfQuerySpec=HASH(0xb8c8314)') called at /usr/share/perl/5.8/VMware/VIM2Runtime.pm line 532
ViewBase::invoke('PerformanceManager=HASH(0xb8c8014)', 'QueryPerf', 'querySpec', 'PerfQuerySpec=HASH(0xb8c8314)') called at /usr/share/perl/5.8/VMware/VIM2Runtime.pm line 1800
PerformanceManagerOperations::QueryPerf('PerformanceManager=HASH(0xb8c8014)', 'querySpec', 'PerfQuerySpec=HASH(0xb8c8314)') called at ./env_readout.pl line 136
Is there any way to cause VI Perl to expose the underlying SOAP objects, so I can manipulate the timeout myself, or (even better) is the timeout exposed somewhere by the API, and I just missed it?
Hi John,
1) No, we cannot retrieve the underlying SOAP objects.
2) Subroutine request in VIM2Runtime.pm is responsible for creating the SOAP request xml and send it to server over HTTP.
3) So there are two timeouts involved HTTPConnection timeout and SOAP request timeout.
4) Your error is regarding the SOAP timeout request.
As VIM2Runtime constructs the SOAP xml itself, there is no placeholder to specify the timeout limit.
On the other hand if it uses the packages like SOAP::LITE then its much easier to provide the placeholder to specify the timeout limit.
Like
my $soap = SOAP::Lite->proxy('http://endpoint.server/', timeout => 5);
Hope the above information helps you.
~ Sidharth
Thanks, ssurana. I suspected as much, but I was hoping I had missed something. Guess it's time to start digging into the code.