akrasnov-drv opened a new issue, #10313: URL: https://github.com/apache/cloudstack/issues/10313
### problem `enableStaticNat` starts failing just after several uses. Actually I see that IP is assigned but the call still fails with timeout just after 3-4 uses For my test I created a number of VMs, and then tried to assign public IP to all of them sequentially: ``` for i in `cloudstack listVirtualMachines | jq ".virtualmachine[].id"` > do > ip=`cloudstack associateIpAddress networkId=_my-network-id_ | jq ".ipaddress.id"` > time cloudstack enableStaticNat ipaddressid=${ip} virtualmachineid=${i} > done { "success": true } real 0m9.272s user 0m0.259s sys 0m0.052s { "success": true } real 0m10.097s user 0m0.274s sys 0m0.033s { "success": true } real 0m10.301s user 0m0.260s sys 0m0.040s Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 446, in _make_request six.raise_from(e, None) File "<string>", line 3, in raise_from File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 441, in _make_request httplib_response = conn.getresponse() File "/usr/lib/python3.10/http/client.py", line 1375, in getresponse response.begin() File "/usr/lib/python3.10/http/client.py", line 318, in begin version, status, reason = self._read_status() File "/usr/lib/python3.10/http/client.py", line 279, in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") File "/usr/lib/python3.10/socket.py", line 705, in readinto return self._sock.recv_into(b) TimeoutError: timed out During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send resp = conn.urlopen( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 756, in urlopen retries = retries.increment( File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 534, in increment raise six.reraise(type(error), error, _stacktrace) File "/usr/lib/python3/dist-packages/six.py", line 719, in reraise raise value File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 700, in urlopen httplib_response = self._make_request( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 448, in _make_request self._raise_timeout(err=e, url=url, timeout_value=read_timeout) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 337, in _raise_timeout raise ReadTimeoutError( urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=8080): Read timed out. (read timeout=10) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/bin/cloudstack", line 11, in <module> load_entry_point('cs==2.7.1', 'console_scripts', 'cs')() File "/usr/lib/python3/dist-packages/cs/__init__.py", line 104, in main response = getattr(cs, command)(fetch_result=fetch_result, File "/usr/lib/python3/dist-packages/cs/client.py", line 213, in handler return self._request(command, **kwargs) File "/usr/lib/python3/dist-packages/cs/client.py", line 273, in _request response = session.send(prepped, File "/usr/lib/python3/dist-packages/requests/sessions.py", line 657, in send r = adapter.send(request, **kwargs) File "/usr/lib/python3/dist-packages/requests/adapters.py", line 529, in send raise ReadTimeout(e, request=request) requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=8080): Read timed out. (read timeout=10) real 0m10.357s user 0m0.281s sys 0m0.068s Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 446, in _make_request six.raise_from(e, None) File "<string>", line 3, in raise_from File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 441, in _make_request httplib_response = conn.getresponse() ... ``` I tried different configurations of network and VR, and got it always failing, in the best case after 6-7 successful assignments. large VR with 4 CPUS and several GB memory did not help neither. `time` for all failing ones shows `real 0m10.350s` or slightly more. Started from https://github.com/apache/cloudstack/discussions/10184 ### versions CloudStack 4.20.0.0 with https://github.com/apache/cloudstack/pull/10254/files applied (PR does not help with this) Ubuntu 22.04.5 LTS libvirt 8.0.0-1ubuntu7.10 isolated network over VLAN about 1000 public IPs in /20 ### The steps to reproduce the bug 1. Create number of VMs (I used 100, but looks like just several should be enough Repeat 2-3 for VMs in 1. till it starts failing (just after about 3-4 cycles in my case) 2. Use `associateIpAddress` to get public IP ID 3. Use `enableStaticNat` with VM ID and IP ID Initially `enableStaticNat` takes 9 seconds then increases to 10, and then just starts failing with timeout Here is a cycle doing the above ``` for i in `cloudstack listVirtualMachines | jq ".virtualmachine[].id"`; do ip=`cloudstack associateIpAddress networkId=${YOUR-NETWORK-ID-HERE} | jq ".ipaddress.id"` time cloudstack enableStaticNat ipaddressid=${ip} virtualmachineid=${i} done ``` ### What to do about it? Looks like the call is taking too much time to return. Should be optimized. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@cloudstack.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org