Bug #80830 [Opn]: Running out of local ports when using curl

From: Date: Thu, 04 Mar 2021 15:51:58 +0000
Subject: Bug #80830 [Opn]: Running out of local ports when using curl
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-232558@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=80830&edit=1 ID: 80830 Updated by: danack@php.net Reported by: external dot maik dot dieterich at bosch dot com Summary: Running out of local ports when using curl Status: Open Type: Bug Package: Network related Operating System: Windows Server 2019 PHP Version: 7.4.15 Block user comment: N Private report: N New Comment: This is a feature of Windows. It keeps network connections open for a long time by default. You could either work around this by "Adjust the MaxUserPort and TcpTimedWaitDelay settings" - https://docs.microsoft.com/en-us/biztalk/technical-guides/settings-that-can-be-modified-to-improve-network-performance Or you can re-use the same Curl object, which will almost certainly re-use the underlying network connection if possible, ``` $ch = curl_init($url); for($i = 0; $i < 5000; $i++) { curl_setopt($ch, CURLOPT_URL, $url); $response = curl_exec($ch); } curl_close($ch); ``` I'll leave it open, so that someone who is more sure that there is nothing to be done in PHP, can close it. Previous Comments: ------------------------------------------------------------------------ [2021-03-04 14:27:36] external dot maik dot dieterich at bosch dot com Description: ------------ We are having an application which runs in Apache and gets files via an API. These files are stored on a storage over a rest API. For transferring the files to the storage we are using PHP with curl. Php opens a local port to local port connection when a curl handle is initialized with a connection to an external server. This local connection stays in TIME_WAIT after the external connection and the curl handle is closed. When open connections with curl from command line without PHP these local port local port connections are not opened. Test script: --------------- for($i = 0; $i < 5000; $i++) { $ch = curl_init("your url"); $response = curl_exec($ch); curl_close($ch); } Expected result: ---------------- No connections in TIME_WAIT. Actual result: -------------- Many connections in TIME_WAIT. ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=80830&edit=1

« previous php.bugs (#232558) next »