Bug #80830 [Fbk->NoF]: Running out of local ports when using curl

From: Date: Sun, 19 Dec 2021 04:22:07 +0000
Subject: Bug #80830 [Fbk->NoF]: Running out of local ports when using curl
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-238476@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: php-bugs@lists.php.net Reported by: external dot maik dot dieterich at bosch dot com Summary: Running out of local ports when using curl -Status: Feedback +Status: No Feedback Type: Bug Package: Network related Operating System: Windows Server 2019 PHP Version: 7.4.15 Assigned To: cmb Private report: N New Comment: No feedback was provided. The bug is being suspended because we assume that you are no longer experiencing the problem. If this is not the case and you are able to provide the information that was requested earlier, please do so and change the status of the bug back to "Re-Opened". Thank you. Previous Comments: ------------------------------------------------------------------------ [2021-12-06 12:47:15] cmb@php.net PHP 7.4 is out of active support; is this still an issue for you with PHP 8.0 or 8.1? ------------------------------------------------------------------------ [2021-03-12 08:39:03] external dot maik dot dieterich at bosch dot com Hello, yes we are using apache2handler SAPI and each request initializes a curl handle. But also if I'm initialize a curl handle in a cli application and close it the connection I openend is closed but the corresponding local to local port connection, which i have not explicit opened, stays in TIME_WAIT. When I'm opening and close the same connection with curl from command line without PHP i can not see such a local to local port connection. Thanks for the support. ------------------------------------------------------------------------ [2021-03-09 11:54:57] cmb@php.net To clarify: you are not initializing multiple curl handles in a single request, but rather for different requests, and you are using the apache2handler SAPI? In this case there may indeed be a problem, since the SAPI intializes libcurl (curl_global_init()) at its startup and shuts it down (curl_global_cleanup()) at its shutdown, so libcurl might keep connections open, but may not reuse them. > It's causing localhost to localhost TIME_WAITs. Frankly, I have no idea why that happens. The curl extension is relatively thin wrapper around libcurl, so I wonder whether we set up or use libcurl inappropriately, or whether Apache or the SAPI interferes. ------------------------------------------------------------------------ [2021-03-09 08:23:25] michael dot mckeever at bosch dot com Thank you @danack and @cmb for the quick response. Your suggestions with reusing the the curl handle is correct if you're using a cli application and you're in control of the environment. The problem described by Maik is that if you're using apache you can't reuse curl handles. @rtrtrtrtrt, your comment is unfortunately not helping in this topic ;-) The key question is, why is the mass usage of curl.exe not causing TIME_WAITs and the php libcurl functions causing TIME_WAITs. Furthermore the php functinos are not causing TIME_WAITs to the called server as one would expect, but it's causing TIME_WAITs for some kind of local redirects. It's causing localhost to localhost TIME_WAITs. ------------------------------------------------------------------------ [2021-03-04 20:07:01] rtrtrtrtrt at dfdfdfdf dot dfd it's just how TCP works https://superuser.com/questions/173535/what-are-close-wait-and-time-wait-states ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=80830 -- Edit this bug report at https://bugs.php.net/bug.php?id=80830&edit=1

« previous php.bugs (#238476) next »