Req #71832 [Com]: Support for persistent connections
| From: | rmoisto at gmail dot com | Date: | Tue, 15 May 2018 08:43:17 +0000 |
| Subject: | Req #71832 [Com]: Support for persistent connections | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-215257@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=71832&edit=1
ID: 71832
Comment by: rmoisto at gmail dot com
Reported by: rmoisto at gmail dot com
Summary: Support for persistent connections
Status: Open
Type: Feature/Change Request
Package: cURL related
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
In the meantime I've found out that DNS is already cached and it's enabled by default. But
still, measured by curl request times with a proxy that can hold keepalive connections are anywhere
from 100 ms to 800 ms faster. These requests go all over the world in parallel. That proxy however
is a pain to maintain and I'm sure doing this directly in PHP would be even faster.
Previous Comments:
------------------------------------------------------------------------
[2018-02-28 13:51:01] spam2 at rhsoft dot net
on a proper system the 4 ms should only hit once, normally you have as local dns-caching resolver on
127.0.0.1 on servers where it matters which eiter does recursion directly or forward to a fast
nameserver as near as possible but cache results anyways
------------------------------------------------------------------------
[2018-02-28 13:06:30] rmoisto at gmail dot com
I'm not sure where I got that 60 ms from. Currently curl is reporting connection time to
another server on the local network as 5 ms. 4 ms of that is name lookup. The total request time is
6 ms.
It would already be a bonus if curl didn't query the name server each time and cached the
results for a bit. Keeping a persistent connection would be even better.
------------------------------------------------------------------------
[2018-02-28 12:43:48] spam2 at rhsoft dot net
and within the LAN 1.4 ms while we talk here about fetch the whole page and not only connection and
with https below 5 ms
Concurrency Level: 1
Time taken for tests: 1.349 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 4075053 bytes
HTML transferred: 3778000 bytes
Requests per second: 741.49 [#/sec] (mean)
Time per request: 1.349 [ms] (mean)
Time per request: 1.349 [ms] (mean, across all concurrent requests)
Transfer rate: 2950.78 [Kbytes/sec] received
Concurrency Level: 1
Time taken for tests: 4.978 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 4038052 bytes
HTML transferred: 3778000 bytes
Requests per second: 200.88 [#/sec] (mean)
Time per request: 4.978 [ms] (mean)
Time per request: 4.978 [ms] (mean, across all concurrent requests)
Transfer rate: 792.14 [Kbytes/sec] received
------------------------------------------------------------------------
[2018-02-28 12:38:14] spam2 at rhsoft dot net
> For example even in my very fast local network the
> time spent establishing a connection is around 60 ms
then your error is somewhere else
the 26 ms at the bottom are non-keep-alive requests over vpn and WAN
[harry@srv-rhsoft:~]$ response-times.sh
DOMAIN: http://corecms
COUNT: 250
CMS UNCACHED: 2370 us
CMS CACHED: 978 us
STATIC HTM: 737 us
STATIC PHP: 879 us
FACTOR CMS/STATIC HTM: 3.2
FACTOR CMS/STATIC PHP: 2.7
FACTOR CACHED/STATIC HTM: 1.3
FACTOR CACHED/STATIC PHP: 1.1
FACTOR STATIC PHP/STATIC: 1.2
RUNTIME: 1.778
Concurrency Level: 1
Time taken for tests: 26.715 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 4074590 bytes
HTML transferred: 3777476 bytes
Requests per second: 37.43 [#/sec] (mean)
Time per request: 26.715 [ms] (mean)
Time per request: 26.715 [ms] (mean, across all concurrent requests)
Transfer rate: 148.95 [Kbytes/sec] received
------------------------------------------------------------------------
[2018-02-28 12:05:44] rmoisto at gmail dot com
As a workaround I'm in the process of building an nginx reverse proxy that can hold persistent
connections. The performance gains for EU - US connections are massive. Even with the nginx proxy
overhead requests are on average 900 ms faster.
------------------------------------------------------------------------
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=71832
--
Edit this bug report at https://bugs.php.net/bug.php?id=71832&edit=1