mirror of
https://github.com/3proxy/3proxy.git
synced 2026-10-30 14:45:49 +08:00
Compare commits
7 Commits
94feaf2728
...
a20f646169
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a20f646169 | ||
|
|
b9297dc4cf | ||
|
|
95fd3be6fa | ||
|
|
eb11c617b7 | ||
|
|
a146570533 | ||
|
|
626aac16bc | ||
|
|
c13c048f3f |
@ -729,12 +729,12 @@ foreach(PROXY_NAME proxy socks pop3p imapp smtpp ftppr tcppm udppm tlspr)
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
target_compile_definitions(${PROXY_NAME} PRIVATE
|
target_compile_definitions(${PROXY_NAME} PRIVATE WITHMAIN)
|
||||||
WITHMAIN
|
|
||||||
NOPORTMAP
|
|
||||||
)
|
|
||||||
|
|
||||||
if(NOT PROXY_NAME STREQUAL "udppm")
|
# each takes the main loop of its kind only: udppm UDP, the others TCP
|
||||||
|
if(PROXY_NAME STREQUAL "udppm")
|
||||||
|
target_compile_definitions(${PROXY_NAME} PRIVATE NOTCPMAIN)
|
||||||
|
else()
|
||||||
target_compile_definitions(${PROXY_NAME} PRIVATE NOUDPMAIN)
|
target_compile_definitions(${PROXY_NAME} PRIVATE NOUDPMAIN)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -744,8 +744,12 @@ foreach(PROXY_NAME proxy socks pop3p imapp smtpp ftppr tcppm udppm tlspr)
|
|||||||
target_compile_definitions(${PROXY_NAME} PRIVATE ANONYMOUS)
|
target_compile_definitions(${PROXY_NAME} PRIVATE ANONYMOUS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# port mappers take port, host and port as arguments, the others options
|
||||||
|
# only; one of the two is defined, as in src/Makefile.inc
|
||||||
if(PROXY_NAME STREQUAL "tcppm" OR PROXY_NAME STREQUAL "udppm" OR PROXY_NAME STREQUAL "tlspr")
|
if(PROXY_NAME STREQUAL "tcppm" OR PROXY_NAME STREQUAL "udppm" OR PROXY_NAME STREQUAL "tlspr")
|
||||||
target_compile_definitions(${PROXY_NAME} PRIVATE PORTMAP)
|
target_compile_definitions(${PROXY_NAME} PRIVATE PORTMAP)
|
||||||
|
else()
|
||||||
|
target_compile_definitions(${PROXY_NAME} PRIVATE NOPORTMAP)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
|||||||
@ -3,6 +3,9 @@
|
|||||||
Compares the speed and the cost of 3proxy versions, and of other proxies doing
|
Compares the speed and the cost of 3proxy versions, and of other proxies doing
|
||||||
the same job, on Linux.
|
the same job, on Linux.
|
||||||
|
|
||||||
|
Results of the latest comparison, with the setup they were measured on, are
|
||||||
|
in [RESULTS.md](RESULTS.md); the measurements are in [data/](data/).
|
||||||
|
|
||||||
## How the measurement is isolated
|
## How the measurement is isolated
|
||||||
|
|
||||||
The client, the proxy and the origin each run in a network namespace of
|
The client, the proxy and the origin each run in a network namespace of
|
||||||
@ -15,14 +18,29 @@ their own, linked by veth pairs:
|
|||||||
|
|
||||||
so they share no loopback, and a packet crosses the same path whichever proxy
|
so they share no loopback, and a packet crosses the same path whichever proxy
|
||||||
is measured. Each role also runs in a cgroup of its own pinned to separate
|
is measured. Each role also runs in a cgroup of its own pinned to separate
|
||||||
CPUs (`--cpus`, default `cli=0-3,prx=4-5,srv=6-7`), so one does not take CPU
|
CPUs (`--cpus`, default `cli=0-3,prx=4,srv=5-7` for 8 CPUs), so one does not
|
||||||
from another, and RPS steers what each veth receives to the receiver's CPUs.
|
take CPU from another, and RPS steers what each veth receives to the
|
||||||
The proxy's cgroup is created anew for every run, which is what makes its
|
receiver's CPUs, so the kernel's network work for a role is done on its own
|
||||||
CPU time and peak memory readable on their own.
|
CPUs too. The proxy's cgroup is created anew for every run, which is what
|
||||||
|
makes its peak memory readable on its own.
|
||||||
|
|
||||||
Every proxy is given the same CPUs: nginx gets as many workers and haproxy as
|
The proxy gets the fewest CPUs on purpose: the measurement is about the proxy,
|
||||||
many threads as the proxy cgroup has CPUs; 3proxy runs a thread per
|
so it has to be what runs out first. Every proxy is given the same CPUs: nginx
|
||||||
connection inside the same cpuset. Logging is off everywhere.
|
gets as many workers and haproxy as many threads as the proxy has CPUs;
|
||||||
|
3proxy runs a thread per connection inside the same cpuset. Logging is off
|
||||||
|
everywhere.
|
||||||
|
|
||||||
|
CPU time is the busy time of a role's CPUs read from `/proc/stat`: its
|
||||||
|
processes and the interrupts and softirqs handled there. The cgroup's own CPU
|
||||||
|
time is not enough: a kernel with `CONFIG_IRQ_TIME_ACCOUNTING` leaves the
|
||||||
|
softirqs out of it, and that is where much of the network work is done (a
|
||||||
|
quarter of a proxy's CPU in these tests).
|
||||||
|
|
||||||
|
Every run records which side set its pace (`bound`): the role whose CPUs were
|
||||||
|
busy at least 90% of the time, or which had a thread doing so (an iperf3
|
||||||
|
stream is one thread, so one busy core is its limit however many CPUs the
|
||||||
|
role has). A run bound by the client or the origin says only that the proxy
|
||||||
|
can do at least that much.
|
||||||
|
|
||||||
`none` is no proxy at all: the client reaches the origin through the proxy
|
`none` is no proxy at all: the client reaches the origin through the proxy
|
||||||
namespace with the kernel forwarding, the upper bound for every scenario.
|
namespace with the kernel forwarding, the upper bound for every scenario.
|
||||||
@ -35,11 +53,13 @@ For every run, in a CSV under `bench/results/`:
|
|||||||
|---|---|
|
|---|---|
|
||||||
| `gbit`, `rate` | throughput, requests per second for HTTP |
|
| `gbit`, `rate` | throughput, requests per second for HTTP |
|
||||||
| `p50_ms`, `p99_ms` | latency from wrk (closed loop: compare at equal load only) |
|
| `p50_ms`, `p99_ms` | latency from wrk (closed loop: compare at equal load only) |
|
||||||
| `prx_cpu_s` | CPU seconds the proxy used, all its threads and processes |
|
| `prx_cpu_s`, `prx_task_s` | busy CPU seconds of the proxy's CPUs, network work included; the CPU time of its processes alone |
|
||||||
| `cpu_s_per_gb`, `cpu_us_per_req` | the proxy's cost per unit of work: the fairest figure, least affected by which side was the limit |
|
| `cpu_s_per_gb`, `cpu_us_per_req` | the proxy's cost per unit of work: the fairest figure, least affected by which side was the limit |
|
||||||
| `peak_mb` | the proxy's peak memory |
|
| `peak_mb` | the proxy's peak memory |
|
||||||
| `cli_util`, `prx_util`, `srv_util` | how busy each role's CPUs were: a client or origin near 100% means the result says nothing about the proxy |
|
| `cli_util`, `prx_util`, `srv_util` | how busy each role's CPUs were |
|
||||||
| `errors`, `retrans` | socket errors and non-2xx answers; TCP retransmissions in the stream scenarios |
|
| `cli_thread`, `srv_thread` | the busiest client and origin thread, as a share of one CPU |
|
||||||
|
| `bound` | `proxy`, `client`, `origin`, or `none` when nothing was busy all the time |
|
||||||
|
| `errors`, `timeouts`, `retrans` | socket errors and non-2xx answers; requests slower than wrk's 2 seconds; TCP retransmissions in the stream scenarios |
|
||||||
|
|
||||||
Repetitions rotate the order of the proxies, so drift over time (heat, the
|
Repetitions rotate the order of the proxies, so drift over time (heat, the
|
||||||
host) falls on all of them alike; the summary gives medians.
|
host) falls on all of them alike; the summary gives medians.
|
||||||
@ -51,22 +71,32 @@ host) falls on all of them alike; the summary gives medians.
|
|||||||
| `stream1`, `stream1-down` | one iperf3 stream through a TCP relay (3proxy `tcppm`, nginx `stream`, haproxy `mode tcp`), upload and download |
|
| `stream1`, `stream1-down` | one iperf3 stream through a TCP relay (3proxy `tcppm`, nginx `stream`, haproxy `mode tcp`), upload and download |
|
||||||
| `stream16` | sixteen streams |
|
| `stream16` | sixteen streams |
|
||||||
| `http-ka-1k`, `http-ka-1m` | HTTP over kept-alive connections through an HTTP proxy (absolute URIs), 1 KB and 1 MB answers |
|
| `http-ka-1k`, `http-ka-1m` | HTTP over kept-alive connections through an HTTP proxy (absolute URIs), 1 KB and 1 MB answers |
|
||||||
|
| `http-ka-50k-2000` | 2000 clients at once, GET answered with 50 KB |
|
||||||
|
| `http-ka-2k-50k-2000` | the same, each request a POST with a 2 KB body |
|
||||||
| `http-close-1k` | a new connection for every request |
|
| `http-close-1k` | a new connection for every request |
|
||||||
|
| `connect-*` | the same loads through CONNECT tunnels: wrk and iperf3 run under proxychains-ng, so every connection they make asks the proxy for a tunnel to the origin (`connect-close-1k`: a tunnel for every request) |
|
||||||
|
| `socks-*` | the same through SOCKSv5 |
|
||||||
|
| `relay-*` | the same through a TCP relay to a fixed destination: 3proxy `tcppm`, nginx `stream`, haproxy `mode tcp` |
|
||||||
|
|
||||||
nginx is not a forward proxy: it answers absolute URIs by passing them to its
|
nginx is not a forward proxy: it answers absolute URIs by passing them to its
|
||||||
upstream, which is the origin here, and it has no CONNECT or SOCKS, so only
|
upstream, which is the origin here. Neither nginx nor haproxy has CONNECT or
|
||||||
these scenarios compare like with like.
|
SOCKS, so they take part in the HTTP and `relay-*` scenarios but not in the
|
||||||
|
`connect-*` and `socks-*` ones. tinyproxy
|
||||||
|
and squid are HTTP proxies, measured in the HTTP and `connect-*` scenarios;
|
||||||
|
dante is a SOCKS server, measured in the `socks-*` ones.
|
||||||
|
|
||||||
## Running
|
## Running
|
||||||
|
|
||||||
Root, `iproute2`, `iperf3`, `wrk`, `nginx` (with the stream module:
|
Root, `iproute2`, `iperf3`, `wrk`, `proxychains4` (proxychains-ng, for the `connect-*` and `socks-*` scenarios), `nginx` (with the stream module:
|
||||||
`libnginx-mod-stream` on Debian and Ubuntu) and, to compare with it,
|
`libnginx-mod-stream` on Debian and Ubuntu, `nginx-mod-stream` on
|
||||||
|
RHEL-like systems) and, to compare with it,
|
||||||
`haproxy`.
|
`haproxy`.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
bench/build.sh 0.9.9.1 1.0.1 # tags into bench/bin/
|
bench/build.sh 0.9.9.1 1.0.1 # tags into bench/bin/
|
||||||
NAME=devel bench/build.sh . # the working tree
|
NAME=devel bench/build.sh . # the working tree
|
||||||
CC="gcc -fcommon" bench/build.sh 0.8.13 # before 0.9, newer gcc
|
CC="gcc -fcommon" bench/build.sh 0.8.13 # before 0.9, newer gcc
|
||||||
|
CC="gcc -fpermissive" bench/build.sh 0.9.4 # 0.9.x with gcc 14 and later
|
||||||
|
|
||||||
sudo bench/bench.py \
|
sudo bench/bench.py \
|
||||||
--proxy none \
|
--proxy none \
|
||||||
@ -76,11 +106,25 @@ sudo bench/bench.py \
|
|||||||
--proxy nginx --proxy haproxy
|
--proxy nginx --proxy haproxy
|
||||||
```
|
```
|
||||||
|
|
||||||
|
`bench/report.py <csv>` turns a run into Markdown tables: throughput, the
|
||||||
|
proxy's CPU per gigabyte or per request, and its peak memory. With
|
||||||
|
`--machine NAME=a.csv,b.csv` once per machine it makes a single throughput
|
||||||
|
table of all of them, each cell their medians and their average.
|
||||||
|
|
||||||
After the binary, a 3proxy entry can carry options for both its services:
|
After the binary, a 3proxy entry can carry options for both its services:
|
||||||
`-s0` keeps 0.9.0 to 0.9.8, which use splice() by default, from using it, and
|
`-s1`, `-s2` and `-s3` splice downloads, uploads or both (`-s0` keeps 0.9.0 to
|
||||||
|
0.9.8, which use splice() both ways by default, from using it), and
|
||||||
`-ocTCP_NODELAY -osTCP_NODELAY` turns Nagle's algorithm off on the client and
|
`-ocTCP_NODELAY -osTCP_NODELAY` turns Nagle's algorithm off on the client and
|
||||||
server sockets.
|
server sockets.
|
||||||
|
|
||||||
|
haproxy can be measured with splice() too: `haproxy::splice-auto` lets its
|
||||||
|
heuristic splice a direction once reads fill the buffer three times in a row;
|
||||||
|
`haproxy::splice-response`, `haproxy::splice-request` and `haproxy::splice`
|
||||||
|
always splice the server's data, the client's, or both (`option
|
||||||
|
splice-response`, `option splice-request`), as 3proxy's `-s1`, `-s2` and `-s3`
|
||||||
|
do. nginx has no splice() support, so it has no such
|
||||||
|
variant.
|
||||||
|
|
||||||
`--scenario` picks scenarios, `--reps` and `--duration` set the repetitions
|
`--scenario` picks scenarios, `--reps` and `--duration` set the repetitions
|
||||||
and their length, `--netem "delay 1ms rate 10gbit"` puts a slower, longer link
|
and their length, `--netem "delay 1ms rate 10gbit"` puts a slower, longer link
|
||||||
between the client and the proxy, `--mtu` changes the links' MTU.
|
between the client and the proxy, `--mtu` changes the links' MTU.
|
||||||
@ -92,6 +136,10 @@ between the client and the proxy, `--mtu` changes the links' MTU.
|
|||||||
keep absolute figures for real hardware.
|
keep absolute figures for real hardware.
|
||||||
* wrk measures latency in a closed loop, so a slower proxy is also offered
|
* wrk measures latency in a closed loop, so a slower proxy is also offered
|
||||||
less load; compare latencies only between runs of similar throughput.
|
less load; compare latencies only between runs of similar throughput.
|
||||||
|
* The roles have CPUs of their own but share the memory: memory bandwidth,
|
||||||
|
which copying proxies use most, cannot be split, and on some hosts it,
|
||||||
|
rather than the CPU, sets the limit. A CPU waiting for memory counts as
|
||||||
|
busy, so such a limit shows as less work per busy second.
|
||||||
* Versions are built with the Makefile they shipped with, so compiler flags
|
* Versions are built with the Makefile they shipped with, so compiler flags
|
||||||
differ between them (0.8 builds with `-O2`, 0.9.9 and later with
|
differ between them (0.8 builds with `-O2`, 0.9.9 and later with
|
||||||
`-O3 -flto`) as they did for their users.
|
`-O3 -flto`) as they did for their users.
|
||||||
|
|||||||
390
bench/RESULTS.md
Normal file
390
bench/RESULTS.md
Normal file
@ -0,0 +1,390 @@
|
|||||||
|
# Benchmark results
|
||||||
|
|
||||||
|
3proxy against nginx, haproxy, squid, tinyproxy and dante on two machines,
|
||||||
|
as an HTTP proxy, through CONNECT and SOCKSv5 tunnels and as a TCP relay; and
|
||||||
|
3proxy's own versions against each other: 0.9.4, 1.0.1 and devel, with and
|
||||||
|
without splice(). The current figures are from 11-12 October 2026, for devel
|
||||||
|
with splice() by direction, pipes kept per connection and the automatic mode
|
||||||
|
(`-s`); the sessions before them, for the earlier devel, are at the end. How
|
||||||
|
the benchmark works is in [README.md](README.md); the measurements are in
|
||||||
|
[data/](data/), and `bench/report.py` turns them into the tables below.
|
||||||
|
|
||||||
|
## In short
|
||||||
|
|
||||||
|
* **Bulk data, copying:** devel moves 19-21 Gbit/s per CPU core through any
|
||||||
|
of its services (HTTP, CONNECT, SOCKS, `tcppm`), as 1.0.1 does: 1.4 times
|
||||||
|
squid, 1.3 to 2.2 times dante, 1.7 to 2.3 times nginx and haproxy as TCP
|
||||||
|
relays, 2.5 to 2.9 times 0.9.4 copying and 17 times tinyproxy.
|
||||||
|
* **Bulk data, splice():** about 40 Gbit/s on one stream through every
|
||||||
|
service, level with 0.9.4 and with haproxy splicing every connection; with
|
||||||
|
16 streams devel gets 33-35 Gbit/s, ahead of 0.9.4 (25-26) and haproxy
|
||||||
|
(27). 1 MB HTTP answers go 65% faster than copied (31 against 19 Gbit/s),
|
||||||
|
15% faster than haproxy splicing.
|
||||||
|
* **The automatic mode, `-s`,** came within 5% of the best fixed mode in
|
||||||
|
every scenario measured: it splices the bulk streams in both directions and
|
||||||
|
copies small requests. Forcing splice() (`-s3`, and 0.9.4 by default) costs
|
||||||
|
1 KB requests through tunnels and relays 12-21%.
|
||||||
|
* **Small requests:** squid (CONNECT) and dante (SOCKS) answer 1 KB requests
|
||||||
|
over kept-alive tunnels 8-45% faster than devel; nginx and haproxy answer
|
||||||
|
1.9 times more as TCP relays and 2.2 to 2.4 times more as HTTP proxies, and
|
||||||
|
1.6 to 3 times more when each request opens a new connection. 3proxy runs
|
||||||
|
a thread per connection; splice() cannot change that.
|
||||||
|
* **2000 clients, 50 KB answers:** devel is level with squid and dante in
|
||||||
|
tunnels (13.1-13.6k requests per second), with nginx and haproxy splicing
|
||||||
|
as an HTTP proxy (10-11k), ahead of haproxy copying (8.5k), and with nginx as a TCP relay copying (13.5k); haproxy
|
||||||
|
relaying with splice() is the fastest there, 21.9k against devel's 15.2k.
|
||||||
|
* **1.0.1** is level with devel in tunnels and relays, but held to 6k
|
||||||
|
requests per second as an HTTP proxy over kept-alive connections by a 10 ms
|
||||||
|
sleep removed in devel (see the earlier sessions).
|
||||||
|
* **16 KB buffers (`-b16384`)** save devel 17-22% of its memory with 2000
|
||||||
|
connections and cost 20-40% of the copying throughput; with `-s` they cost
|
||||||
|
nothing. 64 KB stays the default.
|
||||||
|
* **Memory:** with few connections 3proxy needs the least (8-17 MB against
|
||||||
|
30-54 MB for nginx and haproxy); with 2000 connections at once, a thread for
|
||||||
|
each costs it 150-200 MB against nginx's 90-115 MB and haproxy's 160-180 MB.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
| | M4 | Skylake |
|
||||||
|
|---|---|---|
|
||||||
|
| host | Apple M4 Pro laptop, UTM (Apple Virtualization) | OpenStack virtual machine, KVM |
|
||||||
|
| virtual machine | 8 CPUs, 8 GB | 8 CPUs (Intel Xeon, Skylake, 2.0 GHz), 8 GB |
|
||||||
|
| system | Ubuntu 24.04, Linux 6.8, aarch64 | AlmaLinux 10, Linux 6.12, x86_64 |
|
||||||
|
| nginx | 1.24.0 | 1.26.3 |
|
||||||
|
| haproxy | 2.8.16 | 3.0.5 |
|
||||||
|
| squid | 6.14 | 6.10 |
|
||||||
|
| tinyproxy | 1.11.1 | 1.11.2 |
|
||||||
|
| dante | 1.4.3 | 1.4.4 |
|
||||||
|
| wrk, iperf3 | 4.1.0, 3.16 | 4.2.0, 3.17.1 |
|
||||||
|
| proxychains-ng | 4.17 | 4.17 |
|
||||||
|
|
||||||
|
### How the client, the proxy and the origin were kept apart
|
||||||
|
|
||||||
|
* **Network:** each runs in a network namespace of its own, linked by veth
|
||||||
|
pairs (client 10.0.1.2 - 10.0.1.1 proxy 10.0.2.1 - 10.0.2.2 origin), so they
|
||||||
|
share no loopback and every proxy is crossed by the same path. MTU 1500.
|
||||||
|
* **CPU:** each runs in a cgroup pinned to CPUs of its own: the client
|
||||||
|
(wrk, iperf3) on CPUs 0-3, the proxy on CPU 4, the origin (nginx serving
|
||||||
|
files from tmpfs, iperf3 -s) on CPUs 5-7. RPS steers what each veth receives
|
||||||
|
to the receiving side's CPUs, so the kernel's network work for a role is
|
||||||
|
done on its own CPUs too. The proxy has the fewest CPUs on purpose: it has to
|
||||||
|
be what runs out first.
|
||||||
|
* **Every proxy gets the same CPU:** one nginx worker, one haproxy thread, and
|
||||||
|
3proxy's thread per connection, squid's, tinyproxy's and dante's processes
|
||||||
|
all confined to the same CPU.
|
||||||
|
* **CPU time** is the busy time of the role's CPUs from `/proc/stat`, its own
|
||||||
|
processes plus the interrupts and softirqs handled there (a quarter of a
|
||||||
|
proxy's time here), so a proxy is also charged for the kernel's work on its
|
||||||
|
connections - which is where splice() moves the copying.
|
||||||
|
* **Which side set the pace** is recorded for every run: the role whose CPUs,
|
||||||
|
or one thread of it, were busy at least 90% of the time.
|
||||||
|
* **Repetitions:** three runs of 10 seconds per proxy and scenario, the order
|
||||||
|
of the proxies rotated between repetitions; the tables give medians.
|
||||||
|
* **Tunnels:** wrk and iperf3 run under proxychains-ng, which opens a CONNECT
|
||||||
|
or SOCKSv5 tunnel for each connection they make, blocking in `connect()`
|
||||||
|
until the proxy has answered. This costs the client CPU time per connection,
|
||||||
|
so wrk gets more threads there (16 against 4).
|
||||||
|
|
||||||
|
### Proxies
|
||||||
|
|
||||||
|
| column | configuration |
|
||||||
|
|---|---|
|
||||||
|
| devel -s0 | devel, no splice (TCP_NODELAY is on by default) |
|
||||||
|
| devel -s1 (download) | splices what the server sends: answers, downloads |
|
||||||
|
| devel -s3 (both) | splices both directions |
|
||||||
|
| devel -s (auto) | both directions, each switched to splice() once two reads in a row fill 16 KB and back to copying after three small ones; an HTTP body of known length is spliced when 16 KB or more of it remain |
|
||||||
|
| devel -b16384 | devel with 16 KB buffers instead of 64 KB |
|
||||||
|
| 0.9.4 | 0.9.4, `-s0` (no splice) `-ocTCP_NODELAY -osTCP_NODELAY` |
|
||||||
|
| 0.9.4 splice | 0.9.4, which splices both directions by default, `-ocTCP_NODELAY -osTCP_NODELAY` |
|
||||||
|
| 1.0.1 | 1.0.1, `-ocTCP_NODELAY -osTCP_NODELAY` (built without splice) |
|
||||||
|
| nginx | `proxy_pass` to an upstream with `keepalive 1024`, `stream` for the TCP relay, `reuseport` |
|
||||||
|
| haproxy | `mode http` with `http-reuse always`, `mode tcp` for the TCP relay |
|
||||||
|
| haproxy splice-response (download) | `option splice-response` |
|
||||||
|
| haproxy splice (both) | `option splice-request` and `option splice-response` |
|
||||||
|
| haproxy splice-auto | `option splice-auto`: splices a direction once reads fill the buffer three times in a row |
|
||||||
|
| squid | no cache, no logs, `via off` |
|
||||||
|
| tinyproxy | `DisableViaHeader Yes`, critical messages only |
|
||||||
|
| dante | no authentication, one `sockd` process tree (`-N 1`) |
|
||||||
|
|
||||||
|
nginx has no splice() support. Neither nginx nor haproxy has CONNECT or SOCKS,
|
||||||
|
so they are measured as HTTP proxies and TCP relays only; squid and tinyproxy
|
||||||
|
only through CONNECT, dante only through SOCKS. 3proxy versions are built with
|
||||||
|
the Makefile they shipped with (`-O3 -flto` for 1.0.1 and devel, `-O2` for
|
||||||
|
0.9.4, which on gcc 14 also needs `-fpermissive`). Logging is off everywhere.
|
||||||
|
|
||||||
|
### Scenarios
|
||||||
|
|
||||||
|
| scenario | load |
|
||||||
|
|---|---|
|
||||||
|
| stream1, stream1-down | one iperf3 stream, upload and download |
|
||||||
|
| stream16 | 16 iperf3 streams, upload |
|
||||||
|
| ka-1k, http-ka-1k | 1 KB answers over 64 kept-alive connections |
|
||||||
|
| http-ka-1m | 1 MB answers over 16 kept-alive connections |
|
||||||
|
| ka-50k-2000, http-ka-50k-2000 | 2000 kept-alive connections, 50 KB answers |
|
||||||
|
| http-ka-2k-50k-2000 | the same, each request a POST with a 2 KB body |
|
||||||
|
| close-1k, http-close-1k | 64 connections, a new one for every request |
|
||||||
|
|
||||||
|
`http-*` go through the HTTP proxy (absolute URIs). The CONNECT, SOCKS and
|
||||||
|
relay tables run the same loads through a CONNECT tunnel, a SOCKSv5 tunnel or
|
||||||
|
a TCP relay to the origin (3proxy `tcppm`, nginx `stream`, haproxy
|
||||||
|
`mode tcp`): the HTTP requests are then plain HTTP inside the tunnel.
|
||||||
|
|
||||||
|
## How to read the tables
|
||||||
|
|
||||||
|
* Each cell: the median on the M4 / on the Skylake host / their average. TCP
|
||||||
|
streams and 1 MB HTTP answers in Gbit/s, the other HTTP scenarios in
|
||||||
|
thousands of requests per second.
|
||||||
|
* Each kind of proxying has two tables: the proxies copying through user
|
||||||
|
space (after "no proxy", the client talking to the origin with only the
|
||||||
|
kernel forwarding, for reference), then the proxies using splice().
|
||||||
|
* **Bold**: the best average of its table in the row, and any other whose runs
|
||||||
|
cannot be told apart from it: the range of its average (from the average of
|
||||||
|
each machine's slowest run to that of the fastest) reaches the best one's.
|
||||||
|
* \*: the best of the row, copying and splice tables together, by the same
|
||||||
|
rule - whether copying or splice() wins the scenario.
|
||||||
|
* CPU time per gigabyte or request and peak memory are in the data. CPU adds
|
||||||
|
little: every proxy ran at its CPU limit, so its CPU per unit of work is the
|
||||||
|
inverse of its throughput.
|
||||||
|
|
||||||
|
## HTTP proxy
|
||||||
|
|
||||||
|
Measured in one session on each machine ([data/](data/) `*-auto-http.csv`).
|
||||||
|
|
||||||
|
| scenario (M4 / Intel / average) | no proxy | ‖ | devel -s0 | devel -s0 -b16384 | nginx | haproxy |
|
||||||
|
|---|---:|:-:|---:|---:|---:|---:|
|
||||||
|
| http-ka-1k, k req/s | 120.8 / 129.3 / 125.0 | ‖ | 16.0 / 18.2 / 17.1 | 16.0 / 18.4 / 17.2 | 37.1 / 36.5 / 36.8 | **44.7 / 36.2 / 40.4** * |
|
||||||
|
| http-ka-1m, Gbit/s | 71.2 / 65.5 / 68.3 | ‖ | **22.4 / 15.7 / 19.1** | 13.7 / 9.4 / 11.6 | 12.8 / 5.6 / 9.2 | 5.8 / 7.3 / 6.6 |
|
||||||
|
| http-ka-50k-2000, k req/s | 86.1 / 85.2 / 85.7 | ‖ | **10.5 / 11.2 / 10.9** * | 9.2 / 8.2 / 8.7 | 11.3 / 9.0 / 10.1 | 9.8 / 7.2 / 8.5 |
|
||||||
|
| http-ka-2k-50k-2000, k req/s | 73.7 / 64.8 / 69.2 | ‖ | **9.6 / 9.6 / 9.6** * | 8.4 / 8.2 / 8.3 | 10.3 / 8.2 / 9.3 | 8.9 / 6.7 / 7.8 |
|
||||||
|
| http-close-1k, k req/s | 48.5 / 46.8 / 47.6 | ‖ | 5.2 / 4.7 / 4.9 | 5.2 / 4.7 / 5.0 | 13.5 / 13.2 / 13.3 | **16.7 / 14.7 / 15.7** |
|
||||||
|
|
||||||
|
| scenario (M4 / Intel / average) | devel -s1 (download) | devel -s3 (both) | devel -s (auto) | devel -s -b16384 | haproxy splice-response (download) | haproxy splice (both) |
|
||||||
|
|---|---:|---:|---:|---:|---:|---:|
|
||||||
|
| http-ka-1k, k req/s | 16.0 / 18.6 / 17.3 | 16.0 / 19.1 / 17.6 | 15.8 / 17.8 / 16.8 | 15.9 / 18.2 / 17.0 | **44.2 / 35.3 / 39.8** * | **44.9 / 34.6 / 39.7** * |
|
||||||
|
| http-ka-1m, Gbit/s | **36.2 / 27.1 / 31.6** * | **36.2 / 26.7 / 31.5** * | **36.3 / 25.4 / 30.9** * | **35.3 / 26.3 / 30.8** * | 27.9 / 26.6 / 27.3 | 27.3 / 27.3 / 27.3 |
|
||||||
|
| http-ka-50k-2000, k req/s | **10.4 / 10.2 / 10.3** * | **10.4 / 11.1 / 10.8** * | **10.5 / 10.5 / 10.5** * | **10.2 / 10.1 / 10.2** * | **12.0 / 9.2 / 10.6** * | **12.0 / 9.4 / 10.7** * |
|
||||||
|
| http-ka-2k-50k-2000, k req/s | **9.6 / 9.6 / 9.6** * | 9.6 / 9.4 / 9.5 | 9.4 / 9.8 / 9.6 | **9.4 / 9.7 / 9.6** * | **11.4 / 8.7 / 10.1** * | **11.3 / 8.4 / 9.9** * |
|
||||||
|
| http-close-1k, k req/s | 5.2 / 4.8 / 5.0 | 5.2 / 4.4 / 4.8 | 5.2 / 4.8 / 5.0 | 5.3 / 4.6 / 4.9 | **16.8 / 15.3 / 16.1** * | **16.9 / 15.1 / 16.0** * |
|
||||||
|
|
||||||
|
* splice() pays off for 1 MB answers, in any mode: 31 against 19 Gbit/s
|
||||||
|
copied, ahead of haproxy splicing (27). With 50 KB answers splicing neither
|
||||||
|
gains nor loses; with 1 KB answers or a new connection per request the mode
|
||||||
|
makes no difference.
|
||||||
|
* Since pipes are made when first needed and kept for the connection, `-s1`
|
||||||
|
no longer loses with 50 KB answers (9.6k against 8.7k requests per second
|
||||||
|
in the earlier session, against 9.6k copying).
|
||||||
|
* nginx and haproxy answer 2.2-2.4 times more 1 KB requests, 2.7-3.2 times
|
||||||
|
more when every request opens a new connection.
|
||||||
|
|
||||||
|
## CONNECT tunnel
|
||||||
|
|
||||||
|
Measured in one session on each machine, as were the SOCKS and relay tables
|
||||||
|
([data/](data/) `*-tunnels.csv`).
|
||||||
|
|
||||||
|
| scenario (M4 / Intel / average) | devel -s0 | 0.9.4 | 1.0.1 | tinyproxy | squid |
|
||||||
|
|---|---:|---:|---:|---:|---:|
|
||||||
|
| stream1-down, Gbit/s | **22.1 / 20.2 / 21.1** | 9.1 / 5.8 / 7.4 | **22.8 / 19.8 / 21.3** | 1.2 / 1.2 / 1.2 | 15.1 / 13.0 / 14.0 |
|
||||||
|
| stream16, Gbit/s | **21.1 / 18.9 / 20.0** | 8.7 / 6.0 / 7.3 | **21.1 / 19.1 / 20.1** | 1.3 / 1.2 / 1.2 | 17.6 / 12.1 / 14.8 |
|
||||||
|
| ka-1k, k req/s | 19.6 / 30.7 / 25.2 | 19.7 / 29.1 / 24.4 | 19.6 / 30.9 / 25.3 | 17.0 / 24.1 / 20.6 | **36.6 / 36.4 / 36.5** * |
|
||||||
|
| ka-50k-2000, k req/s | 11.2 / 11.5 / 11.3 | 8.3 / 8.2 / 8.3 | 11.2 / 12.7 / 12.0 | 2.3 / 2.4 / 2.3 | **16.3 / 11.0 / 13.6** * |
|
||||||
|
| close-1k, k req/s | **4.1 / 4.4 / 4.3** * | **4.2 / 4.6 / 4.4** * | 3.8 / 3.7 / 3.7 | **4.1 / 4.8 / 4.4** * | **5.3 / 3.4 / 4.4** * |
|
||||||
|
|
||||||
|
| scenario (M4 / Intel / average) | devel -s1 (download) | devel -s3 (both) | devel -s (auto) | 0.9.4 splice |
|
||||||
|
|---|---:|---:|---:|---:|
|
||||||
|
| stream1-down, Gbit/s | **47.5 / 32.0 / 39.8** * | **47.1 / 32.1 / 39.6** * | **47.5 / 31.6 / 39.5** * | **47.4 / 32.5 / 39.9** * |
|
||||||
|
| stream16, Gbit/s | 20.9 / 18.7 / 19.8 | 37.6 / 28.7 / 33.1 | **38.3 / 31.2 / 34.7** * | 24.1 / 27.7 / 25.9 |
|
||||||
|
| ka-1k, k req/s | 17.8 / 28.3 / 23.0 | 16.1 / 23.8 / 20.0 | **19.6 / 28.7 / 24.1** | 16.1 / 26.1 / 21.1 |
|
||||||
|
| ka-50k-2000, k req/s | **11.5 / 15.4 / 13.4** | 10.6 / 14.5 / 12.5 | **11.4 / 15.4 / 13.4** * | 10.6 / 15.0 / 12.8 |
|
||||||
|
| close-1k, k req/s | 4.0 / 4.2 / 4.1 | 3.8 / 3.8 / 3.8 | **4.1 / 4.4 / 4.3** * | 3.9 / 4.1 / 4.0 |
|
||||||
|
|
||||||
|
* tinyproxy stays at 1.2 Gbit/s whatever the load; squid manages 14-15 Gbit/s, devel 20 copying and 34-40 with
|
||||||
|
splice().
|
||||||
|
* With 16 upload streams `-s1` copies, as it should; `-s3` and `-s` splice
|
||||||
|
them. 0.9.4 splicing is level with devel on one stream but 25% behind it with
|
||||||
|
16.
|
||||||
|
* squid answers 1 KB requests 45% faster than devel and is level with it with
|
||||||
|
2000 clients (ahead on the M4, behind on the Skylake host).
|
||||||
|
* With a new tunnel per request the client is the limit on the M4
|
||||||
|
(proxychains does its work there): every proxy shows 4-5k requests per
|
||||||
|
second.
|
||||||
|
|
||||||
|
## SOCKSv5 tunnel
|
||||||
|
|
||||||
|
| scenario (M4 / Intel / average) | devel -s0 | 0.9.4 | 1.0.1 | dante |
|
||||||
|
|---|---:|---:|---:|---:|
|
||||||
|
| stream1-down, Gbit/s | **22.5 / 18.9 / 20.7** | 10.6 / 5.7 / 8.2 | **22.6 / 19.7 / 21.2** | 11.2 / 7.8 / 9.5 |
|
||||||
|
| stream16, Gbit/s | **21.1 / 18.5 / 19.8** | 8.7 / 5.8 / 7.3 | **21.0 / 19.2 / 20.1** | 14.5 / 15.2 / 14.8 |
|
||||||
|
| ka-1k, k req/s | 19.7 / 28.5 / 24.1 | 19.6 / 29.5 / 24.6 | 19.6 / 29.9 / 24.7 | **26.8 / 25.3 / 26.0** * |
|
||||||
|
| ka-50k-2000, k req/s | 10.9 / 13.1 / 12.0 | 8.2 / 7.3 / 7.8 | 11.0 / 12.6 / 11.8 | **14.7 / 11.6 / 13.1** * |
|
||||||
|
| close-1k, k req/s | 3.9 / 4.3 / 4.1 | **3.9 / 4.4 / 4.2** * | 3.6 / 3.8 / 3.7 | 3.8 / 1.5 / 2.7 |
|
||||||
|
|
||||||
|
| scenario (M4 / Intel / average) | devel -s1 (download) | devel -s3 (both) | devel -s (auto) | 0.9.4 splice |
|
||||||
|
|---|---:|---:|---:|---:|
|
||||||
|
| stream1-down, Gbit/s | **47.3 / 32.2 / 39.8** * | **47.7 / 32.7 / 40.2** * | **47.0 / 31.7 / 39.4** * | **47.5 / 31.3 / 39.4** * |
|
||||||
|
| stream16, Gbit/s | 20.9 / 17.8 / 19.4 | **37.5 / 29.4 / 33.5** * | **38.3 / 29.2 / 33.7** * | 24.2 / 26.8 / 25.5 |
|
||||||
|
| ka-1k, k req/s | 17.8 / 27.3 / 22.5 | 16.1 / 25.1 / 20.6 | **19.6 / 29.2 / 24.4** | 16.1 / 27.2 / 21.7 |
|
||||||
|
| ka-50k-2000, k req/s | **11.4 / 14.4 / 12.9** * | 10.5 / 14.4 / 12.5 | **11.4 / 15.1 / 13.2** * | **10.6 / 14.9 / 12.7** * |
|
||||||
|
| close-1k, k req/s | 3.7 / 3.7 / 3.7 | 3.6 / 3.8 / 3.7 | **3.9 / 4.1 / 4.0** | 3.7 / 4.0 / 3.8 |
|
||||||
|
|
||||||
|
* dante is 8% faster than devel with 1 KB requests and level with it with 2000
|
||||||
|
clients; devel moves 1.3-2.2 times dante's bulk data copying (20 against
|
||||||
|
9.5-15 Gbit/s) and 2.3-4.2 times with splice(). With a new tunnel per
|
||||||
|
request on the Skylake host dante manages 1.5k requests per second, devel
|
||||||
|
4.3k.
|
||||||
|
|
||||||
|
## TCP relay
|
||||||
|
|
||||||
|
| scenario (M4 / Intel / average) | devel -s0 | 0.9.4 | 1.0.1 | nginx | haproxy |
|
||||||
|
|---|---:|---:|---:|---:|---:|
|
||||||
|
| stream1-down, Gbit/s | **22.4 / 19.5 / 20.9** | 10.2 / 5.7 / 8.0 | **22.0 / 19.3 / 20.6** | 13.5 / 9.0 / 11.3 | 13.2 / 8.7 / 11.0 |
|
||||||
|
| stream16, Gbit/s | **20.9 / 19.0 / 20.0** | 8.8 / 5.8 / 7.3 | **20.9 / 18.3 / 19.6** | 13.5 / 9.7 / 11.6 | 8.9 / 8.7 / 8.8 |
|
||||||
|
| ka-1k, k req/s | 20.1 / 30.2 / 25.1 | 20.1 / 31.1 / 25.6 | 20.1 / 30.4 / 25.2 | **44.0 / 49.6 / 46.8** * | **45.6 / 46.8 / 46.2** * |
|
||||||
|
| ka-50k-2000, k req/s | **12.3 / 14.9 / 13.6** | 9.1 / 8.4 / 8.7 | **12.2 / 14.9 / 13.5** | **14.4 / 12.5 / 13.5** | 11.3 / 9.8 / 10.5 |
|
||||||
|
| close-1k, k req/s | 5.6 / 5.1 / 5.4 | 5.6 / 5.5 / 5.6 | 5.1 / 4.8 / 5.0 | 8.8 / 8.4 / 8.6 | **9.7 / 8.1 / 8.9** |
|
||||||
|
|
||||||
|
| scenario (M4 / Intel / average) | devel -s1 (download) | devel -s3 (both) | devel -s (auto) | 0.9.4 splice | haproxy splice (both) | haproxy splice-response (download) | haproxy splice-auto |
|
||||||
|
|---|---:|---:|---:|---:|---:|---:|---:|
|
||||||
|
| stream1-down, Gbit/s | 46.2 / 27.7 / 36.9 | **48.1 / 31.9 / 40.0** * | **47.8 / 32.1 / 39.9** * | **47.5 / 30.1 / 38.8** * | **46.9 / 31.2 / 39.1** * | **47.1 / 27.4 / 37.3** * | 30.2 / 30.7 / 30.5 |
|
||||||
|
| stream16, Gbit/s | 20.8 / 19.1 / 20.0 | **38.1 / 32.2 / 35.2** * | **38.3 / 30.5 / 34.4** * | 24.3 / 28.5 / 26.4 | 23.0 / 31.5 / 27.3 | 8.8 / 8.4 / 8.6 | 15.7 / 30.0 / 22.9 |
|
||||||
|
| ka-1k, k req/s | 18.1 / 28.1 / 23.1 | 16.3 / 27.4 / 21.9 | 20.0 / 29.7 / 24.9 | 16.5 / 26.4 / 21.4 | 32.7 / 37.2 / 35.0 | 39.6 / 41.5 / 40.5 | **46.4 / 46.3 / 46.4** * |
|
||||||
|
| ka-50k-2000, k req/s | 12.6 / 17.9 / 15.2 | 11.5 / 17.7 / 14.6 | 12.5 / 17.6 / 15.0 | 11.6 / 17.0 / 14.3 | 20.3 / 21.9 / 21.1 | **24.3 / 19.4 / 21.9** * | 17.5 / 19.3 / 18.4 |
|
||||||
|
| close-1k, k req/s | 5.2 / 4.9 / 5.0 | 5.1 / 4.9 / 5.0 | 5.6 / 5.3 / 5.4 | 5.2 / 4.7 / 5.0 | **10.1 / 8.8 / 9.4** * | **10.1 / 8.8 / 9.5** * | 9.6 / 8.1 / 8.9 |
|
||||||
|
|
||||||
|
* As a relay devel copies 1.7-2.3 times what nginx and haproxy do; with splice()
|
||||||
|
it is level with haproxy splicing on one stream and 26-29% ahead with 16.
|
||||||
|
haproxy's `splice-auto` reaches 30 Gbit/s on one stream, the others 37-40.
|
||||||
|
* nginx and haproxy answer 1.9 times more 1 KB requests, 1.6 times more with
|
||||||
|
a new connection for each.
|
||||||
|
* With 2000 clients and 50 KB answers devel and nginx are level copying
|
||||||
|
(13.5k); splice() takes devel to 15.2k and haproxy from 10.5k to 21.9k. With
|
||||||
|
2000 connections devel runs 2000 threads on one CPU, haproxy one event loop.
|
||||||
|
* Where splice() is forced, 1 KB requests lose 13-24% (devel `-s3`, 0.9.4,
|
||||||
|
haproxy `splice`); `-s` and `splice-auto` lose nothing.
|
||||||
|
|
||||||
|
## 16 KB buffers
|
||||||
|
|
||||||
|
`-b16384` against the default 64 KB, from the HTTP proxy session:
|
||||||
|
|
||||||
|
| | devel -s0 | devel -s0 -b16384 | devel -s | devel -s -b16384 |
|
||||||
|
|---|---:|---:|---:|---:|
|
||||||
|
| http-ka-1m, Gbit/s (average) | 19.1 | 11.6 | 30.9 | 30.8 |
|
||||||
|
| http-ka-50k-2000, k req/s (average) | 10.9 | 8.7 | 10.5 | 10.2 |
|
||||||
|
| peak memory with 2000 clients (POST + 50 KB), MB, M4 / Skylake | 199 / 156 | 166 / 128 | 192 / 155 | 150 / 128 |
|
||||||
|
| peak memory with 16 streams, MB, M4 | 72 | 34 | | |
|
||||||
|
|
||||||
|
Copying with 16 KB buffers takes four times as many system calls for the same
|
||||||
|
data, which costs 20-40% of the throughput; with splice() the bulk of the data
|
||||||
|
goes through the pipe and the buffer size hardly matters. The memory saved
|
||||||
|
with 2000 clients, 17-22%, is far less than the buffers' size would suggest. A smaller buffer also limits what data filters see of a body, and
|
||||||
|
`tlspr` needs more than 16 KB.
|
||||||
|
|
||||||
|
## Earlier sessions
|
||||||
|
|
||||||
|
The tables below are from devel before the automatic mode, whose `-s` then
|
||||||
|
spliced both directions always, making a pair of pipes for each mapping
|
||||||
|
(`sockmap()` call), and before squid, tinyproxy and dante were added. In the
|
||||||
|
first table "devel" is `-s0` and "devel splice" `-s3` of today. The haproxy
|
||||||
|
splice columns there come from a second session an hour later, with plain
|
||||||
|
haproxy run again to see how far the conditions moved: by 2.5% or less on the
|
||||||
|
M4 and 7.5% or less on the Skylake host, except for one origin-bound case
|
||||||
|
(-9.7%).
|
||||||
|
|
||||||
|
* A few results were limited by the client or the origin rather than by the
|
||||||
|
proxy, which can then do more than shown: on the M4, devel splice with single
|
||||||
|
and 16 streams (the receiving iperf3 thread at a full core), haproxy with 16
|
||||||
|
streams, and several of the 1 MB HTTP runs. The per-run `bound` column in
|
||||||
|
[data/](data/) has the detail; `bench/report.py` on one machine's files marks
|
||||||
|
them.
|
||||||
|
* http-ka-50k-2000: every proxy but haproxy leaves some requests waiting longer
|
||||||
|
than wrk's 2 second limit (counted as timeouts in the data, 140-540 a run);
|
||||||
|
haproxy serves the 2000 connections more evenly, with none over 2 seconds but
|
||||||
|
a median wait 2 to 3 times longer.
|
||||||
|
|
||||||
|
### Throughput
|
||||||
|
|
||||||
|
| scenario (M4 / Intel / average) | no proxy | ‖ | 0.9.4 | 1.0.1 | devel | nginx | haproxy | ‖ | 0.9.4 splice | devel splice | haproxy splice-auto | haproxy splice |
|
||||||
|
|---|---:|:-:|---:|---:|---:|---:|---:|:-:|---:|---:|---:|---:|
|
||||||
|
| stream1, Gbit/s | 62.0 / 44.4 / 53.2 | ‖ | 8.3 / 5.5 / 6.9 | 22.1 / 19.1 / 20.6 | **22.0 / 19.9 / 21.0** | 13.5 / 9.8 / 11.6 | 13.6 / 9.7 / 11.7 | ‖ | 25.1 / 29.2 / 27.1 | **45.7 / 31.4 / 38.6** * | 29.5 / 30.6 / 30.1 | **44.7 / 32.3 / 38.5** * |
|
||||||
|
| stream16, Gbit/s | 141.2 / 150.5 / 145.9 | ‖ | 8.7 / 5.6 / 7.2 | **20.9 / 18.9 / 19.9** | **20.9 / 18.8 / 19.8** | 13.5 / 9.9 / 11.7 | 9.5 / 9.2 / 9.3 | ‖ | 24.5 / 28.3 / 26.4 | **37.8 / 31.2 / 34.5** * | 15.9 / 30.3 / 23.1 | 22.1 / 31.5 / 26.8 |
|
||||||
|
| stream1-down, Gbit/s | 61.8 / 43.1 / 52.5 | ‖ | 8.8 / 5.6 / 7.2 | **22.4 / 18.8 / 20.6** | **22.1 / 19.4 / 20.8** | 13.6 / 9.7 / 11.7 | 13.6 / 9.3 / 11.5 | ‖ | **47.9 / 34.4 / 41.1** * | 47.4 / 32.0 / 39.7 | 30.4 / 31.0 / 30.7 | **47.6 / 33.7 / 40.6** * |
|
||||||
|
| http-ka-1k, k req/s | 120.3 / 127.1 / 123.7 | ‖ | 14.1 / 19.2 / 16.7 | 6.0 / 6.1 / 6.1 | 15.8 / 18.1 / 17.0 | 37.0 / 36.5 / 36.8 | **44.3 / 37.3 / 40.8** * | ‖ | 13.4 / 14.6 / 14.0 | 14.9 / 13.8 / 14.4 | **44.1 / 37.2 / 40.7** * | **44.1 / 38.0 / 41.1** * |
|
||||||
|
| http-ka-1m, Gbit/s | 71.6 / 67.5 / 69.5 | ‖ | 8.3 / 5.8 / 7.1 | 12.5 / 12.4 / 12.4 | **21.9 / 18.3 / 20.1** | 12.6 / 5.8 / 9.2 | 6.0 / 7.6 / 6.8 | ‖ | **33.0 / 26.6 / 29.8** * | **35.3 / 23.9 / 29.6** * | 5.9 / 24.2 / 15.1 | 28.0 / 26.7 / 27.4 |
|
||||||
|
| http-ka-50k-2000, k req/s | 84.5 / 85.7 / 85.1 | ‖ | 7.6 / 7.0 / 7.3 | 9.0 / 10.3 / 9.6 | **10.4 / 10.5 / 10.5** * | 11.0 / 9.2 / 10.1 | 9.6 / 7.3 / 8.4 | ‖ | 9.1 / 9.4 / 9.3 | 9.9 / 9.0 / 9.4 | 9.6 / 7.7 / 8.6 | **11.9 / 9.0 / 10.4** * |
|
||||||
|
| http-close-1k, k req/s | 48.7 / 52.1 / 50.4 | ‖ | 5.0 / 4.8 / 4.9 | 4.4 / 4.0 / 4.2 | 5.2 / 4.8 / 5.0 | 13.3 / 12.9 / 13.1 | **16.6 / 15.1 / 15.9** * | ‖ | 4.8 / 4.4 / 4.6 | 5.0 / 4.4 / 4.7 | **16.7 / 15.1 / 15.9** * | **16.8 / 15.5 / 16.1** * |
|
||||||
|
|
||||||
|
|
||||||
|
### Splice by direction
|
||||||
|
|
||||||
|
devel splices what the server sends with `-s1` (downloads), what the client
|
||||||
|
sends with `-s2` (uploads), both with `-s3`; haproxy's matching settings are
|
||||||
|
`option splice-response`, `option splice-request` and both. The 2000 client
|
||||||
|
scenario here sends a 2 KB POST body with each request and gets 50 KB back
|
||||||
|
(`http-ka-2k-50k-2000`). Same setup and markings as above; measured in a
|
||||||
|
session of their own ([data/](data/) `*-splice-direction.csv`).
|
||||||
|
|
||||||
|
| scenario (M4 / Intel / average) | no proxy | ‖ | devel -s0 | haproxy | ‖ | devel -s1 | devel -s3 | haproxy splice-response | haproxy splice |
|
||||||
|
|---|---:|:-:|---:|---:|:-:|---:|---:|---:|---:|
|
||||||
|
| stream1, Gbit/s | 61.6 / 45.5 / 53.6 | ‖ | **22.4 / 19.0 / 20.7** | 13.1 / 9.5 / 11.3 | ‖ | 22.4 / 19.5 / 21.0 | **44.1 / 31.9 / 38.0** * | 13.6 / 9.7 / 11.7 | **46.3 / 30.7 / 38.5** * |
|
||||||
|
| stream16, Gbit/s | 140.6 / 147.1 / 143.8 | ‖ | **21.1 / 19.2 / 20.2** | 9.0 / 8.9 / 8.9 | ‖ | 20.9 / 18.7 / 19.8 | **38.2 / 32.3 / 35.2** * | 9.2 / 9.1 / 9.2 | 23.2 / 33.3 / 28.3 |
|
||||||
|
| stream1-down, Gbit/s | 63.7 / 47.0 / 55.3 | ‖ | **22.3 / 19.5 / 20.9** | 13.8 / 9.5 / 11.7 | ‖ | **47.9 / 33.0 / 40.5** * | **46.3 / 30.7 / 38.5** * | **46.9 / 32.3 / 39.6** * | **47.4 / 32.6 / 40.0** * |
|
||||||
|
| http-ka-1k, k req/s | 120.0 / 127.6 / 123.8 | ‖ | 15.9 / 19.5 / 17.7 | **44.2 / 37.1 / 40.7** * | ‖ | 15.3 / 17.0 / 16.1 | 15.0 / 14.9 / 14.9 | **44.0 / 37.0 / 40.5** * | **44.1 / 35.0 / 39.5** * |
|
||||||
|
| http-ka-1m, Gbit/s | 71.0 / 67.2 / 69.1 | ‖ | **22.3 / 17.5 / 19.9** | 5.8 / 7.7 / 6.8 | ‖ | **35.6 / 24.7 / 30.2** * | **34.6 / 24.5 / 29.5** * | 26.4 / 27.7 / 27.1 | 26.5 / 25.9 / 26.2 |
|
||||||
|
| http-ka-2k-50k-2000, k req/s | 73.7 / 64.7 / 69.2 | ‖ | **9.5 / 9.7 / 9.6** | 8.8 / 7.2 / 8.0 | ‖ | 9.0 / 8.4 / 8.7 | 8.7 / 7.6 / 8.1 | **11.2 / 8.7 / 10.0** * | **11.2 / 9.0 / 10.1** * |
|
||||||
|
| http-close-1k, k req/s | 49.0 / 43.4 / 46.2 | ‖ | 5.1 / 4.9 / 5.0 | **16.5 / 15.9 / 16.2** * | ‖ | 5.0 / 4.7 / 4.9 | 5.0 / 4.2 / 4.6 | **16.7 / 15.0 / 15.8** * | **16.8 / 15.5 / 16.2** * |
|
||||||
|
|
||||||
|
|
||||||
|
* Each option splices the direction it names: with `-s1` an upload stream
|
||||||
|
goes at the copying speed and a download stream at the splicing one, as with
|
||||||
|
haproxy's `splice-response`.
|
||||||
|
* For bulk downloads `-s1` gets all of splice()'s gain; `-s3` is needed only
|
||||||
|
for bulk uploads (stream1, stream16).
|
||||||
|
* Small requests and 50 KB answers gain nothing from splicing in 3proxy, in
|
||||||
|
either direction: devel `-s0` stays ahead of `-s1` and `-s3`. haproxy gains
|
||||||
|
25% with 2000 clients from splicing the answers; there it is ahead of devel by
|
||||||
|
4-5%.
|
||||||
|
|
||||||
|
### Grace delay with splice
|
||||||
|
|
||||||
|
`-s1` without grace delay, with the setting suggested in the documentation
|
||||||
|
(`-g8000,3,10`: wait 10 ms before reading once 3 reads in a row averaged 8 KB or
|
||||||
|
less), and with one meant to wait on answers only (`-g65536,2,10`: any 2 reads
|
||||||
|
in a row; an HTTP request body is read at once, an answer of 50 KB or more is
|
||||||
|
not). Measured in a session of their own ([data/](data/) `*-grace.csv`).
|
||||||
|
|
||||||
|
| scenario (M4 / Intel / average) | -s1, no grace delay | -s1 -g8000,3,10 | -s1 -g65536,2,10 |
|
||||||
|
|---|---:|---:|---:|
|
||||||
|
| stream1, Gbit/s | **22.0 / 20.0 / 21.0** * | **22.1 / 19.7 / 20.9** * | **22.4 / 20.1 / 21.3** * |
|
||||||
|
| stream16, Gbit/s | **20.8 / 19.5 / 20.2** * | **20.9 / 18.4 / 19.7** * | **20.7 / 19.1 / 19.9** * |
|
||||||
|
| stream1-down, Gbit/s | **48.1 / 32.7 / 40.4** * | 28.6 / 33.0 / 30.8 | 18.3 / 32.5 / 25.4 |
|
||||||
|
| http-ka-1k, k req/s | 15.4 / 15.4 / 15.4 | **15.5 / 16.4 / 16.0** * | **15.5 / 16.6 / 16.0** * |
|
||||||
|
| http-ka-1m, Gbit/s | **35.6 / 25.5 / 30.5** * | **35.5 / 25.2 / 30.3** * | **36.1 / 25.4 / 30.8** * |
|
||||||
|
| http-ka-2k-50k-2000, k req/s | **9.0 / 8.3 / 8.6** * | **9.0 / 8.3 / 8.7** * | **9.1 / 8.5 / 8.8** * |
|
||||||
|
| http-close-1k, k req/s | **5.1 / 4.5 / 4.8** * | **5.1 / 4.6 / 4.8** * | **5.1 / 4.7 / 4.9** * |
|
||||||
|
|
||||||
|
|
||||||
|
* Grace delay makes little difference here: 4% more 1 KB requests over
|
||||||
|
kept-alive connections, nothing elsewhere - except on the M4 with a single
|
||||||
|
download stream, where it costs 40% (`-g8000,3,10`) to 60% (`-g65536,2,10`)
|
||||||
|
of the throughput. These links are fast and local: reads are rarely small,
|
||||||
|
so the delay seldom applies, and when it does it mostly adds waiting. It is
|
||||||
|
meant for slow links carrying small packets, which this benchmark does not
|
||||||
|
have.
|
||||||
|
|
||||||
|
## Caveats
|
||||||
|
|
||||||
|
* Both machines are virtual: their CPUs cannot be pinned to physical cores, so
|
||||||
|
absolute figures move between sessions; compare within a table.
|
||||||
|
* The roles have CPUs of their own but share the memory, and memory bandwidth,
|
||||||
|
which copying proxies use most, cannot be split. On the Skylake host it may
|
||||||
|
well be the limit; a CPU waiting for memory counts as busy, so this shows as
|
||||||
|
less work per busy second rather than as idle time.
|
||||||
|
* wrk measures in a closed loop: a slower proxy is offered less load, so
|
||||||
|
latencies compare only between runs of similar throughput, and requests over
|
||||||
|
2 seconds are left out of its latency figures.
|
||||||
|
* The haproxy versions differ between the machines (2.8 and 3.0), and so,
|
||||||
|
slightly, do squid, tinyproxy and dante.
|
||||||
|
* In the tunnel scenarios proxychains-ng's work is done in the client: with a
|
||||||
|
new tunnel for every request it sets the pace on the M4. Runs with a new
|
||||||
|
tunnel per request or 2000 clients count a few failed requests (at most 34
|
||||||
|
in a run of 40,000 or more), every proxy alike.
|
||||||
|
|
||||||
379
bench/bench.py
379
bench/bench.py
@ -27,6 +27,7 @@ import statistics
|
|||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
|
import threading
|
||||||
import time
|
import time
|
||||||
|
|
||||||
CG = "/sys/fs/cgroup/3proxy-bench"
|
CG = "/sys/fs/cgroup/3proxy-bench"
|
||||||
@ -34,8 +35,12 @@ CG = "/sys/fs/cgroup/3proxy-bench"
|
|||||||
# client 10.0.1.2 -- 10.0.1.1 proxy 10.0.2.1 -- 10.0.2.2 origin
|
# client 10.0.1.2 -- 10.0.1.1 proxy 10.0.2.1 -- 10.0.2.2 origin
|
||||||
CLI_ADDR, PRX_IN, PRX_OUT, SRV_ADDR = "10.0.1.2", "10.0.1.1", "10.0.2.1", "10.0.2.2"
|
CLI_ADDR, PRX_IN, PRX_OUT, SRV_ADDR = "10.0.1.2", "10.0.1.1", "10.0.2.1", "10.0.2.2"
|
||||||
HTTP_PORT, TCP_PORT, ORIGIN_HTTP, ORIGIN_TCP = 3128, 5201, 8080, 5201
|
HTTP_PORT, TCP_PORT, ORIGIN_HTTP, ORIGIN_TCP = 3128, 5201, 8080, 5201
|
||||||
|
# a TCP relay to the origin's web server, standing in for CONNECT where the
|
||||||
|
# proxy has none (nginx, haproxy)
|
||||||
|
RELAY_HTTP = 5280
|
||||||
|
SOCKS_PORT = 1080
|
||||||
|
|
||||||
FILES = {"1k": 1024, "100k": 100 * 1024, "1m": 1024 * 1024}
|
FILES = {"1k": 1024, "50k": 50 * 1024, "100k": 100 * 1024, "1m": 1024 * 1024}
|
||||||
|
|
||||||
# name: (kind, parameters)
|
# name: (kind, parameters)
|
||||||
SCENARIOS = {
|
SCENARIOS = {
|
||||||
@ -44,10 +49,51 @@ SCENARIOS = {
|
|||||||
"stream1-down": ("stream", {"streams": 1, "reverse": True}),
|
"stream1-down": ("stream", {"streams": 1, "reverse": True}),
|
||||||
"http-ka-1k": ("http", {"file": "1k", "conns": 64}),
|
"http-ka-1k": ("http", {"file": "1k", "conns": 64}),
|
||||||
"http-ka-1m": ("http", {"file": "1m", "conns": 16}),
|
"http-ka-1m": ("http", {"file": "1m", "conns": 16}),
|
||||||
|
"http-ka-50k-2000": ("http", {"file": "50k", "conns": 2000}),
|
||||||
|
"http-ka-2k-50k-2000": ("http", {"file": "50k", "conns": 2000, "body": 2048}),
|
||||||
"http-close-1k": ("http", {"file": "1k", "conns": 64, "close": True}),
|
"http-close-1k": ("http", {"file": "1k", "conns": 64, "close": True}),
|
||||||
|
# Through tunnels: the load generators run under proxychains, so each of
|
||||||
|
# their connections asks the proxy for one to the origin, with CONNECT
|
||||||
|
# (HTTP proxies) or SOCKSv5. And the same load through a TCP relay to a
|
||||||
|
# fixed destination (3proxy tcppm, nginx stream, haproxy mode tcp).
|
||||||
|
"connect-stream1-down": ("stream", {"streams": 1, "reverse": True, "via": "connect"}),
|
||||||
|
"connect-stream16": ("stream", {"streams": 16, "via": "connect"}),
|
||||||
|
"connect-ka-1k": ("http", {"file": "1k", "conns": 64, "via": "connect"}),
|
||||||
|
"connect-ka-50k-2000": ("http", {"file": "50k", "conns": 2000, "via": "connect"}),
|
||||||
|
"connect-close-1k": ("http", {"file": "1k", "conns": 64, "close": True, "via": "connect"}),
|
||||||
|
"socks-stream1-down": ("stream", {"streams": 1, "reverse": True, "via": "socks"}),
|
||||||
|
"socks-stream16": ("stream", {"streams": 16, "via": "socks"}),
|
||||||
|
"socks-ka-1k": ("http", {"file": "1k", "conns": 64, "via": "socks"}),
|
||||||
|
"socks-ka-50k-2000": ("http", {"file": "50k", "conns": 2000, "via": "socks"}),
|
||||||
|
"socks-close-1k": ("http", {"file": "1k", "conns": 64, "close": True, "via": "socks"}),
|
||||||
|
"relay-stream1-down": ("stream", {"streams": 1, "reverse": True, "via": "relay"}),
|
||||||
|
"relay-stream16": ("stream", {"streams": 16, "via": "relay"}),
|
||||||
|
"relay-ka-1k": ("http", {"file": "1k", "conns": 64, "via": "relay"}),
|
||||||
|
"relay-ka-50k-2000": ("http", {"file": "50k", "conns": 2000, "via": "relay"}),
|
||||||
|
"relay-close-1k": ("http", {"file": "1k", "conns": 64, "close": True, "via": "relay"}),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TOOLS = {}
|
||||||
|
|
||||||
|
|
||||||
|
def tool(*names):
|
||||||
|
"""A tool by its absolute path: sudo's secure_path may leave out where
|
||||||
|
it was installed, /usr/local/bin for a wrk built by hand. Several names
|
||||||
|
are alternatives."""
|
||||||
|
name = names[0]
|
||||||
|
if name not in TOOLS:
|
||||||
|
for n in names:
|
||||||
|
path = shutil.which(n) or shutil.which(
|
||||||
|
n, path="/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin")
|
||||||
|
if path:
|
||||||
|
break
|
||||||
|
if not path:
|
||||||
|
sys.exit(f"{' or '.join(names)} not found")
|
||||||
|
TOOLS[name] = path
|
||||||
|
return TOOLS[name]
|
||||||
|
|
||||||
|
|
||||||
def sh(cmd, check=True, **kw):
|
def sh(cmd, check=True, **kw):
|
||||||
return subprocess.run(cmd, shell=True, check=check, text=True,
|
return subprocess.run(cmd, shell=True, check=check, text=True,
|
||||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, **kw).stdout
|
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, **kw).stdout
|
||||||
@ -142,8 +188,22 @@ def cg_remove(role):
|
|||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
|
|
||||||
|
|
||||||
|
def cg_kill(role):
|
||||||
|
"""Whatever is left in a role's cgroup, e.g. after an interrupted run."""
|
||||||
|
try:
|
||||||
|
pids = cg_read(f"{CG}/{role}/cgroup.procs").split()
|
||||||
|
except OSError:
|
||||||
|
return
|
||||||
|
for pid in pids:
|
||||||
|
try:
|
||||||
|
os.kill(int(pid), signal.SIGKILL)
|
||||||
|
except ProcessLookupError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def cg_down():
|
def cg_down():
|
||||||
for role in ("cli", "prx", "srv"):
|
for role in ("cli", "prx", "srv"):
|
||||||
|
cg_kill(role)
|
||||||
cg_remove(role)
|
cg_remove(role)
|
||||||
try:
|
try:
|
||||||
os.rmdir(CG)
|
os.rmdir(CG)
|
||||||
@ -160,6 +220,60 @@ def cg_usage(role):
|
|||||||
return 0.0
|
return 0.0
|
||||||
|
|
||||||
|
|
||||||
|
TICK = os.sysconf("SC_CLK_TCK")
|
||||||
|
|
||||||
|
|
||||||
|
def cpu_busy():
|
||||||
|
"""Busy and total ticks per CPU. Busy counts interrupts and softirqs too:
|
||||||
|
a kernel with IRQ time accounting leaves them out of the cgroup's CPU
|
||||||
|
time, and that is where much of the network work is done."""
|
||||||
|
busy = {}
|
||||||
|
with open("/proc/stat") as f:
|
||||||
|
for line in f:
|
||||||
|
if not line.startswith("cpu") or line.startswith("cpu "):
|
||||||
|
continue
|
||||||
|
name, *v = line.split()
|
||||||
|
v = [int(x) for x in v]
|
||||||
|
# user nice system idle iowait irq softirq steal
|
||||||
|
busy[int(name[3:])] = (v[0] + v[1] + v[2] + v[5] + v[6] + v[7], sum(v[:8]))
|
||||||
|
return busy
|
||||||
|
|
||||||
|
|
||||||
|
def role_busy(before, after, cpus):
|
||||||
|
"""Busy seconds of a role's CPUs, and the share of them that was busy."""
|
||||||
|
b = t = 0
|
||||||
|
for c in cpus:
|
||||||
|
b += after[c][0] - before[c][0]
|
||||||
|
t += after[c][1] - before[c][1]
|
||||||
|
return b / TICK, (b / t if t else 0.0)
|
||||||
|
|
||||||
|
|
||||||
|
def thread_times(role):
|
||||||
|
"""CPU ticks per thread of everything in a role's cgroup."""
|
||||||
|
times = {}
|
||||||
|
try:
|
||||||
|
tids = cg_read(f"{CG}/{role}/cgroup.threads").split()
|
||||||
|
except OSError:
|
||||||
|
return times
|
||||||
|
for tid in tids:
|
||||||
|
try:
|
||||||
|
with open(f"/proc/{tid}/stat") as f:
|
||||||
|
v = f.read().rsplit(")", 1)[1].split()
|
||||||
|
times[tid] = int(v[11]) + int(v[12])
|
||||||
|
except (OSError, IndexError, ValueError):
|
||||||
|
pass
|
||||||
|
return times
|
||||||
|
|
||||||
|
|
||||||
|
def busiest_thread(before, after, wall):
|
||||||
|
"""The busiest thread's share of one CPU: one thread at 100% is a limit
|
||||||
|
however many CPUs its role has (iperf3 runs a stream in a thread)."""
|
||||||
|
top = 0
|
||||||
|
for tid, t in after.items():
|
||||||
|
top = max(top, t - before.get(tid, 0))
|
||||||
|
return top / TICK / wall if wall else 0.0
|
||||||
|
|
||||||
|
|
||||||
def cg_peak(role):
|
def cg_peak(role):
|
||||||
try:
|
try:
|
||||||
return int(cg_read(f"{CG}/{role}/memory.peak")) / 2**20
|
return int(cg_read(f"{CG}/{role}/memory.peak")) / 2**20
|
||||||
@ -183,10 +297,26 @@ def spawn(ns, role, argv, log):
|
|||||||
stderr=subprocess.STDOUT, preexec_fn=enter)
|
stderr=subprocess.STDOUT, preexec_fn=enter)
|
||||||
|
|
||||||
|
|
||||||
|
LAST_CLIENT_THREAD = [0.0]
|
||||||
|
|
||||||
|
|
||||||
def run_in(ns, role, argv, timeout):
|
def run_in(ns, role, argv, timeout):
|
||||||
|
"""Run a load generator to its end. Its busiest thread's share of a CPU
|
||||||
|
is kept in LAST_CLIENT_THREAD, read just before it exits."""
|
||||||
p = spawn(ns, role, argv, subprocess.PIPE)
|
p = spawn(ns, role, argv, subprocess.PIPE)
|
||||||
out, _ = p.communicate(timeout=timeout)
|
t0 = time.time()
|
||||||
return out.decode("utf-8", "replace")
|
top = {}
|
||||||
|
buf = []
|
||||||
|
reader = threading.Thread(target=lambda: buf.append(p.stdout.read()))
|
||||||
|
reader.start()
|
||||||
|
while p.poll() is None:
|
||||||
|
for tid, t in thread_times(role).items():
|
||||||
|
top[tid] = t
|
||||||
|
time.sleep(0.5)
|
||||||
|
reader.join(timeout)
|
||||||
|
wall = time.time() - t0
|
||||||
|
LAST_CLIENT_THREAD[0] = max(top.values()) / TICK / wall if top and wall else 0.0
|
||||||
|
return (buf[0] if buf else b"").decode("utf-8", "replace")
|
||||||
|
|
||||||
|
|
||||||
def stop(p):
|
def stop(p):
|
||||||
@ -241,13 +371,17 @@ http {{
|
|||||||
listen {SRV_ADDR}:{ORIGIN_HTTP} backlog=65535 reuseport;
|
listen {SRV_ADDR}:{ORIGIN_HTTP} backlog=65535 reuseport;
|
||||||
root {www};
|
root {www};
|
||||||
default_type application/octet-stream;
|
default_type application/octet-stream;
|
||||||
|
# the files answer a POST too, its body read and thrown away
|
||||||
|
error_page 405 =200 $uri;
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
""")
|
""")
|
||||||
log = open(os.path.join(work, "origin.out"), "w")
|
log = open(os.path.join(work, "origin.out"), "w")
|
||||||
procs = [spawn("bsrv", "srv", ["nginx", "-c", conf, "-p", work], log),
|
procs = [spawn("bsrv", "srv", [tool("nginx"), "-c", conf, "-p", work], log),
|
||||||
spawn("bsrv", "srv", ["iperf3", "-s", "-B", SRV_ADDR, "-p", str(ORIGIN_TCP)], log)]
|
spawn("bsrv", "srv", [tool("iperf3"), "-s", "-B", SRV_ADDR, "-p", str(ORIGIN_TCP)], log)]
|
||||||
if not (wait_port("bsrv", SRV_ADDR, ORIGIN_HTTP) and wait_port("bsrv", SRV_ADDR, ORIGIN_TCP)):
|
if not (wait_port("bsrv", SRV_ADDR, ORIGIN_HTTP) and wait_port("bsrv", SRV_ADDR, ORIGIN_TCP)):
|
||||||
|
for p in procs:
|
||||||
|
stop(p)
|
||||||
sys.exit("the origin did not start, see " + work)
|
sys.exit("the origin did not start, see " + work)
|
||||||
return procs
|
return procs
|
||||||
|
|
||||||
@ -265,14 +399,67 @@ def proxy_conf(kind, work, ncpu, label, opts=""):
|
|||||||
auth none
|
auth none
|
||||||
proxy {opts} -i{PRX_IN} -e{PRX_OUT} -p{HTTP_PORT}
|
proxy {opts} -i{PRX_IN} -e{PRX_OUT} -p{HTTP_PORT}
|
||||||
tcppm {opts} -i{PRX_IN} -e{PRX_OUT} {TCP_PORT} {SRV_ADDR} {ORIGIN_TCP}
|
tcppm {opts} -i{PRX_IN} -e{PRX_OUT} {TCP_PORT} {SRV_ADDR} {ORIGIN_TCP}
|
||||||
|
tcppm {opts} -i{PRX_IN} -e{PRX_OUT} {RELAY_HTTP} {SRV_ADDR} {ORIGIN_HTTP}
|
||||||
|
socks {opts} -i{PRX_IN} -e{PRX_OUT} -p{SOCKS_PORT}
|
||||||
""")
|
""")
|
||||||
return [conf]
|
return [conf]
|
||||||
|
if kind == "tinyproxy":
|
||||||
|
conf = os.path.join(work, f"{label}.conf")
|
||||||
|
with open(conf, "w") as f:
|
||||||
|
f.write(f"""Port {HTTP_PORT}
|
||||||
|
Listen {PRX_IN}
|
||||||
|
Bind {PRX_OUT}
|
||||||
|
Timeout 600
|
||||||
|
MaxClients 100000
|
||||||
|
LogLevel Critical
|
||||||
|
LogFile "{work}/{label}.log"
|
||||||
|
PidFile "{work}/{label}.pid"
|
||||||
|
DisableViaHeader Yes
|
||||||
|
""")
|
||||||
|
return ["-d", "-c", conf]
|
||||||
|
if kind == "squid":
|
||||||
|
conf = os.path.join(work, f"{label}.conf")
|
||||||
|
with open(conf, "w") as f:
|
||||||
|
f.write(f"""http_port {PRX_IN}:{HTTP_PORT}
|
||||||
|
tcp_outgoing_address {PRX_OUT}
|
||||||
|
http_access allow all
|
||||||
|
cache deny all
|
||||||
|
cache_mem 8 MB
|
||||||
|
access_log none
|
||||||
|
cache_log {work}/{label}.log
|
||||||
|
pid_filename {work}/{label}.pid
|
||||||
|
coredump_dir {work}
|
||||||
|
cache_effective_user nobody
|
||||||
|
max_filedescriptors 65536
|
||||||
|
shutdown_lifetime 1 seconds
|
||||||
|
via off
|
||||||
|
forwarded_for delete
|
||||||
|
""")
|
||||||
|
return ["-N", "-f", conf]
|
||||||
|
if kind == "dante":
|
||||||
|
conf = os.path.join(work, f"{label}.conf")
|
||||||
|
with open(conf, "w") as f:
|
||||||
|
f.write(f"""logoutput: {work}/{label}.log
|
||||||
|
internal: {PRX_IN} port = {SOCKS_PORT}
|
||||||
|
external: {PRX_OUT}
|
||||||
|
socksmethod: none
|
||||||
|
clientmethod: none
|
||||||
|
user.privileged: root
|
||||||
|
user.unprivileged: nobody
|
||||||
|
client pass {{ from: 0.0.0.0/0 to: 0.0.0.0/0 }}
|
||||||
|
socks pass {{ from: 0.0.0.0/0 to: 0.0.0.0/0 }}
|
||||||
|
""")
|
||||||
|
return ["-f", conf, "-p", f"{work}/{label}.pid", "-N", "1"]
|
||||||
if kind == "nginx":
|
if kind == "nginx":
|
||||||
conf = os.path.join(work, f"{label}.conf")
|
conf = os.path.join(work, f"{label}.conf")
|
||||||
with open(conf, "w") as f:
|
with open(conf, "w") as f:
|
||||||
# distributions build the stream module as a dynamic one
|
# distributions build the stream module as a dynamic one
|
||||||
stream = "/usr/lib/nginx/modules/ngx_stream_module.so"
|
load = ""
|
||||||
load = f"load_module {stream};\n" if os.path.exists(stream) else ""
|
for d in ("/usr/lib/nginx/modules", "/usr/lib64/nginx/modules"):
|
||||||
|
stream = os.path.join(d, "ngx_stream_module.so")
|
||||||
|
if os.path.exists(stream):
|
||||||
|
load = f"load_module {stream};\n"
|
||||||
|
break
|
||||||
f.write(f"""{load}daemon off;
|
f.write(f"""{load}daemon off;
|
||||||
worker_processes {ncpu};
|
worker_processes {ncpu};
|
||||||
pid {work}/{label}.pid;
|
pid {work}/{label}.pid;
|
||||||
@ -299,17 +486,33 @@ stream {{
|
|||||||
proxy_pass {SRV_ADDR}:{ORIGIN_TCP};
|
proxy_pass {SRV_ADDR}:{ORIGIN_TCP};
|
||||||
proxy_bind {PRX_OUT};
|
proxy_bind {PRX_OUT};
|
||||||
}}
|
}}
|
||||||
|
server {{
|
||||||
|
listen {PRX_IN}:{RELAY_HTTP} backlog=65535 reuseport;
|
||||||
|
proxy_pass {SRV_ADDR}:{ORIGIN_HTTP};
|
||||||
|
proxy_bind {PRX_OUT};
|
||||||
|
}}
|
||||||
}}
|
}}
|
||||||
""")
|
""")
|
||||||
return ["-c", conf, "-p", work]
|
return ["-c", conf, "-p", work]
|
||||||
if kind == "haproxy":
|
if kind == "haproxy":
|
||||||
|
# splice-auto: haproxy's heuristic, splicing a direction once reads
|
||||||
|
# fill its buffer three times in a row; splice-response, splice-request
|
||||||
|
# and splice: the server's data, the client's, or both, always
|
||||||
|
# (3proxy's -s1, -s2 and -s3)
|
||||||
|
splice = {"": "", "splice-auto": " option splice-auto\n",
|
||||||
|
"splice-response": " option splice-response\n",
|
||||||
|
"splice-request": " option splice-request\n",
|
||||||
|
"splice": " option splice-request\n option splice-response\n"}
|
||||||
|
if opts not in splice:
|
||||||
|
sys.exit("haproxy options: " + ", ".join(k for k in splice if k))
|
||||||
|
splice = splice[opts]
|
||||||
conf = os.path.join(work, f"{label}.cfg")
|
conf = os.path.join(work, f"{label}.cfg")
|
||||||
with open(conf, "w") as f:
|
with open(conf, "w") as f:
|
||||||
f.write(f"""global
|
f.write(f"""global
|
||||||
nbthread {ncpu}
|
nbthread {ncpu}
|
||||||
maxconn 200000
|
maxconn 200000
|
||||||
defaults
|
defaults
|
||||||
timeout connect 5s
|
{splice} timeout connect 5s
|
||||||
timeout client 60s
|
timeout client 60s
|
||||||
timeout server 60s
|
timeout server 60s
|
||||||
frontend http
|
frontend http
|
||||||
@ -327,6 +530,11 @@ listen tcp
|
|||||||
bind {PRX_IN}:{TCP_PORT}
|
bind {PRX_IN}:{TCP_PORT}
|
||||||
source {PRX_OUT}
|
source {PRX_OUT}
|
||||||
server origin {SRV_ADDR}:{ORIGIN_TCP}
|
server origin {SRV_ADDR}:{ORIGIN_TCP}
|
||||||
|
listen tcphttp
|
||||||
|
mode tcp
|
||||||
|
bind {PRX_IN}:{RELAY_HTTP}
|
||||||
|
source {PRX_OUT}
|
||||||
|
server origin {SRV_ADDR}:{ORIGIN_HTTP}
|
||||||
""")
|
""")
|
||||||
return ["-f", conf]
|
return ["-f", conf]
|
||||||
raise ValueError(kind)
|
raise ValueError(kind)
|
||||||
@ -344,7 +552,14 @@ class Proxy:
|
|||||||
self.binary = os.path.abspath(path)
|
self.binary = os.path.abspath(path)
|
||||||
self.label = os.path.basename(path) + (self.opts.replace(" ", "") if self.opts else "")
|
self.label = os.path.basename(path) + (self.opts.replace(" ", "") if self.opts else "")
|
||||||
elif kind in ("nginx", "haproxy"):
|
elif kind in ("nginx", "haproxy"):
|
||||||
self.binary = path or shutil.which(kind)
|
path, _, self.opts = path.partition(":")
|
||||||
|
if kind == "nginx" and self.opts:
|
||||||
|
sys.exit("nginx takes no options (it does not use splice() at all)")
|
||||||
|
self.binary = path or tool(kind)
|
||||||
|
self.label = kind + ("-" + self.opts if self.opts else "")
|
||||||
|
elif kind in ("tinyproxy", "squid", "dante"):
|
||||||
|
# dante's server is sockd, danted on Debian
|
||||||
|
self.binary = path or (tool("sockd", "danted") if kind == "dante" else tool(kind))
|
||||||
self.label = kind
|
self.label = kind
|
||||||
elif kind == "none":
|
elif kind == "none":
|
||||||
self.binary = None
|
self.binary = None
|
||||||
@ -352,6 +567,25 @@ class Proxy:
|
|||||||
else:
|
else:
|
||||||
sys.exit("unknown proxy " + spec)
|
sys.exit("unknown proxy " + spec)
|
||||||
|
|
||||||
|
# what each proxy listens on, and which scenarios it can take part in:
|
||||||
|
# tinyproxy and squid are HTTP proxies, dante a SOCKS server only
|
||||||
|
PORTS = {"3proxy": (HTTP_PORT, TCP_PORT, SOCKS_PORT, RELAY_HTTP),
|
||||||
|
"nginx": (HTTP_PORT, TCP_PORT, RELAY_HTTP),
|
||||||
|
"haproxy": (HTTP_PORT, TCP_PORT, RELAY_HTTP),
|
||||||
|
"tinyproxy": (HTTP_PORT,), "squid": (HTTP_PORT,), "dante": (SOCKS_PORT,)}
|
||||||
|
|
||||||
|
def serves(self, scenario):
|
||||||
|
kind, params = SCENARIOS[scenario]
|
||||||
|
via = params.get("via")
|
||||||
|
if self.kind == "dante":
|
||||||
|
return via == "socks"
|
||||||
|
if self.kind in ("tinyproxy", "squid"):
|
||||||
|
return via == "connect" or (kind == "http" and not via)
|
||||||
|
if self.kind in ("nginx", "haproxy"):
|
||||||
|
# no CONNECT, no SOCKS
|
||||||
|
return via in (None, "relay")
|
||||||
|
return True
|
||||||
|
|
||||||
def start(self, args, work):
|
def start(self, args, work):
|
||||||
cg_remove("prx")
|
cg_remove("prx")
|
||||||
cg_make("prx", args.cpus["prx"])
|
cg_make("prx", args.cpus["prx"])
|
||||||
@ -361,7 +595,7 @@ class Proxy:
|
|||||||
self.label, self.opts)
|
self.label, self.opts)
|
||||||
log = open(os.path.join(work, self.label + ".out"), "a")
|
log = open(os.path.join(work, self.label + ".out"), "a")
|
||||||
p = spawn("bprx", "prx", argv, log)
|
p = spawn("bprx", "prx", argv, log)
|
||||||
if not (wait_port("bcli", PRX_IN, HTTP_PORT) and wait_port("bcli", PRX_IN, TCP_PORT)):
|
if not all(wait_port("bcli", PRX_IN, port, 30) for port in self.PORTS[self.kind]):
|
||||||
stop(p)
|
stop(p)
|
||||||
sys.exit(f"{self.label} did not start, see {work}")
|
sys.exit(f"{self.label} did not start, see {work}")
|
||||||
return p
|
return p
|
||||||
@ -370,10 +604,15 @@ class Proxy:
|
|||||||
# --- load --------------------------------------------------------------------
|
# --- load --------------------------------------------------------------------
|
||||||
|
|
||||||
WRK_SCRIPT = """
|
WRK_SCRIPT = """
|
||||||
local path, close = "%s", %s
|
local path, close, size = "%s", %s, %d
|
||||||
local headers = {["Host"] = "%s:%d"}
|
local headers = {["Host"] = "%s:%d"}
|
||||||
if close then headers["Connection"] = "close" end
|
if close then headers["Connection"] = "close" end
|
||||||
local req = wrk.format("GET", path, headers)
|
local req
|
||||||
|
if size > 0 then
|
||||||
|
req = wrk.format("POST", path, headers, string.rep("u", size))
|
||||||
|
else
|
||||||
|
req = wrk.format("GET", path, headers)
|
||||||
|
end
|
||||||
request = function() return req end
|
request = function() return req end
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -387,20 +626,45 @@ def to_ms(text):
|
|||||||
return v * {"us": 1e-3, "ms": 1, "s": 1e3, "m": 6e4}[u]
|
return v * {"us": 1e-3, "ms": 1, "s": 1e3, "m": 6e4}[u]
|
||||||
|
|
||||||
|
|
||||||
|
def tunnel(via, work):
|
||||||
|
"""argv prefix running a load generator so that its connections go
|
||||||
|
through tunnels of the proxy: CONNECT, or SOCKSv5."""
|
||||||
|
conf = os.path.join(work, f"proxychains-{via}.conf")
|
||||||
|
line = f"http {PRX_IN} {HTTP_PORT}" if via == "connect" else f"socks5 {PRX_IN} {SOCKS_PORT}"
|
||||||
|
with open(conf, "w") as f:
|
||||||
|
f.write(f"strict_chain\nquiet_mode\ntcp_read_time_out 15000\n"
|
||||||
|
f"tcp_connect_time_out 8000\n[ProxyList]\n{line}\n")
|
||||||
|
return [tool("proxychains4"), "-q", "-f", conf]
|
||||||
|
|
||||||
|
|
||||||
|
def target(proxy, params, work, direct_port, proxy_port, relay_port):
|
||||||
|
"""Where the load generator connects, and what it runs under: the origin
|
||||||
|
itself with no proxy or through a tunnel, the proxy's relay otherwise."""
|
||||||
|
if proxy.kind == "none":
|
||||||
|
return SRV_ADDR, direct_port, []
|
||||||
|
if params.get("via") == "relay":
|
||||||
|
return PRX_IN, relay_port, []
|
||||||
|
if params.get("via"):
|
||||||
|
return SRV_ADDR, direct_port, tunnel(params["via"], work)
|
||||||
|
return PRX_IN, proxy_port, []
|
||||||
|
|
||||||
|
|
||||||
def run_http(proxy, params, args, work):
|
def run_http(proxy, params, args, work):
|
||||||
direct = proxy.kind == "none"
|
host, port, prefix = target(proxy, params, work, ORIGIN_HTTP, HTTP_PORT, RELAY_HTTP)
|
||||||
host = SRV_ADDR if direct else PRX_IN
|
|
||||||
port = ORIGIN_HTTP if direct else HTTP_PORT
|
|
||||||
path = "/" + params["file"]
|
path = "/" + params["file"]
|
||||||
if not direct:
|
if host == PRX_IN and port == HTTP_PORT:
|
||||||
path = f"http://{SRV_ADDR}:{ORIGIN_HTTP}{path}"
|
path = f"http://{SRV_ADDR}:{ORIGIN_HTTP}{path}"
|
||||||
script = os.path.join(work, "wrk.lua")
|
script = os.path.join(work, "wrk.lua")
|
||||||
with open(script, "w") as f:
|
with open(script, "w") as f:
|
||||||
f.write(WRK_SCRIPT % (path, "true" if params.get("close") else "false",
|
f.write(WRK_SCRIPT % (path, "true" if params.get("close") else "false",
|
||||||
SRV_ADDR, ORIGIN_HTTP))
|
params.get("body", 0), SRV_ADDR, ORIGIN_HTTP))
|
||||||
threads = len(cpulist(args.cpus["cli"]))
|
threads = len(cpulist(args.cpus["cli"]))
|
||||||
|
if prefix:
|
||||||
|
# proxychains asks for each tunnel inside connect(), blocking the
|
||||||
|
# thread: more threads keep the client's CPUs busy meanwhile
|
||||||
|
threads = min(params["conns"], threads * 4)
|
||||||
conns = max(params["conns"], threads)
|
conns = max(params["conns"], threads)
|
||||||
out = run_in("bcli", "cli", ["wrk", "-t", str(threads), "-c", str(conns),
|
out = run_in("bcli", "cli", prefix + [tool("wrk"), "-t", str(threads), "-c", str(conns),
|
||||||
"-d", f"{args.duration}s", "--latency", "-s", script,
|
"-d", f"{args.duration}s", "--latency", "-s", script,
|
||||||
f"http://{host}:{port}/"], args.duration + 30)
|
f"http://{host}:{port}/"], args.duration + 30)
|
||||||
res = {"raw": out}
|
res = {"raw": out}
|
||||||
@ -414,12 +678,17 @@ def run_http(proxy, params, args, work):
|
|||||||
m = re.search(rf"^\s+{pct}%\s+(\S+)", out, re.M)
|
m = re.search(rf"^\s+{pct}%\s+(\S+)", out, re.M)
|
||||||
res[f"p{pct}_ms"] = to_ms(m.group(1)) if m else float("nan")
|
res[f"p{pct}_ms"] = to_ms(m.group(1)) if m else float("nan")
|
||||||
errors = 0
|
errors = 0
|
||||||
|
res["timeouts"] = 0
|
||||||
m = re.search(r"Socket errors: connect (\d+), read (\d+), write (\d+), timeout (\d+)", out)
|
m = re.search(r"Socket errors: connect (\d+), read (\d+), write (\d+), timeout (\d+)", out)
|
||||||
if m:
|
if m:
|
||||||
errors += sum(int(x) for x in m.groups())
|
errors += sum(int(x) for x in m.groups()[:3])
|
||||||
|
# requests slower than wrk's 2 seconds: a latency tail, not a failure
|
||||||
|
res["timeouts"] = int(m.group(4))
|
||||||
m = re.search(r"Non-2xx or 3xx responses: (\d+)", out)
|
m = re.search(r"Non-2xx or 3xx responses: (\d+)", out)
|
||||||
if m:
|
if m:
|
||||||
errors += int(m.group(1))
|
errors += int(m.group(1))
|
||||||
|
if not res["requests"]:
|
||||||
|
errors += 1 # wrk did not run, or reported nothing
|
||||||
res["errors"] = errors
|
res["errors"] = errors
|
||||||
res["retrans"] = 0
|
res["retrans"] = 0
|
||||||
res["bytes"] = res["gbit"] * 1e9 / 8 * args.duration
|
res["bytes"] = res["gbit"] * 1e9 / 8 * args.duration
|
||||||
@ -427,16 +696,14 @@ def run_http(proxy, params, args, work):
|
|||||||
|
|
||||||
|
|
||||||
def run_stream(proxy, params, args, work):
|
def run_stream(proxy, params, args, work):
|
||||||
direct = proxy.kind == "none"
|
host, port, prefix = target(proxy, params, work, ORIGIN_TCP, TCP_PORT, TCP_PORT)
|
||||||
host = SRV_ADDR if direct else PRX_IN
|
argv = prefix + [tool("iperf3"), "-c", host, "-p", str(port), "-t", str(args.duration),
|
||||||
port = ORIGIN_TCP if direct else TCP_PORT
|
|
||||||
argv = ["iperf3", "-c", host, "-p", str(port), "-t", str(args.duration),
|
|
||||||
"-P", str(params["streams"]), "-J"]
|
"-P", str(params["streams"]), "-J"]
|
||||||
if params.get("reverse"):
|
if params.get("reverse"):
|
||||||
argv.append("-R")
|
argv.append("-R")
|
||||||
out = run_in("bcli", "cli", argv, args.duration + 30)
|
out = run_in("bcli", "cli", argv, args.duration + 30)
|
||||||
res = {"raw": out, "rate": float("nan"), "p50_ms": float("nan"),
|
res = {"raw": out, "rate": float("nan"), "p50_ms": float("nan"),
|
||||||
"p99_ms": float("nan"), "requests": 0, "errors": 0, "retrans": 0}
|
"p99_ms": float("nan"), "requests": 0, "errors": 0, "retrans": 0, "timeouts": 0}
|
||||||
try:
|
try:
|
||||||
j = json.loads(out)
|
j = json.loads(out)
|
||||||
s = j["end"]["sum_received"]
|
s = j["end"]["sum_received"]
|
||||||
@ -450,24 +717,45 @@ def run_stream(proxy, params, args, work):
|
|||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
BUSY = 0.9
|
||||||
|
|
||||||
|
|
||||||
def measure(proxy, scenario, args, work):
|
def measure(proxy, scenario, args, work):
|
||||||
kind, params = SCENARIOS[scenario]
|
kind, params = SCENARIOS[scenario]
|
||||||
p = proxy.start(args, work)
|
p = proxy.start(args, work)
|
||||||
try:
|
try:
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
before = {r: cg_usage(r) for r in ("cli", "prx", "srv")}
|
task0 = cg_usage("prx")
|
||||||
|
cpu0 = cpu_busy()
|
||||||
|
thr0 = {r: thread_times(r) for r in ("cli", "srv")}
|
||||||
t0 = time.time()
|
t0 = time.time()
|
||||||
res = (run_http if kind == "http" else run_stream)(proxy, params, args, work)
|
res = (run_http if kind == "http" else run_stream)(proxy, params, args, work)
|
||||||
|
res["cli_thread"] = LAST_CLIENT_THREAD[0]
|
||||||
wall = time.time() - t0
|
wall = time.time() - t0
|
||||||
after = {r: cg_usage(r) for r in ("cli", "prx", "srv")}
|
cpu1 = cpu_busy()
|
||||||
|
# threads of the load generator have ended by now: take what the
|
||||||
|
# client's cgroup reports for the run instead
|
||||||
|
thr1 = {r: thread_times(r) for r in ("cli", "srv")}
|
||||||
|
res["prx_task_s"] = cg_usage("prx") - task0
|
||||||
res["peak_mb"] = cg_peak("prx")
|
res["peak_mb"] = cg_peak("prx")
|
||||||
finally:
|
finally:
|
||||||
stop(p)
|
stop(p)
|
||||||
for r in ("cli", "prx", "srv"):
|
for r in ("cli", "prx", "srv"):
|
||||||
used = after[r] - before[r]
|
# the busy time of the role's CPUs, its own processes and the network
|
||||||
res[f"{r}_cpu_s"] = used
|
# work done there for it
|
||||||
# share of the CPUs given to that role, to see which side was the limit
|
res[f"{r}_cpu_s"], res[f"{r}_util"] = role_busy(cpu0, cpu1, cpulist(args.cpus[r]))
|
||||||
res[f"{r}_util"] = used / (wall * len(cpulist(args.cpus[r])))
|
res["srv_thread"] = busiest_thread(thr0["srv"], thr1["srv"], wall)
|
||||||
|
# Which side set the pace: a role whose CPUs, or a single thread of it,
|
||||||
|
# were busy all the time. A run limited by the client or the origin says
|
||||||
|
# only that the proxy can do at least this much.
|
||||||
|
if res["srv_util"] >= BUSY or res["srv_thread"] >= BUSY:
|
||||||
|
res["bound"] = "origin"
|
||||||
|
elif res["cli_util"] >= BUSY or res["cli_thread"] >= BUSY:
|
||||||
|
res["bound"] = "client"
|
||||||
|
elif res["prx_util"] >= BUSY:
|
||||||
|
res["bound"] = "proxy"
|
||||||
|
else:
|
||||||
|
res["bound"] = "none"
|
||||||
gb = res["bytes"] / 1e9
|
gb = res["bytes"] / 1e9
|
||||||
res["cpu_s_per_gb"] = res["prx_cpu_s"] / gb if gb else float("nan")
|
res["cpu_s_per_gb"] = res["prx_cpu_s"] / gb if gb else float("nan")
|
||||||
res["cpu_us_per_req"] = (res["prx_cpu_s"] * 1e6 / res["requests"]
|
res["cpu_us_per_req"] = (res["prx_cpu_s"] * 1e6 / res["requests"]
|
||||||
@ -477,9 +765,9 @@ def measure(proxy, scenario, args, work):
|
|||||||
|
|
||||||
# --- main --------------------------------------------------------------------
|
# --- main --------------------------------------------------------------------
|
||||||
|
|
||||||
FIELDS = ["proxy", "scenario", "rep", "gbit", "rate", "p50_ms", "p99_ms", "errors", "retrans",
|
FIELDS = ["proxy", "scenario", "rep", "gbit", "rate", "p50_ms", "p99_ms", "errors", "timeouts", "retrans",
|
||||||
"prx_cpu_s", "cpu_s_per_gb", "cpu_us_per_req", "peak_mb",
|
"prx_cpu_s", "prx_task_s", "cpu_s_per_gb", "cpu_us_per_req", "peak_mb",
|
||||||
"cli_util", "prx_util", "srv_util"]
|
"cli_util", "prx_util", "srv_util", "cli_thread", "srv_thread", "bound"]
|
||||||
|
|
||||||
|
|
||||||
def summary(rows):
|
def summary(rows):
|
||||||
@ -503,13 +791,15 @@ def summary(rows):
|
|||||||
def main():
|
def main():
|
||||||
ap = argparse.ArgumentParser(description=__doc__.split("\n\n")[0])
|
ap = argparse.ArgumentParser(description=__doc__.split("\n\n")[0])
|
||||||
ap.add_argument("--proxy", action="append", required=True,
|
ap.add_argument("--proxy", action="append", required=True,
|
||||||
help="3proxy:<binary>[:<service options>], nginx[:<binary>], haproxy[:<binary>] "
|
help="3proxy:<binary>[:<service options>], nginx[:<binary>], "
|
||||||
|
"tinyproxy, squid, dante (sockd), "
|
||||||
|
"haproxy[:<binary>[:splice-auto|splice-response|splice-request|splice]] "
|
||||||
"or none (the kernel routing, an upper bound); repeat")
|
"or none (the kernel routing, an upper bound); repeat")
|
||||||
ap.add_argument("--scenario", action="append", choices=sorted(SCENARIOS),
|
ap.add_argument("--scenario", action="append", choices=sorted(SCENARIOS),
|
||||||
help="default: all")
|
help="default: all")
|
||||||
ap.add_argument("--reps", type=int, default=3)
|
ap.add_argument("--reps", type=int, default=3)
|
||||||
ap.add_argument("--duration", type=int, default=10, help="seconds per run")
|
ap.add_argument("--duration", type=int, default=10, help="seconds per run")
|
||||||
ap.add_argument("--cpus", default="cli=0-3,prx=4-5,srv=6-7",
|
ap.add_argument("--cpus", default="cli=0-3,prx=4,srv=5-7",
|
||||||
help="CPUs per role (default %(default)s)")
|
help="CPUs per role (default %(default)s)")
|
||||||
ap.add_argument("--mtu", type=int, default=1500)
|
ap.add_argument("--mtu", type=int, default=1500)
|
||||||
ap.add_argument("--netem", help='netem on the client link, e.g. "delay 1ms rate 10gbit"')
|
ap.add_argument("--netem", help='netem on the client link, e.g. "delay 1ms rate 10gbit"')
|
||||||
@ -520,18 +810,25 @@ def main():
|
|||||||
args.cpus = dict(x.split("=") for x in args.cpus.split(","))
|
args.cpus = dict(x.split("=") for x in args.cpus.split(","))
|
||||||
proxies = [Proxy(s) for s in args.proxy]
|
proxies = [Proxy(s) for s in args.proxy]
|
||||||
scenarios = args.scenario or list(SCENARIOS)
|
scenarios = args.scenario or list(SCENARIOS)
|
||||||
|
# fail now rather than after the first scenarios
|
||||||
|
for name in ("nginx", "iperf3", "wrk"):
|
||||||
|
tool(name)
|
||||||
|
if any(SCENARIOS[s][1].get("via") in ("connect", "socks") for s in scenarios):
|
||||||
|
tool("proxychains4")
|
||||||
|
|
||||||
stamp = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
|
stamp = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
|
||||||
os.makedirs(args.out, exist_ok=True)
|
os.makedirs(args.out, exist_ok=True)
|
||||||
work = tempfile.mkdtemp(prefix="3proxy-bench-")
|
work = tempfile.mkdtemp(prefix="3proxy-bench-")
|
||||||
os.chmod(work, 0o755)
|
# squid writes its log and pid file there after giving up root
|
||||||
|
os.chmod(work, 0o1777)
|
||||||
csvpath = os.path.join(args.out, f"{stamp}.csv")
|
csvpath = os.path.join(args.out, f"{stamp}.csv")
|
||||||
rawpath = os.path.join(args.out, f"{stamp}.raw.txt")
|
rawpath = os.path.join(args.out, f"{stamp}.raw.txt")
|
||||||
with open(os.path.join(args.out, f"{stamp}.env.txt"), "w") as f:
|
with open(os.path.join(args.out, f"{stamp}.env.txt"), "w") as f:
|
||||||
f.write(" ".join(sys.argv) + "\n")
|
f.write(" ".join(sys.argv) + "\n")
|
||||||
f.write(sh("uname -a; lscpu | head -20; nproc; "
|
f.write(sh("uname -a; lscpu | head -20; nproc; "
|
||||||
"cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 2>/dev/null; "
|
"cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 2>/dev/null; "
|
||||||
"iperf3 --version | head -1; wrk -v 2>&1 | head -1; nginx -v 2>&1; "
|
f"{tool('iperf3')} --version | head -1; {tool('wrk')} -v 2>&1 | head -1; "
|
||||||
|
f"{tool('nginx')} -v 2>&1; "
|
||||||
"haproxy -v 2>/dev/null | head -1", check=False))
|
"haproxy -v 2>/dev/null | head -1", check=False))
|
||||||
|
|
||||||
rows = []
|
rows = []
|
||||||
@ -549,6 +846,8 @@ def main():
|
|||||||
for scenario in scenarios:
|
for scenario in scenarios:
|
||||||
order = proxies[rep % len(proxies):] + proxies[:rep % len(proxies)]
|
order = proxies[rep % len(proxies):] + proxies[:rep % len(proxies)]
|
||||||
for proxy in order:
|
for proxy in order:
|
||||||
|
if not proxy.serves(scenario):
|
||||||
|
continue
|
||||||
res = measure(proxy, scenario, args, work)
|
res = measure(proxy, scenario, args, work)
|
||||||
res.update(proxy=proxy.label, scenario=scenario, rep=rep)
|
res.update(proxy=proxy.label, scenario=scenario, rep=rep)
|
||||||
rows.append(res)
|
rows.append(res)
|
||||||
@ -556,12 +855,14 @@ def main():
|
|||||||
f.flush()
|
f.flush()
|
||||||
raw.write(f"=== {proxy.label} {scenario} {rep}\n{res['raw']}\n")
|
raw.write(f"=== {proxy.label} {scenario} {rep}\n{res['raw']}\n")
|
||||||
print("%-24s %-14s rep %d: %7.2f Gbit/s %10.0f req/s proxy cpu %5.2fs "
|
print("%-24s %-14s rep %d: %7.2f Gbit/s %10.0f req/s proxy cpu %5.2fs "
|
||||||
"util cli %3.0f%% prx %3.0f%% srv %3.0f%% errors %d" % (
|
"busy cli %3.0f%% prx %3.0f%% srv %3.0f%% (threads %3.0f%%/%3.0f%%) "
|
||||||
|
"bound %-6s errors %d" % (
|
||||||
proxy.label, scenario, rep, res["gbit"],
|
proxy.label, scenario, rep, res["gbit"],
|
||||||
res["rate"] if res["rate"] == res["rate"] else 0,
|
res["rate"] if res["rate"] == res["rate"] else 0,
|
||||||
res["prx_cpu_s"], res["cli_util"] * 100,
|
res["prx_cpu_s"], res["cli_util"] * 100,
|
||||||
res["prx_util"] * 100, res["srv_util"] * 100,
|
res["prx_util"] * 100, res["srv_util"] * 100,
|
||||||
res["errors"]), flush=True)
|
res["cli_thread"] * 100, res["srv_thread"] * 100,
|
||||||
|
res["bound"], res["errors"]), flush=True)
|
||||||
finally:
|
finally:
|
||||||
for p in origin:
|
for p in origin:
|
||||||
stop(p)
|
stop(p)
|
||||||
|
|||||||
166
bench/data/m4-auto-http.csv
Normal file
166
bench/data/m4-auto-http.csv
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
direct,http-ka-1k,0,1.243611136,120781.87,0.512,0.757,0,0,0,0.63,0.0,0.40527137897870996,0.5164184169562298,0.0,0.8113594890510949,0.21070234113712374,0.9591513616212793,2.507777334157773,0.9582598001505255,origin
|
||||||
|
3proxy-devel-s0,http-ka-1k,0,0.16164847616,16002.57,3.81,8.13,0,0,0,10.1,10.104462,49.985005686056695,62.489172668102064,9.26171875,0.43051724137931036,0.9609895337773549,0.45325779036827196,0.45385412192058483,0.1881717405478657,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,0,0.16206790656,16037.37,3.8,8.09,0,0,0,10.11,10.103068,49.90500692995439,62.41935185128018,9.3046875,0.43249270886944585,0.9610266159695817,0.45706241201313935,0.45391855102395723,0.1710888659433286,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,0,0.161480704,15978.42,3.82,8.12,0,0,0,10.11,10.104434,50.08647968242694,62.644450916120874,9.30859375,0.43691469436403885,0.9610266159695817,0.45625146610368283,0.45488486896812413,0.18252484878356298,proxy
|
||||||
|
3proxy-devel-s,http-ka-1k,0,0.15913189376,15751.28,3.85,8.82,0,0,0,10.1,10.102986,50.77549075225686,63.49086611599341,9.26171875,0.42948607025436925,0.9600760456273765,0.4542029668000942,0.45471311244702384,0.17577959119170872,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-1k,0,0.16156459008000001,15989.64,3.83,8.09,0,0,0,10.02,10.013644000000001,49.614832037334494,62.595267248057176,9.421875,0.42696629213483145,0.9524714828897338,0.45240893066980026,0.4519474069935196,0.19672305358480377,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-1k,0,0.16055795712,15887.87,3.84,8.06,0,0,0,10.11,10.103584999999999,50.37433301393514,63.00203775136941,9.4140625,0.4337617823479006,0.9610266159695817,0.4517347179608213,0.45297031068539295,0.17486966742036608,proxy
|
||||||
|
nginx,http-ka-1k,0,0.38176555007999996,37078.45,1.69,2.18,0,0,0,10.03,10.010665000000001,21.018135340704653,27.02003739163699,30.16015625,0.4471938318092164,0.9507109004739337,0.4901808785529716,0.6379396310901169,0.31522491442066297,proxy
|
||||||
|
haproxy,http-ka-1k,0,0.45533364224,45061.65,1.36,2.05,0,0,0,10.09,10.077448,17.727660008362314,22.17070785862603,29.6796875,0.4847399829497016,0.9591254752851711,0.5214203894616266,0.6963752980523324,0.3250265888356188,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,0,0.44644171775999997,44181.51,1.39,2.07,0,0,0,10.09,10.092679,18.08074756208016,22.61317794710892,35.77734375,0.4921092821992194,0.9591254752851711,0.5157002062800825,0.7139898829444781,0.3799239853836789,proxy
|
||||||
|
haproxy-splice,http-ka-1k,0,0.457179136,45244.89,1.36,2.04,0,0,0,10.01,10.004161,17.51610992151663,22.088645862295717,35.78515625,0.48438030560271644,0.9515209125475285,0.5152919369786839,0.6902238351734264,0.28962713421435854,proxy
|
||||||
|
direct,http-ka-1m,0,72.1554505728,8596.55,1.28,2.29,0,0,0,0.15,0.0,0.0016630760260990687,1.741856819369448,0.0,0.9359547916176124,0.027472527472527472,0.6005361930294906,3.7143134924353327,0.47398204828609114,client
|
||||||
|
3proxy-devel-s0,http-ka-1m,0,22.50562863104,2686.37,5.64,11.63,0,0,0,10.01,9.934088,0.35582209816415794,372.02215036979226,15.06640625,0.4059196617336152,0.9524262607040913,0.2994706327199395,1.0084273213270942,0.08646792089914285,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,0,35.991825940480005,4292.49,3.46,8.26,0,0,0,10.02,9.954599,0.22271723622069436,233.0720383336047,15.86328125,0.5247976758663623,0.9515669515669516,0.43942731277533037,1.5241579486540164,0.1482440912914812,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,0,36.24952397824,4323.48,3.42,8.26,0,0,0,10.02,9.952022,0.22113393833286957,231.44619222507103,15.90234375,0.5221386800334169,0.9524714828897338,0.4206583427922815,1.5441991608497194,0.1492298747134885,client
|
||||||
|
3proxy-devel-s,http-ka-1m,0,36.335423324160004,4335.16,3.4,8.5,0,0,0,10.01,9.947560000000001,0.22039099224352102,230.59202948629348,17.05859375,0.526782035434693,0.9515209125475285,0.44201457919151754,1.530595265689325,0.13396582208854865,client
|
||||||
|
3proxy-devel-s0-b16384,http-ka-1m,0,13.7438953472,1641.18,9.49,16.69,0,0,0,10.03,9.993875,0.583822838962078,609.9118273031316,13.3515625,0.30859835100117783,0.9525166191832859,0.16103896103896104,0.77129510181047,0.058892436015667,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-1m,0,35.47642986496,4231.23,3.51,8.47,0,0,0,10.02,9.953251,0.225952837715426,236.38765688402378,15.53515625,0.5254306808859721,0.9515669515669516,0.41277472527472525,1.502755237080206,0.16339096428533412,client
|
||||||
|
nginx,http-ka-1m,0,12.884901888,1536.61,10.24,15.6,0,0,0,10.01,10.024533,0.6215025981267294,649.7468518758925,45.515625,0.30819592628516,0.9524262607040913,0.11752392344497607,0.8146568045011885,0.04747280743251212,proxy
|
||||||
|
haproxy,http-ka-1m,0,5.82563659776,693.76,22.96,26.15,0,0,0,10.1,10.096955999999999,1.3869728851790752,1441.4157271300128,38.296875,0.6199489578902595,0.9582542694497154,0.17255594817432274,1.2482294439583148,0.027526472445593916,client
|
||||||
|
haproxy-splice-response,http-ka-1m,0,28.26088480768,3366.58,4.68,5.73,0,0,0,10.01,10.004202999999999,0.2833598471702414,297.20020189424304,52.0703125,0.5971843778383288,0.999001996007984,0.2943874797625472,1.6236116300886927,0.09683483169807168,client
|
||||||
|
haproxy-splice,http-ka-1m,0,27.31599200256,3255.78,4.85,6.11,0,0,0,10.0,9.987155,0.29286873415581083,306.98388334612434,51.94921875,0.5819970066281804,0.9505703422053232,0.288496028695875,1.6181918144820424,0.12261110042390455,client
|
||||||
|
direct,http-ka-50k-2000,0,34.70333575168,84307.35,21.8,565.86,0,517,0,2.0,0.0,0.046105077951261314,2.3485590416000264,0.0,0.9098722415795587,0.4618937644341801,0.954746835443038,3.4429234638992297,0.9516807696537868,origin
|
||||||
|
3proxy-devel-s0,http-ka-50k-2000,0,4.33238048768,10527.46,49.19,141.92,0,453,0,10.41,10.3712,1.9222688366551257,98.25760292979443,155.140625,0.483708484180702,0.9886039886039886,0.5101223112610713,0.4746428220161162,0.13396565518285264,proxy
|
||||||
|
3proxy-devel-s1,http-ka-50k-2000,0,4.27089199104,10378.07,59.84,169.17,0,479,0,10.41,10.356573000000001,1.9499439502266736,99.66586563777537,174.609375,0.4934261407579273,0.9876660341555977,0.5163848883322897,0.4689607077283999,0.1368260428549438,proxy
|
||||||
|
3proxy-devel-s3,http-ka-50k-2000,0,4.27634458624,10391.31,60.41,629.65,0,474,0,10.39,10.358801,1.9437161417593747,99.36023104361713,192.390625,0.4937354988399072,0.9876425855513308,0.5178236397748592,0.4699646845947747,0.13017770234606135,proxy
|
||||||
|
3proxy-devel-s,http-ka-50k-2000,0,4.2344854323200005,10289.7,63.66,192.4,0,487,0,10.4,10.355022,1.9648196062966778,100.30960946768391,189.99609375,0.4940522169009733,0.9885931558935361,0.5179092044981258,0.46348279301797696,0.12928448748457563,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-50k-2000,0,3.77940344832,9183.76,66.23,191.89,0,494,0,10.42,10.384002,2.2056390946315805,112.40803469330514,155.265625,0.48877485567671586,0.9895536562203229,0.500418235048097,0.46126767274923963,0.1158526162892185,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-50k-2000,0,4.19547840512,10194.81,59.44,245.46,0,505,0,10.39,10.35571,1.9811804989524806,101.15761700304739,160.234375,0.49670846394984325,0.9867046533713201,0.5140771637122002,0.5019725397924403,0.13198936764857366,proxy
|
||||||
|
nginx,http-ka-50k-2000,0,4.5500648652799995,11051.37,81.76,98.76,0,298,0,10.15,10.115946,1.7845899433128884,90.9938500708228,89.29296875,0.4659534725759891,0.964828897338403,0.44935584184806754,0.47445081627365193,0.11584801317425811,proxy
|
||||||
|
haproxy,http-ka-50k-2000,0,4.1053847552,9822.94,192.09,491.39,0,0,0,10.09,10.046331,1.966198171748889,101.9016936485654,176.30859375,0.5503295920185284,0.9591254752851711,0.3404576313804375,0.8715980810144813,0.08933387646926418,proxy
|
||||||
|
haproxy-splice-response,http-ka-50k-2000,0,4.97603837952,12041.05,161.17,421.21,0,0,0,10.11,10.065359,1.6253893927522691,83.26607257573012,150.55078125,0.5542527126356318,0.9628571428571429,0.491622394769105,0.8630650061051746,0.10931754925692638,proxy
|
||||||
|
haproxy-splice,http-ka-50k-2000,0,4.94416166912,11953.26,162.29,430.03,0,0,0,10.13,10.065309999999998,1.6391049772129345,84.10547640397198,147.27734375,0.5554783816634833,0.9620132953466287,0.4954314720812183,0.8561636194121631,0.11022097646952801,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,0,30.83786518528,74912.66,25.84,184.87,0,0,0,0.88,0.0,0.022829077037928167,1.1642367634217976,0.0,0.9138131842534358,0.2328042328042328,0.9556681443951869,3.4201347010095895,0.954244708991026,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,0,3.9754452172800003,9659.86,61.63,178.85,0,496,0,10.4,10.35367,2.09284735300479,107.01790491870756,177.10546875,0.40856991712220064,0.9876543209876543,0.5162105263157895,0.42590817818380644,0.1424507975828728,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,0,3.93333440512,9557.81,63.33,584.74,0,467,0,10.4,10.359827999999998,2.1152536609066095,108.2555246749732,183.1484375,0.4095623132360696,0.9867172675521821,0.5180520570948782,0.42497459768542833,0.14433871297302212,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,0,3.95917131776,9620.74,63.53,728.33,0,440,0,10.39,10.355072,2.0994292322522483,107.31475552066765,184.5234375,0.40530973451327434,0.9857685009487666,0.5180217937971501,0.42307146713283295,0.1386368477913403,proxy
|
||||||
|
3proxy-devel-s,http-ka-2k-50k-2000,0,3.8516293632,9359.23,67.87,352.53,0,469,0,10.39,10.359525,2.1580477289471713,110.35933168343124,192.203125,0.40692946791585644,0.9867046533713201,0.5222731057452124,0.4240205748376217,0.14529870156687397,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-2k-50k-2000,0,3.4641595596799997,8417.7,73.26,654.54,0,408,0,10.41,10.365624,2.40404630806593,122.97115316464668,159.06640625,0.40768951759158506,0.9886039886039886,0.5090380220236859,0.42821816956841174,0.1302095459050906,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-2k-50k-2000,0,3.8981861375999998,9472.27,64.06,378.22,0,486,0,10.39,10.347736000000001,2.132273756716363,109.00697686618057,146.984375,0.41750663129973475,0.9857685009487666,0.5235416666666667,0.4572908292375058,0.14148122601564836,proxy
|
||||||
|
nginx,http-ka-2k-50k-2000,0,4.21384945664,10234.66,60.82,80.67,0,322,0,10.16,10.112879,1.928877641129835,98.54032297172785,73.3203125,0.3945834116983261,0.9657794676806084,0.41160949868073876,0.44328839045190227,0.12731635171067787,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,0,3.716153344,8878.21,215.67,644.63,0,0,0,10.08,10.041625999999999,2.1699858034706545,112.80467333646679,158.296875,0.5417867435158501,0.9581749049429658,0.30851063829787234,0.8350058310524624,0.10163345438115108,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,0,4.71909531648,11412.92,169.97,421.54,0,0,0,10.12,10.076003,1.7155830635010045,87.94799596760177,128.7578125,0.5291463634722974,0.9619771863117871,0.4763644177051998,0.8343096740244776,0.132079773422283,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,0,4.68721860608,11333.87,170.67,583.58,0,0,0,10.12,10.064301,1.727250354719602,88.69568265876703,129.796875,0.5310407239819005,0.9619771863117871,0.48518204911092294,0.8466966828832625,0.13208063818829432,proxy
|
||||||
|
direct,http-close-1k,0,0.4890558464,47686.26,0.86,2.4,0,0,0,4.72,0.0,7.720999611385078,9.800115026773831,0.0,0.7794056954189021,0.512486427795874,0.9369341242585076,2.2629742425714916,0.9052054236618731,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,0,0.0536870912,5234.21,12.01,17.03,0,0,0,10.03,9.912844,149.45864677429196,191.06581579198019,15.37109375,0.36422493525712174,0.9534220532319392,0.4272431427243143,0.29686918458427847,0.0902866835717699,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,0,0.05351931904,5220.21,12.05,17.07,0,0,0,10.03,9.909526000000001,149.92716917797316,191.62431699209048,13.06640625,0.363905325443787,0.9525166191832859,0.43018955154877486,0.29390530077933524,0.09121268784392648,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,0,0.05360320512,5225.95,12.04,17.15,0,0,0,10.03,9.906985,149.6925413701829,191.39760323639416,13.95703125,0.3631150573436922,0.9534220532319392,0.42913385826771655,0.2939935978061494,0.09027665206669679,proxy
|
||||||
|
3proxy-devel-s,http-close-1k,0,0.05343543296,5206.94,12.07,17.3,0,0,0,10.03,9.906471,150.16253365078,192.12351070758152,13.2734375,0.36308091094241807,0.9543292102759277,0.4301572617946346,0.2940332700644355,0.09029051347815054,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-close-1k,0,0.053938749439999996,5258.05,11.97,17.21,0,0,0,10.04,9.910596,148.9096444279743,190.4906462262361,18.57421875,0.36345121273838177,0.9534662867996201,0.4300602130616026,0.2940033548015711,0.09122817895970156,proxy
|
||||||
|
3proxy-devel-s-b16384,http-close-1k,0,0.05385486336,5253.26,11.98,17.05,0,0,0,10.02,9.901632,148.8444961120035,190.2844771924494,16.875,0.36440991490936,0.9533777354900095,0.43089430894308944,0.29689836873915776,0.09127946156492905,proxy
|
||||||
|
nginx,http-close-1k,0,0.13807648768,13459.72,4.65,5.19,0,0,0,10.03,9.972752,58.112718065338306,74.40652818991099,29.77734375,0.5380386593367619,0.9516129032258065,0.3951429294206931,0.7060266444404694,0.15965640669972134,proxy
|
||||||
|
haproxy,http-close-1k,0,0.17171480575999998,16746.83,3.68,4.26,0,0,0,10.1,10.066752,47.054765978031874,59.71243437544341,29.546875,0.5498121981756394,0.9591642924976258,0.49363057324840764,0.815702289468493,0.16522845090570826,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,0,0.17246978048,16816.89,3.66,4.37,0,0,0,10.1,10.066105,46.84878694408135,59.4635329581047,35.78515625,0.5502051007668985,0.9600760456273765,0.47392537639101023,0.8157900667514153,0.19089914936325028,proxy
|
||||||
|
haproxy-splice,http-close-1k,0,0.17439916032,17007.71,3.62,4.29,0,0,0,10.11,10.068717999999999,46.37637007632125,58.855376447370716,35.61328125,0.5509035605653964,0.9601139601139601,0.4655249110320285,0.820989243581374,0.17292491583323719,proxy
|
||||||
|
3proxy-devel-s0,http-ka-1k,1,0.16030629888,15862.43,3.84,8.2,0,0,0,10.11,10.10209,50.45341359951433,63.10822029825032,9.4296875,0.41341180667023364,0.9610266159695817,0.434123686140308,0.4577234485444266,0.1910416443789874,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,1,0.16005464064,15844.24,3.84,8.16,0,0,0,10.09,10.103346,50.43277700492171,63.05737658815221,9.2578125,0.4127606487257173,0.9600380589914367,0.43693803159173755,0.45673826596324196,0.19670921437429828,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,1,0.1589641216,15728.74,3.88,8.53,0,0,0,10.03,10.019978,50.47679891057882,63.64818986578672,9.21484375,0.41657791977280795,0.9525166191832859,0.4341142020497804,0.45764779683893536,0.17013147100531062,proxy
|
||||||
|
3proxy-devel-s,http-ka-1k,1,0.15971909632,15808.23,3.87,8.27,0,0,0,10.02,10.017009,50.18811265961463,63.28754144954998,9.22265625,0.41595744680851066,0.9533777354900095,0.43569170921468514,0.45485992485798715,0.18059012792040632,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-1k,1,0.15997075456,15831.45,3.85,8.24,0,0,0,10.11,10.101602,50.559241420383785,63.23373967213525,9.42578125,0.41363960113960113,0.9610266159695817,0.43290149107797604,0.4538911378448942,0.17679861119341972,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-1k,1,0.16013852672,15851.68,3.84,8.2,0,0,0,10.1,10.101885,50.45631532584141,63.08832990824084,9.4296875,0.41293088051437754,0.9600760456273765,0.4375907111756168,0.4567893862612044,0.198640624044735,proxy
|
||||||
|
nginx,http-ka-1k,1,0.38151389183999995,37057.34,1.7,2.09,0,0,0,10.04,10.021239999999999,21.052968638343778,27.03037417145442,30.16015625,0.42028169014084504,0.952561669829222,0.4705403203909856,0.6318408484554074,0.30130111555080424,proxy
|
||||||
|
haproxy,http-ka-1k,1,0.44468011007999997,44013.51,1.39,2.09,0,0,0,10.11,10.096156,18.188355666604767,22.744196405472106,29.6796875,0.45151294203426906,0.9601139601139601,0.4637044691294239,0.6991745997244001,0.3524977795690633,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,1,0.44468011007999997,44014.12,1.39,2.08,0,0,0,10.09,10.08918,18.152374745404757,22.69823273224634,35.78125,0.4520050807475957,0.9591254752851711,0.46409989594172735,0.6944913940883483,0.3315941350321348,proxy
|
||||||
|
haproxy-splice,http-ka-1k,1,0.4479516672,44334.18,1.38,2.1,0,0,0,10.01,10.002034,17.876928665218283,22.558864890203008,35.77734375,0.4506531204644412,0.9506172839506173,0.4601977107180021,0.6924801744328328,0.2916985833496722,proxy
|
||||||
|
direct,http-ka-1k,1,1.23287371776,119744.66,0.5,0.9,0,0,0,0.75,0.0,0.48666784874783114,0.6201509364692575,0.0,0.8065889735544599,0.2403846153846154,0.9545884578997161,2.4993839028209446,0.9545424224127576,origin
|
||||||
|
3proxy-devel-s0,http-ka-1m,1,22.24793059328,2652.44,5.71,11.54,0,0,0,10.03,9.959476,0.360662757659971,377.32300052667216,15.15234375,0.3882224645583424,0.9525166191832859,0.24046115838594564,0.9998366280754771,0.0769505741520448,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,1,36.16362463232,4311.93,3.43,8.4,0,0,0,10.01,9.953085,0.2214379803301886,231.83102505905785,15.140625,0.5162248144220573,0.9515209125475285,0.3939176245210728,1.5329951009442078,0.1340306766887575,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,1,35.991825940480005,4294.55,3.44,8.35,0,0,0,10.02,9.955137,0.22271723622069436,233.06119600865256,15.29296875,0.5147401908801696,0.9515669515669516,0.39427207637231504,1.5308397955210091,0.13208175432171948,client
|
||||||
|
3proxy-devel-s,http-ka-1m,1,36.16362463232,4308.44,3.45,8.13,0,0,0,10.03,9.961865000000001,0.22188041385732182,232.45573375359228,16.22265625,0.5152736529486636,0.9525166191832859,0.3940910173933762,1.529334021856379,0.14738254050068028,client
|
||||||
|
3proxy-devel-s0-b16384,http-ka-1m,1,13.7438953472,1643.02,9.46,16.28,0,0,0,10.02,9.993167,0.5832407623529433,608.7854669177957,15.4921875,0.3051531702683448,0.9524714828897338,0.12718505123568416,0.7717404316434988,0.047528560282719366,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-1m,1,34.61743640576,4124.68,3.6,8.62,0,0,0,10.03,9.951902,0.23179070529511783,242.7630942007939,16.38671875,0.5091063108852182,0.9525166191832859,0.3821532492725509,1.4891646560143783,0.14539798704445264,client
|
||||||
|
nginx,http-ka-1m,1,12.79900254208,1529.75,10.23,17.04,0,0,0,10.03,10.021498999999999,0.62692385391901,654.4007307366086,45.2421875,0.30868089233753637,0.9525166191832859,0.08575851393188855,0.8334374058778881,0.05320741209001782,proxy
|
||||||
|
haproxy,http-ka-1m,1,5.46333261824,650.39,24.39,28.57,0,0,0,10.09,10.101011,1.4774864655047082,1536.0024356827523,36.38671875,0.6110876897133221,0.9600380589914367,0.13707165109034267,1.1898620076681177,0.021850487198248572,client
|
||||||
|
haproxy-splice-response,http-ka-1m,1,26.027501813759997,3101.81,5.02,6.9,0,0,0,10.1,10.03039,0.3104408582051595,322.40559261978484,52.15625,0.580728051391863,0.957345971563981,0.21896162528216703,1.6063152899052378,0.11216210225403214,client
|
||||||
|
haproxy-splice,http-ka-1m,1,25.512105738240002,3038.07,5.18,6.72,0,0,0,10.0,9.978821,0.31357662444965606,329.0231303260619,51.796875,0.5776595744680851,0.9505703422053232,0.2484146677695065,1.5739657046223603,0.09794110384384316,client
|
||||||
|
direct,http-ka-1m,1,71.21055776767999,8488.68,1.29,2.31,0,0,0,0.09,0.0,0.0010110860279299526,1.0585620023288365,0.0,0.9357277882797732,0.01651376146788991,0.6004509018036072,3.718057796169539,0.4521331529591529,client
|
||||||
|
3proxy-devel-s0,http-ka-50k-2000,1,4.2731569151999995,10383.57,53.04,212.07,0,349,0,10.41,10.375375,1.9489104110304407,99.52293998986606,152.40234375,0.4757016840417001,0.9886039886039886,0.5061886470337175,0.4717720755395074,0.1368067408478492,proxy
|
||||||
|
3proxy-devel-s1,http-ka-50k-2000,1,4.282384384,10406.01,58.35,170.42,0,537,0,10.38,10.352075,1.9391066413901812,99.10821700689365,181.4140625,0.48346257319196073,0.9866920152091255,0.5079804213662481,0.4717953994220323,0.1434655662881284,proxy
|
||||||
|
3proxy-devel-s3,http-ka-50k-2000,1,4.29672890368,10440.86,57.67,220.78,0,488,0,10.4,10.357133,1.9363567463784384,98.94961181306135,185.73046875,0.47909352058729654,0.9876543209876543,0.5053487376979033,0.47392605289867995,0.1311808301833015,proxy
|
||||||
|
3proxy-devel-s,http-ka-50k-2000,1,4.30260092928,10455.15,57.67,192.19,0,498,0,10.39,10.350612,1.931854740102735,98.84130215567268,173.1875,0.4795284371515055,0.9867046533713201,0.5053373185311699,0.4746505183955173,0.13012496982216176,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-50k-2000,1,3.75113383936,9115.22,66.29,210.12,0,470,0,10.41,10.372024999999999,2.2201287281769937,113.48027993982602,154.1171875,0.4891935483870968,0.9895437262357415,0.4899658411614005,0.4689328544838348,0.12349655786392759,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-50k-2000,1,4.1347448832,10047.4,64.94,180.9,0,431,0,10.37,10.342967,2.006411576614488,102.48352061035509,165.5390625,0.4928684627575277,0.9857414448669202,0.5115984816533108,0.49757137816085856,0.13017326406884513,proxy
|
||||||
|
nginx,http-ka-50k-2000,1,4.638061363199999,11265.07,50.44,69.7,0,361,0,10.16,10.109595,1.7524563311064387,89.59672654479395,63.109375,0.4090994902775156,0.9657794676806084,0.42518205308902984,0.4976570441641445,0.1273767349724711,proxy
|
||||||
|
haproxy,http-ka-50k-2000,1,4.06570663936,9733.14,194.27,651.11,0,0,0,10.08,10.034279999999999,1.9834190499463553,102.9590513058844,175.5390625,0.5377901578458681,0.9572649572649573,0.30045686643375435,0.9047309189835071,0.09121253700914043,client
|
||||||
|
haproxy-splice-response,http-ka-50k-2000,1,4.938373529600001,11931.21,162.75,418.08,0,0,0,10.11,10.052971999999999,1.6377861965121772,84.19036515801308,155.83203125,0.5383667722632876,0.9601139601139601,0.4761404246373765,0.8067980737033358,0.1140306197872149,proxy
|
||||||
|
haproxy-splice,http-ka-50k-2000,1,4.93761855488,11942.39,162.47,529.94,0,0,0,10.12,10.074097,1.6396568325429823,84.32981959085038,134.15234375,0.5493783303730018,0.9619771863117871,0.4871741828713281,0.8694120339962966,0.11590941550659115,proxy
|
||||||
|
direct,http-ka-50k-2000,1,35.47642986496,86102.16,21.22,576.35,0,514,0,1.09,0.0,0.02457969991115912,1.2558110062041672,0.0,0.9159683426443203,0.3002754820936639,0.9537974683544304,3.477134938162794,0.952066090325687,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,1,3.8684065791999998,9399.96,67.91,393.1,0,483,0,10.4,10.361061,2.1507563462268244,109.8216454239221,213.67578125,0.379041248606466,0.9885931558935361,0.5158629441624365,0.42512688146627275,0.14628727141864198,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,1,3.88317052928,9435.83,66.38,168.14,0,573,0,10.41,10.358768,2.1446392676306543,109.66668071299145,187.703125,0.3759566921784581,0.9876660341555977,0.5139830508474577,0.42517685061590815,0.15484309587917902,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,1,3.80909912064,9255.89,70.19,179.8,0,477,0,10.39,10.353655999999999,2.182143267146965,111.48068669527898,187.8046875,0.37418147801683815,0.9876425855513308,0.5155358275206088,0.4223236307598903,0.15203846341451094,proxy
|
||||||
|
3proxy-devel-s,http-ka-2k-50k-2000,1,3.87545300992,9417.1,66.27,227.9,0,494,0,10.39,10.373315999999999,2.1447815206954566,109.4548327627074,177.9296875,0.3746949502534259,0.9895238095238095,0.5114389565961086,0.4233288400444734,0.1444706847545287,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-2k-50k-2000,1,3.3978056704,8256.4,74.91,644.9,0,405,0,10.39,10.358665,2.446284692620896,124.98496331047757,165.87890625,0.3752636625119847,0.9867046533713201,0.49830076465590484,0.42612536209521856,0.1263565178547908,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-2k-50k-2000,1,3.73351776256,9072.18,72.72,176.39,0,428,0,10.44,10.398475999999999,2.2370323462109893,114.27195411608892,153.5078125,0.38324253240653766,0.9914529914529915,0.5217300459674049,0.4489340611599888,0.1491689150541953,proxy
|
||||||
|
nginx,http-ka-2k-50k-2000,1,4.2433773568,10306.54,105.18,113.89,0,163,0,10.17,10.13226,1.917340673688161,98.00425937882453,106.3359375,0.3369520688242524,0.9658119658119658,0.3327969965138107,0.4348571525540685,0.13020383386196338,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,1,3.4691088384,8277.86,228.43,759.85,0,0,0,10.1,10.043824,2.329128423577107,121.24558834121629,149.22265625,0.5178066704352742,0.9591642924976258,0.278109877597495,0.828742360069942,0.10170015704485376,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,1,4.572378562560001,11050.19,174.99,462.17,0,0,0,10.11,10.058594999999999,1.7688824075563112,90.99828084355677,131.578125,0.4975416036308623,0.9610266159695817,0.43171296296296297,0.8028133760237423,0.12925880664525713,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,1,4.55778238464,11015.49,176.46,377.69,0,0,0,10.11,10.068029,1.7745472068295856,91.14019904803115,140.30078125,0.4947049924357035,0.9610266159695817,0.4532085561497326,0.792316477647665,0.12925471494200372,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,1,29.72117368832,72203.1,25.67,493.73,0,503,0,0.53,0.0,0.014265923830815135,0.7285674027946746,0.0,0.9114776951672863,0.14520547945205478,0.9543436905516804,3.3871575690156006,0.9520215385086559,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,1,0.0541065216,5274.49,11.9,17.12,0,0,0,10.02,9.886059,148.1521961300872,189.48921121806387,13.64453125,0.33622517833044147,0.9524714828897338,0.3985419198055893,0.2883541817494699,0.08557330799583412,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,1,0.052680458240000005,5139.58,12.19,17.87,0,0,0,10.03,9.890812,152.31454448335487,194.64011953969455,15.21484375,0.33494395052183995,0.9534220532319392,0.3982451864489398,0.2883476589307495,0.08843311087344272,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,1,0.052680458240000005,5135.45,12.22,17.63,0,0,0,10.03,9.887891999999999,152.31454448335487,194.81780747416673,13.54296875,0.33634789301520107,0.9534220532319392,0.39829683698296836,0.28547561902507407,0.08747341613895045,proxy
|
||||||
|
3proxy-devel-s,http-close-1k,1,0.05318377472,5183.23,12.11,17.43,0,0,0,10.03,9.878613999999999,150.87308191726635,193.17809749427013,13.94140625,0.33596761757902854,0.9525166191832859,0.3963369963369963,0.28645065883500437,0.08652944225796788,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-close-1k,1,0.05209325568,5078.54,12.35,18.39,0,0,0,10.02,9.871992,153.87788486941423,196.85271409206106,18.515625,0.3350714561606798,0.9515669515669516,0.3973170731707317,0.2863725768377068,0.08745979364096197,proxy
|
||||||
|
3proxy-devel-s-b16384,http-close-1k,1,0.05142216704,5011.42,12.54,18.32,0,0,0,10.03,9.876999,156.0416540547257,199.76100378410675,17.07421875,0.3332043343653251,0.9525166191832859,0.39307635649398476,0.28548690196309406,0.08652498360604899,proxy
|
||||||
|
nginx,http-close-1k,1,0.13245612031999998,12911.62,4.8,5.8,0,0,0,10.1,10.051725,61.00133372832885,77.44923624317526,29.83203125,0.5291120815138283,0.9600760456273765,0.38501158897759463,0.7134800717832994,0.1416248129330346,proxy
|
||||||
|
haproxy,http-close-1k,1,0.17121148928,16695.0,3.67,4.46,0,0,0,10.1,10.065406000000001,47.193094540436675,59.8979954928241,29.7578125,0.5405648497931282,0.9600760456273765,0.44546078207180423,0.7983905088158325,0.1768505891260018,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,1,0.17347641344,16913.25,3.62,4.41,0,0,0,10.1,10.065156,46.57693711655283,59.12760439534707,35.92578125,0.5411849710982659,0.9600760456273765,0.447911886186324,0.8085415569854502,0.18053177735882933,proxy
|
||||||
|
haproxy-splice,http-close-1k,1,0.1736441856,16927.99,3.64,4.26,0,0,0,10.11,10.066308,46.57800646795743,59.13940755299733,35.75390625,0.5438121047877146,0.959203036053131,0.4437993497445425,0.8151335649953132,0.18333539739301583,proxy
|
||||||
|
direct,http-close-1k,1,0.50138710016,48883.58,0.85,2.3,0,0,0,4.67,0.0,7.451328522029761,9.458515195398341,0.0,0.7885297184567257,0.523542600896861,0.9372854914196568,2.3174885820564706,0.9099549536267886,origin
|
||||||
|
3proxy-devel-s1,http-ka-1k,2,0.16215179264,16051.26,3.79,8.17,0,0,0,10.1,10.104155,49.82985305588787,62.29953121144831,9.26953125,0.4316423043852107,0.9600760456273765,0.4541597925995758,0.4520163951524231,0.1824810363300034,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,2,0.161480704,15985.52,3.81,8.24,0,0,0,10.1,10.102463,50.03693815949675,62.55690510551058,9.42578125,0.42711218836565096,0.9600760456273765,0.4579155980415015,0.4507888716442862,0.17860091997930433,proxy
|
||||||
|
3proxy-devel-s,http-ka-1k,2,0.16265510912,16096.18,3.79,7.86,0,0,0,10.1,10.101581,49.67566062765923,62.1259372712566,9.42578125,0.43405562190752434,0.9609895337773549,0.4550799623706491,0.45100467598885113,0.18911346001052706,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-1k,2,0.1619001344,16021.71,3.8,8.11,0,0,0,10.11,10.103744,49.95672196304242,62.47798438977363,9.3203125,0.43411118737131094,0.9610266159695817,0.45520808840818244,0.4538427454990369,0.17579509064541296,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-1k,2,0.16240345088,16071.06,3.81,8.01,0,0,0,10.03,10.015326,49.407817115468426,62.334143325026254,9.4375,0.4306607019958706,0.9525166191832859,0.4525375939849624,0.4529508260506301,0.20623146585032448,proxy
|
||||||
|
nginx,http-ka-1k,2,0.38705037312,37594.88,1.68,2.06,0,0,0,10.01,10.012324,20.689813409680458,26.589739707433175,30.171875,0.4433860531991373,0.9515209125475285,0.4993624075490946,0.6298231593784447,0.29742458370107844,proxy
|
||||||
|
haproxy,http-ka-1k,2,0.45197819904000003,44731.25,1.37,2.08,0,0,0,10.01,10.004838,17.71766872165286,22.355476645115182,29.7265625,0.4851720047449585,0.9515209125475285,0.5128145386766076,0.6848256645333104,0.2792903051204743,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,2,0.4546625536,44995.14,1.36,2.04,0,0,0,10.1,10.095902,17.7714217632899,22.22417814549135,35.77734375,0.4910008410428932,0.9591642924976258,0.5209195402298851,0.6902218638735964,0.3076861431045227,proxy
|
||||||
|
haproxy-splice,http-ka-1k,2,0.45390757888,44922.78,1.36,2.05,0,0,0,10.1,10.08997,17.800980587143087,22.261749685359923,35.77734375,0.4853165846206077,0.9600760456273765,0.5203588681849551,0.6879458754283496,0.3173934082241718,proxy
|
||||||
|
direct,http-ka-1k,2,1.2486443007999999,121272.65,0.521,0.807,0,0,0,0.66,0.0,0.4228586152691468,0.5388498494894398,0.0,0.8149158708503865,0.22,0.9579513120455264,2.5308834596875682,0.9581107378379522,origin
|
||||||
|
3proxy-devel-s0,http-ka-1k,2,0.16240345088,16070.31,3.79,8.02,0,0,0,10.11,10.103929,49.801897411504065,62.289748992643524,9.4296875,0.43495378295104414,0.9610266159695817,0.45891690009337066,0.45389685294147936,0.20147993571801923,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1m,2,36.507222016,4346.85,3.41,8.27,0,0,0,10.02,9.951208000000001,0.219572992885814,230.18079070087984,16.28125,0.525987525987526,0.9515669515669516,0.42171142467000455,1.5385208046343255,0.14919700378771308,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,2,36.59312136192,4361.29,3.4,8.29,0,0,0,10.01,9.956336,0.21883894300236953,229.23489133670736,15.30078125,0.5326109180126763,0.9506172839506173,0.4425148384260277,1.540395843072592,0.1500457511594017,client
|
||||||
|
3proxy-devel-s,http-ka-1m,2,36.335423324160004,4333.69,3.41,8.34,0,0,0,10.02,9.956209,0.22061116306494313,230.8808958731768,16.06640625,0.5293632804450855,0.9524714828897338,0.43569203382287497,1.5359478990721496,0.13402842890856698,client
|
||||||
|
3proxy-devel-s0-b16384,http-ka-1m,2,13.915694039040002,1660.72,9.36,16.17,0,0,0,10.03,9.991707,0.5766151495921757,602.5471584765108,16.4140625,0.31786380597014924,0.9534220532319392,0.16508484325568018,0.7831913495177182,0.048495198723882534,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-1m,2,35.30463117312,4205.97,3.52,8.51,0,0,0,10.02,9.940395,0.22705236490625533,237.86350148367953,16.44140625,0.5201738050900062,0.9515669515669516,0.4144781913678922,1.5025993175700765,0.14719520148581502,client
|
||||||
|
nginx,http-ka-1m,2,12.54130450432,1498.85,10.49,15.28,0,0,0,10.02,10.01961,0.6391679587429516,667.243790370913,45.3125,0.302779132130668,0.9524714828897338,0.11891245891843442,0.7532902773387028,0.05128838843634334,proxy
|
||||||
|
haproxy,http-ka-1m,2,6.161852006399999,734.04,21.58,24.92,0,0,0,10.1,10.09821,1.3112940706150873,1362.4713341427223,41.84375,0.593212964977159,0.9600760456273765,0.1845841784989858,1.1765027721325647,0.024701768781120032,client
|
||||||
|
haproxy-splice-response,http-ka-1m,2,27.917287424,3322.93,4.75,6.49,0,0,0,10.01,9.981732000000001,0.2868473529815674,301.06168606574636,52.16015625,0.5832976445396145,0.9506172839506173,0.262586115527292,1.64594122297405,0.11017151902285545,client
|
||||||
|
haproxy-splice,http-ka-1m,2,27.74548873216,3309.82,4.78,5.68,0,0,0,10.01,10.00081,0.28862349758207245,302.2434252241915,51.99609375,0.584954050010686,0.9515209125475285,0.26904887020493956,1.6403801164330536,0.10165325659467904,client
|
||||||
|
direct,http-ka-1m,2,70.866960384,8450.72,1.3,2.34,0,0,0,0.13,0.0,0.0014675386024243903,1.5336518610275467,0.0,0.9212671791288144,0.022847100175746926,0.6068981809591306,3.6038268628692838,0.47799763517772376,client
|
||||||
|
3proxy-devel-s0,http-ka-1m,2,22.41972928512,2674.76,5.66,11.49,0,0,0,10.02,9.947180000000001,0.35754222979490785,374.00619611063416,16.01953125,0.401195049082373,0.9524714828897338,0.2924288617886179,0.9971223914075126,0.09316516924361541,client
|
||||||
|
3proxy-devel-s1,http-ka-50k-2000,2,4.32667623424,10513.71,54.64,151.99,0,466,0,10.38,10.350198,1.9192561565583925,98.0855366356094,171.66796875,0.48966910051266116,0.9857549857549858,0.5157390035438816,0.4687058766355299,0.13296973033824547,proxy
|
||||||
|
3proxy-devel-s3,http-ka-50k-2000,2,4.345298944,10558.91,59.75,643.53,0,432,0,10.38,10.350204999999999,1.9110307730302847,97.79444324059506,188.0078125,0.4931804091754495,0.9866920152091255,0.5167224080267558,0.47271554275288613,0.13204973806051715,proxy
|
||||||
|
3proxy-devel-s,http-ka-50k-2000,2,4.3247468544,10509.03,59.27,487.39,0,398,0,10.38,10.346876,1.9201123856651878,98.1068589737531,188.73828125,0.49482785240080285,0.9857549857549858,0.5167014613778705,0.47157143565344045,0.13009067888689382,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-50k-2000,2,3.8373687296,9324.65,66.06,200.38,0,497,0,10.38,10.361262,2.1639828187336048,110.63739074824132,157.05859375,0.5003935148748623,0.9866920152091255,0.5027038269550749,0.46966163396236604,0.11488552811528693,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-50k-2000,2,4.2475716608,10321.47,61.3,413.75,0,470,0,10.4,10.347149,1.9587662467907574,99.90393852065321,156.5625,0.49834827748938176,0.9876543209876543,0.5202408137845131,0.5091301833195494,0.12836922460555777,proxy
|
||||||
|
nginx,http-ka-50k-2000,2,4.688728555520001,11388.24,96.64,104.94,0,180,0,10.16,10.126322,1.7335189921436112,88.43241361302115,104.08203125,0.4397526501766785,0.9657794676806084,0.40820174404902193,0.46626307136573036,0.11782422216267634,proxy
|
||||||
|
haproxy,http-ka-50k-2000,2,4.16217563136,9965.07,192.22,557.83,0,0,0,10.08,10.041373,1.9374482756666065,100.4664513814137,184.3828125,0.5531760435571688,0.9581749049429658,0.3705839942321557,0.9278540166685676,0.09210091370511031,client
|
||||||
|
haproxy-splice-response,http-ka-50k-2000,2,4.944581099520001,11954.71,161.51,424.7,0,0,0,10.13,10.060141999999999,1.638965938042093,84.1494920294731,141.05078125,0.5574490513000703,0.961100569259962,0.4946982055464927,0.8927904994404379,0.11301307456308043,proxy
|
||||||
|
haproxy-splice,http-ka-50k-2000,2,5.03207428096,12169.16,159.9,308.34,0,0,0,10.12,10.069588,1.608879270847225,82.51255625856109,140.1328125,0.5536142514559781,0.9610636277302944,0.49367862969004894,0.8251733791720696,0.11014911356362714,proxy
|
||||||
|
direct,http-ka-50k-2000,2,35.47642986496,86203.66,22.15,740.84,0,9,0,1.21,0.0,0.027285721919727095,1.3918124618976961,0.0,0.9161214953271029,0.31842105263157894,0.9537828426717315,3.480148055366443,0.9522419193186082,origin
|
||||||
|
3proxy-devel-s0,http-ka-50k-2000,2,4.3260890316800005,10512.33,56.35,255.16,0,469,0,10.4,10.369798000000001,1.9232151578648853,98.26338366182279,196.94921875,0.48795369211514394,0.9885931558935361,0.513717277486911,0.47344011565487054,0.131035730757766,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,2,3.9412196966399997,9577.04,63.3,169.6,0,539,0,10.4,10.367619,2.1110216228476255,107.97678499122689,197.6796875,0.406100372406455,0.9885931558935361,0.5186426476749058,0.4243832667282751,0.14355145501300845,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,2,3.94155524096,9577.51,63.78,162.33,0,530,0,10.39,10.353228000000001,2.1088122560412326,107.71192502669473,185.73828125,0.4072566371681416,0.9876425855513308,0.5184100418410041,0.424973817419332,0.14624514112644404,proxy
|
||||||
|
3proxy-devel-s,http-ka-2k-50k-2000,2,3.9021287833600002,9481.84,72.93,320.54,0,360,0,10.4,10.356545,2.1321695059064427,108.98497264896359,198.24609375,0.4086818422445738,0.9876543209876543,0.524756577584421,0.4223553247741488,0.14162638879745407,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-2k-50k-2000,2,3.46374012928,8416.5,79.87,434.56,0,513,0,10.39,10.3523,2.3997181340875584,122.61467835774219,170.34375,0.4045578851412944,0.9876425855513308,0.5129682997118156,0.4268570471415707,0.13103205836644766,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-2k-50k-2000,2,3.8689937817600004,9401.46,66.92,172.82,0,493,0,10.4,10.355029,2.150429922948918,109.86224964083495,150.32421875,0.412384011420414,0.9867172675521821,0.5239279055313859,0.4515122257312743,0.14432018010554254,proxy
|
||||||
|
nginx,http-ka-2k-50k-2000,2,4.25017212928,10322.87,77.36,98.3,0,325,0,10.16,10.115584,1.9123931343874587,97.6960652332782,89.6796875,0.392216134517287,0.9639468690702088,0.39573633913256556,0.44579286988786676,0.13100244055194604,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,2,3.75197270016,8970.04,214.27,580.21,0,0,0,10.08,10.038281,2.1492693695921927,111.65758341087331,157.5625,0.5445652173913044,0.9581749049429658,0.30976339407125375,0.863776764204106,0.10260852562694096,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,2,4.7185081139200005,11412.36,169.75,434.87,0,0,0,10.13,10.066685,1.7174920132260687,88.07317115581908,131.62109375,0.5288808664259927,0.9620132953466287,0.4805721605465414,0.8357201465754462,0.1348074143638253,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,2,4.731929886720001,11442.8,170.02,442.04,0,0,0,10.12,10.069836,1.7109298307063143,87.87239400175397,151.04296875,0.5292634611921484,0.9619771863117871,0.4728682170542636,0.8304696697694359,0.12921236624288449,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,2,30.32246910976,73682.55,25.59,550.72,0,0,0,0.91,0.0,0.02400859894901092,1.223077181546319,0.0,0.9067875406787541,0.23273657289002558,0.9440914866581956,3.372824986032928,0.9488999923637065,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,2,3.9397097472,9572.98,66.73,154.67,0,528,0,10.4,10.365768,2.1118307017193656,107.68052017974364,199.0859375,0.4099138688697486,0.9876543209876543,0.5231471870458791,0.423059643294134,0.14907820844189612,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,2,0.0536870912,5232.66,12.02,17.03,0,0,0,10.03,9.915843,149.45864677429196,191.11678512223472,12.7734375,0.3626760563380282,0.9534220532319392,0.42992819087329165,0.2986682496324167,0.09213675130444456,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,2,0.05351931904,5218.54,12.05,17.18,0,0,0,10.02,9.901702,149.7776904449941,191.64196232188965,12.55859375,0.36427514792899407,0.9524714828897338,0.43105446118192353,0.2949324691160963,0.09122256344228209,proxy
|
||||||
|
3proxy-devel-s,http-close-1k,2,0.05318377472,5181.56,12.12,17.52,0,0,0,10.02,9.898463,150.7226601007985,193.0189551548775,12.69140625,0.36181649675625577,0.9524714828897338,0.42979610750695085,0.29301132832780546,0.09026416898398813,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-close-1k,2,0.05385486336,5248.77,11.98,17.16,0,0,0,10.02,9.907335999999999,148.8444961120035,190.45808781600456,17.09765625,0.3632486556647506,0.9533777354900095,0.43148148148148147,0.29686878723981047,0.09218547355971289,proxy
|
||||||
|
3proxy-devel-s-b16384,http-close-1k,2,0.053938749439999996,5257.97,11.96,17.32,0,0,0,10.01,9.896495999999999,148.46469529123735,190.04404617253948,17.99609375,0.3628942486085343,0.9515209125475285,0.4292364990689013,0.29592724722946334,0.09219448962925123,proxy
|
||||||
|
nginx,http-close-1k,2,0.13958643712000002,13607.39,4.6,5.1,0,0,0,10.02,9.968582,57.42678275475135,73.57098278204046,29.7734375,0.5362578334825425,0.9515669515669516,0.39099465784787585,0.7124316679566572,0.1501644845987827,proxy
|
||||||
|
haproxy,http-close-1k,2,0.17263755264,16829.75,3.66,4.27,0,0,0,10.1,10.06485,46.80325848252248,59.41735692771084,29.5390625,0.5490021382751248,0.9591642924976258,0.4747209455022981,0.8109884485632599,0.20129017139193245,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,2,0.17154703359999998,16722.64,3.68,4.39,0,0,0,10.09,10.06437,47.05415086816167,59.74019822614833,35.77734375,0.548886910062333,0.9600380589914367,0.48826291079812206,0.8059883509989824,0.17393779282239935,proxy
|
||||||
|
haproxy-splice,http-close-1k,2,0.171966464,16767.92,3.67,4.35,0,0,0,10.11,10.063716,47.032426043254574,59.699906109939946,35.8046875,0.5484848484848485,0.9601139601139601,0.47601555747623164,0.8058214361231606,0.1976494964420993,proxy
|
||||||
|
direct,http-close-1k,2,0.49752834048,48509.04,0.849,2.35,0,0,0,4.62,0.0,7.428722545602555,9.429937807314937,0.0,0.7853577371048253,0.5202702702702703,0.9349719975108899,2.306941997390101,0.8979532221100885,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,2,0.05142216704,5014.2,12.47,18.95,0,0,0,10.02,9.890797999999998,155.8860791254588,199.4863525055247,14.046875,0.3600296625880608,0.9524714828897338,0.42574947710899375,0.28823968603574446,0.0874006738991246,proxy
|
||||||
|
27
bench/data/m4-env.txt
Normal file
27
bench/data/m4-env.txt
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
bench/bench.py --reps 3 --duration 10 --out bench/results-final --proxy none --proxy 3proxy:bench/bin/3proxy-0.9.4:-ocTCP_NODELAY -osTCP_NODELAY --proxy 3proxy:bench/bin/3proxy-0.9.4:-s0 -ocTCP_NODELAY -osTCP_NODELAY --proxy 3proxy:bench/bin/3proxy-1.0.1:-ocTCP_NODELAY -osTCP_NODELAY --proxy 3proxy:bench/bin/3proxy-devel --proxy 3proxy:bench/bin/3proxy-devel:-s --proxy nginx --proxy haproxy
|
||||||
|
Linux ubuntu-virt 6.8.0-139-generic #139-Ubuntu SMP PREEMPT_DYNAMIC Sat Aug 1 03:32:48 UTC 2026 aarch64 aarch64 aarch64 GNU/Linux
|
||||||
|
Architecture: aarch64
|
||||||
|
CPU op-mode(s): 64-bit
|
||||||
|
Byte Order: Little Endian
|
||||||
|
CPU(s): 8
|
||||||
|
On-line CPU(s) list: 0-7
|
||||||
|
Vendor ID: Apple
|
||||||
|
BIOS Vendor ID: Apple Inc.
|
||||||
|
Model name: -
|
||||||
|
BIOS Model name: CPU @ 0.0GHz
|
||||||
|
BIOS CPU family: 257
|
||||||
|
Model: 0
|
||||||
|
Thread(s) per core: 1
|
||||||
|
Core(s) per cluster: 8
|
||||||
|
Socket(s): 1
|
||||||
|
Cluster(s): 1
|
||||||
|
Stepping: 0x0
|
||||||
|
BogoMIPS: 48,00
|
||||||
|
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 asimddp sha512 asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp flagm2 frint i8mm bf16 bti afp
|
||||||
|
NUMA node(s): 1
|
||||||
|
NUMA node0 CPU(s): 0-7
|
||||||
|
8
|
||||||
|
iperf 3.16 (cJSON 1.7.15)
|
||||||
|
wrk debian/4.1.0-4build2 [epoll] Copyright (C) 2012 Will Glozer
|
||||||
|
nginx version: nginx/1.24.0 (Ubuntu)
|
||||||
|
HAProxy version 2.8.16-0ubuntu0.24.04.3 2026/06/19 - https://haproxy.org/
|
||||||
64
bench/data/m4-grace.csv
Normal file
64
bench/data/m4-grace.csv
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
3proxy-devel-s1,stream1,0,22.041673213188425,nan,nan,nan,0,0,0,10.0,9.995028,0.3628207405007609,nan,9.9375,0.16319677635997312,0.9505703422053232,0.21829025844930416,0.19979315782188845,0.5597283047157519,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1,0,21.606089266254568,nan,nan,nan,0,0,0,9.99,10.001665000000001,0.36977499098669947,nan,3.6875,0.05353483606557377,0.950523311132255,0.2128594249201278,0.1931557965621712,0.5569698704548665,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1,0,21.78362384571212,nan,nan,nan,0,0,1,9.97,9.970201,0.36604762959063003,nan,3.7109375,0.16689068100358423,0.9486203615604186,0.20493128536782537,0.20547840649017796,0.5530301128579423,proxy
|
||||||
|
3proxy-devel-s1,stream16,0,20.98501341553199,nan,nan,nan,0,0,1837,10.05,9.999481,0.3823676246661938,nan,71.14453125,0.1461626575028637,0.9535104364326376,0.2629020194465221,0.2016552398173331,0.5719161458470415,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream16,0,21.006135458736054,nan,nan,nan,0,0,1812,10.04,10.009012,0.3811622152135727,nan,78.4140625,0.13242115027829313,0.9534662867996201,0.26409495548961426,0.19684157106711767,0.5659885732491913,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream16,0,20.877472281907437,nan,nan,nan,0,0,1810,10.03,9.995065,0.38333288490137757,nan,73.42578125,0.14062140391254316,0.9525166191832859,0.2653516933382955,0.19786472489855697,0.5633683162022683,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,0,48.11217664383748,nan,nan,nan,0,0,0,9.93,8.82478,0.16509378651814705,nan,11.3984375,0.2386850881372082,0.8929856115107914,0.18128464297358982,0.9476654050037366,0.3669305476067853,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1-down,0,23.623424106867443,nan,nan,nan,0,0,56,5.79,5.181664,0.19605353495713818,nan,11.28125,0.14747120681021533,0.561046511627907,0.07515878616796048,0.5513346606449316,0.2105040614762583,none
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1-down,0,18.875178947435767,nan,nan,nan,0,0,90,5.16,4.977994,0.2186376453343071,nan,10.32421875,0.12210200927357033,0.5108910891089109,0.0897917377944691,0.4543459041421457,0.19448555482945185,none
|
||||||
|
3proxy-devel-s1,http-ka-1k,0,0.15544090624,15384.81,3.99,8.21,0,0,0,10.02,10.00891,51.5694368612554,65.04888404160012,9.44140625,0.40464613722312265,0.9506641366223909,0.42839687194525905,0.4339179103580278,0.2080315032032753,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1k,0,0.15418261504,15262.53,4.0,8.24,0,0,0,10.09,10.089565,52.35350300619729,65.46082082289897,9.44140625,0.40641325887227525,0.9591254752851711,0.43201754385964913,0.43583807631766014,0.19207251683954038,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1k,0,0.15535702016,15378.85,3.98,8.27,0,0,0,10.09,10.093444,51.95774218433619,64.96391251440602,9.4296875,0.4051022254387552,0.9600380589914367,0.4281856125705868,0.4367809474229265,0.19769630986927889,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1m,0,34.70333575168,4140.64,3.6,8.71,0,0,0,10.02,9.955981000000001,0.23098644053581918,241.6146222661619,18.9453125,0.5075323573095692,0.9524714828897338,0.38543430921848537,1.4908364674289694,0.13017197540318576,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1m,0,35.47642986496,4225.83,3.52,8.39,0,0,0,10.01,9.954578,0.2257273358813787,236.59827928524157,17.1484375,0.508809170027595,0.9515209125475285,0.38654448999276586,1.5026015111581696,0.16444224074517125,client
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1m,0,35.47642986496,4230.78,3.5,9.64,0,0,0,10.02,9.932354,0.225952837715426,236.49924471299093,15.4609375,0.5098496081338699,0.9515669515669516,0.381044957472661,1.509188485469852,0.1815674042122278,client
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,0,3.68880648192,8963.48,72.8,174.67,0,465,0,10.41,10.366329,2.257640795422082,115.29643699675486,180.5859375,0.3658582440308329,0.9895437262357415,0.5075323573095692,0.4052089912010651,0.1444211719728047,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-2k-50k-2000,0,3.7002149888,8991.5,69.27,525.85,0,476,0,10.4,10.364125,2.248517998328044,114.76241972148044,189.984375,0.3692682013849897,0.9876543209876543,0.5002150537634409,0.4052052143799367,0.13491834566724126,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-2k-50k-2000,0,3.70147328,8994.36,71.54,178.82,0,503,0,10.39,10.35644,2.2455923280364734,114.80536126672634,192.140625,0.36543163438028964,0.9876425855513308,0.5052116570942353,0.4052439324322154,0.1349179666890393,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,0,0.05209325568,5078.1,12.38,17.73,0,0,0,10.01,9.893519,153.72431412603157,196.7838326649367,14.17578125,0.33629001156961047,0.9515209125475285,0.3986338131251525,0.2911756517006067,0.08934148795517323,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-close-1k,0,0.05184159744,5056.56,12.44,17.57,0,0,0,10.01,9.891718,154.470548660624,197.408641804879,12.46875,0.33481367059277856,0.9515209125475285,0.39921913128355296,0.2892011192185901,0.0912509664106863,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-close-1k,0,0.05184159744,5056.15,12.41,17.77,0,0,0,10.01,9.896576,154.470548660624,197.3035833957504,12.2734375,0.35669027208348864,0.9524262607040913,0.42044653349001176,0.2882885548428031,0.08932563080708415,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1,1,22.050698104744257,nan,nan,nan,0,0,0,10.01,10.002903,0.36304544237408487,nan,7.4296875,0.062,0.9506172839506173,0.21771950735001985,0.18643242068520918,0.5624450768262327,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1,1,22.3604293320063,nan,nan,nan,0,0,1,9.98,9.980543,0.3569416144212108,nan,8.3125,0.13877457704618198,0.9486692015209125,0.21528054118583367,0.19218242147389017,0.5701955741901206,proxy
|
||||||
|
3proxy-devel-s1,stream1,1,21.04514687754481,nan,nan,nan,0,0,0,9.99,10.001968,0.37967964535168275,nan,3.5546875,0.05825489697278046,0.950523311132255,0.2093487814622453,0.1864745656746888,0.5500643453570406,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream16,1,20.921604090672044,nan,nan,nan,0,0,1856,10.04,10.008245,0.38281185577797655,nan,68.703125,0.1370781322237633,0.9543726235741445,0.26327599102468213,0.19689527269972923,0.5672316009138864,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream16,1,20.72837475122664,nan,nan,nan,0,0,1842,10.03,9.987748,0.38638135394313305,nan,78.44921875,0.1270175438596491,0.9516129032258065,0.2661469933184855,0.19776455421057051,0.563032071692048,proxy
|
||||||
|
3proxy-devel-s1,stream16,1,20.799201924457062,nan,nan,nan,0,0,1997,10.05,10.001333,0.3855709740375864,nan,50.51953125,0.14874141876430205,0.9535104364326376,0.26432047922126545,0.19967410734354324,0.5630846256634613,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1-down,1,28.567667280062423,nan,nan,nan,0,0,47,6.73,6.278795000000001,0.1884430264733975,nan,11.296875,0.1628505273990224,0.6559454191033138,0.12272883099074391,0.5990660873828958,0.25929923186707904,none
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1-down,1,18.340526266479632,nan,nan,nan,0,0,68,5.24,5.078708,0.22853728544989424,nan,11.2734375,0.12236944660950896,0.5193260654112983,0.10789915966386554,0.43583521764548416,0.2140624245209344,none
|
||||||
|
3proxy-devel-s1,stream1-down,1,48.33422589203657,nan,nan,nan,0,0,0,9.94,9.045732,0.16451078493779556,nan,8.47265625,0.23870660960532572,0.9036363636363637,0.19089147286821706,0.9490564909067396,0.37234214156807,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1k,1,0.15695085568,15533.29,3.94,8.14,0,0,0,10.09,10.08778,51.43011145130444,64.31503531271512,9.44140625,0.42624371641532327,0.9591254752851711,0.45002357378595004,0.4300175559039714,0.16249376204697386,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1k,1,0.15661531136,15502.04,3.96,8.38,0,0,0,10.0,10.000726,51.08057399069362,64.44212452796144,9.2109375,0.4239944279993035,0.949667616334283,0.4461502125649504,0.4317664232040751,0.18333037755336878,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,1,0.15577645056,15418.13,3.97,8.35,0,0,0,10.1,10.085906,51.86920083846594,64.86292088650274,9.4296875,0.4229828850855746,0.9591642924976258,0.4541841982234689,0.4310590700659512,0.20435654833219946,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1m,1,35.90592659456,4278.12,3.47,8.35,0,0,0,10.02,9.948878,0.22325005257528935,233.92085911054045,16.4765625,0.5201579384871156,0.9515669515669516,0.4272563987427032,1.5146962163149964,0.14633058293358148,client
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1m,1,36.335423324160004,4325.94,3.42,8.88,0,0,0,9.99,9.933129,0.21995065060067684,230.63603832390626,15.97265625,0.52679307502061,0.9514285714285714,0.40350467289719627,1.525085384416385,0.14924438756460798,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,1,35.82002724864,4264.93,3.47,8.41,0,0,0,10.02,9.949416000000001,0.22378542440400703,234.5505617977528,15.8828125,0.5208031463465121,0.9524714828897338,0.434375,1.514651275290209,0.14826074892055688,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-2k-50k-2000,1,3.74752673792,9106.41,64.83,718.46,0,479,0,10.4,10.360484,2.220130924167301,113.51233355162628,191.1953125,0.39896742033113763,0.9885931558935361,0.5067796610169492,0.40729563557815174,0.1397352593157,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-2k-50k-2000,1,3.7290718003200003,9061.36,64.86,679.19,0,467,0,10.39,10.356898,2.2289729040043498,113.85802266202029,189.4765625,0.3981497954100694,0.9867046533713201,0.5065566835871405,0.406887328068513,0.1357881515878022,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,1,3.7443390668800003,9098.27,67.47,301.05,0,506,0,10.41,10.366496,2.22415754856821,113.84140940257866,179.8984375,0.3997869696431742,0.9876660341555977,0.5107142857142857,0.40694790068303044,0.1348522125985261,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-close-1k,1,0.05209325568,5080.04,12.36,17.81,0,0,0,10.01,9.89123,153.72431412603157,196.57901455195304,12.234375,0.36087439792515746,0.9515209125475285,0.4275446325063761,0.29104787796995846,0.08929896528012451,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-close-1k,1,0.051589939200000004,5033.48,12.46,18.21,0,0,0,10.02,9.888612,155.3791325266768,198.58886951006818,12.38671875,0.36256230385822413,0.9515669515669516,0.4243482309124767,0.28729927526485505,0.08836714965339133,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,1,0.0520093696,5070.05,12.39,17.7,0,0,0,10.02,9.898878,154.1260750063004,197.04239754581923,15.6875,0.36198927713070805,0.9533777354900095,0.42707849512308405,0.2892676931299887,0.08934369269425846,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1,2,22.50728295653697,nan,nan,nan,0,0,1,9.96,9.956719999999999,0.35388384156351294,nan,8.12109375,0.1606586559857588,0.9467680608365019,0.2168,0.19498653536827099,0.5615631814564334,proxy
|
||||||
|
3proxy-devel-s1,stream1,2,22.638052137889392,nan,nan,nan,0,0,0,10.0,10.003677,0.3532781316563252,nan,4.2109375,0.15012491483079718,0.949667616334283,0.21667996807661613,0.20157337562148353,0.5660424770998161,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1,2,22.26391022998214,nan,nan,nan,0,0,0,10.01,10.004318,0.3595619509496911,nan,8.03515625,0.14525266258780875,0.9497153700189753,0.21437125748502994,0.19112791516198221,0.5651480112474744,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream16,2,20.372584120030837,nan,nan,nan,0,0,1893,10.04,9.989797999999999,0.39322940061988243,nan,59.58203125,0.1380268642890227,0.952561669829222,0.2539622641509434,0.19970673982141154,0.561282830399379,proxy
|
||||||
|
3proxy-devel-s1,stream16,2,20.821430775487418,nan,nan,nan,0,0,1841,10.06,10.012559,0.3852765344676777,nan,67.078125,0.13943304908965198,0.9535545023696682,0.26417910447761195,0.1985936109600732,0.5636480587199999,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream16,2,20.7416645514461,nan,nan,nan,0,0,1918,10.04,10.002181,0.3863608081073651,nan,59.21875,0.15001138174368314,0.952561669829222,0.25610214044310925,0.19874275062189184,0.5639813185204221,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1-down,2,15.143401162820927,nan,nan,nan,0,0,80,4.72,4.535304,0.2493197138351934,nan,11.2421875,0.11279938192119496,0.46732673267326735,0.05855539971949509,0.40914088592278974,0.17039385378470548,none
|
||||||
|
3proxy-devel-s1,stream1-down,2,47.3048103164755,nan,nan,nan,0,0,0,9.91,8.838811,0.1675756839346507,nan,11.37890625,0.2488014130709059,0.9340245051837889,0.22777777777777777,0.9321476378832879,0.40326322783441115,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1-down,2,31.620208523351913,nan,nan,nan,0,0,28,7.46,7.029269,0.18873367909672575,nan,11.26171875,0.17759706190975866,0.729227761485826,0.09699601882012306,0.635244819231593,0.27032242543147894,none
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1k,2,0.15669919744,15505.3,3.95,8.23,0,0,0,10.01,10.004620999999998,51.10428215860044,64.46170292234973,9.421875,0.41997191997191996,0.9506172839506173,0.45091592296852984,0.43385910772593894,0.16248859715504374,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,2,0.1572864,15563.32,3.95,8.09,0,0,0,10.01,9.997807,50.913492838541664,64.25934841919435,9.4296875,0.42572369561449125,0.9497153700189753,0.44452330257866096,0.4319997662381668,0.20713697650530427,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1k,2,0.15653142528,15494.17,3.95,8.08,0,0,0,10.1,10.090088000000002,51.61902784406819,64.53921556097997,9.44140625,0.42441150828247604,0.9591642924976258,0.4532458401687368,0.43290865415424556,0.17009366678180232,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1m,2,36.0777252864,4297.36,3.45,8.79,0,0,0,10.0,9.932659,0.2217434701465425,232.48244757520808,15.1640625,0.5238784370477568,0.9505703422053232,0.4102505171225006,1.520465608122812,0.1634650794458957,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,2,35.562329210879994,4240.72,3.48,8.71,0,0,0,10.02,9.936350000000001,0.22540705791418103,235.94235659790903,17.29296875,0.5190555095277548,0.9506641366223909,0.4061267115339986,1.5087157041320296,0.1993837601820415,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1m,2,35.30463117312,4208.53,3.53,8.53,0,0,0,10.01,9.954167,0.22682576573968222,237.47390396659708,16.24609375,0.5211092715231788,0.9515209125475285,0.40431955411054343,1.5109670515704776,0.16531014471166086,client
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-2k-50k-2000,2,3.73905424384,9085.73,63.89,223.0,0,397,0,10.43,10.391157999999999,2.231580355847079,113.86089975219153,179.16015625,0.3962903513465311,0.9895635673624289,0.5061052631578947,0.40309585321818925,0.13292588888820472,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,2,3.6687577088000003,8914.8,65.42,180.4,0,500,0,10.41,10.380515,2.2699781945327686,115.89846359385437,175.24609375,0.39599714081486775,0.9895437262357415,0.5044567062818336,0.4021547539683639,0.1367549393507763,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-2k-50k-2000,2,3.70172493824,8995.09,69.95,221.52,0,518,0,10.41,10.377564,2.249761972849226,114.86389566253628,195.04296875,0.3955650929899857,0.9904852521408183,0.5075005282062117,0.4024333378071069,0.14069000673423293,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-close-1k,2,0.05226102784,5094.11,12.3,18.21,0,0,0,10.03,9.896201,153.53697260922448,196.28180039138942,12.3359375,0.36176905995558845,0.9525166191832859,0.42474994184694115,0.2901649168257369,0.0883610743541148,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,2,0.05192548352,5063.81,12.39,17.89,0,0,0,10.04,9.898866,154.6832009162964,197.7195297268556,14.66796875,0.36220908755079423,0.952561669829222,0.42591732466326054,0.2863965095747706,0.08834666912543246,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-close-1k,2,0.0520093696,5070.48,12.37,18.11,0,0,0,10.01,9.888034000000001,153.97225656817037,197.0627608473108,12.3046875,0.3624446085672083,0.9524262607040913,0.4231397247492419,0.2864420668862271,0.088405959192543,proxy
|
||||||
|
64
bench/data/m4-haproxy-splice.csv
Normal file
64
bench/data/m4-haproxy-splice.csv
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
haproxy,stream1,0,12.470885279042667,nan,nan,nan,0,0,0,10.01,10.000143,0.6420094931512967,nan,30.35546875,0.2060312568787145,0.999001996007984,0.20981165133596144,0.12689777512488556,0.5330982979381341,proxy
|
||||||
|
haproxy-splice-auto,stream1,0,29.89117860621185,nan,nan,nan,0,0,0,9.98,9.507242,0.2670286748118488,nan,44.9296875,0.07797029702970297,0.9257884972170687,0.267870036101083,0.22455002102003757,0.7289534887541377,proxy
|
||||||
|
haproxy-splice,stream1,0,47.276622227678985,nan,nan,nan,0,0,0,9.92,9.068391,0.16783182521748577,nan,44.9765625,0.1667447306791569,0.9042844120328167,0.3173747622067216,0.38251154639763685,0.9515244508907347,origin
|
||||||
|
haproxy,stream16,0,9.126816993294865,nan,nan,nan,0,0,6,10.02,10.008672,0.87779780687716,nan,60.5625,0.12864186463469296,0.9515669515669516,0.7121966397013068,0.10178154529645375,1.3412808028682561,origin
|
||||||
|
haproxy-splice-auto,stream16,0,15.665416161722957,nan,nan,nan,0,0,10,10.01,10.009196,0.5108377207880435,nan,50.41015625,0.20893278934936654,0.9515209125475285,0.7146831530139104,0.17028929067443577,1.279742158250854,origin
|
||||||
|
haproxy-splice,stream16,0,21.84620025436062,nan,nan,nan,0,0,5,10.02,10.004629,0.3667854948979959,nan,60.96875,0.27884022208513265,0.9506641366223909,0.7257869249394673,0.24534597309840397,1.2156886451110003,origin
|
||||||
|
haproxy,stream1-down,0,13.960123370583007,nan,nan,nan,0,0,0,10.0,9.999398,0.5730096684278911,nan,35.16015625,0.142692750287687,0.9505703422053232,0.24893955461293743,0.5220067520499043,0.1168309458750056,proxy
|
||||||
|
haproxy-splice-auto,stream1-down,0,30.440812819799515,nan,nan,nan,0,0,0,10.0,9.77417,0.262794402388071,nan,40.4453125,0.19289074751698904,0.9398496240601504,0.2629094947251527,0.7307960970461047,0.270908729124504,proxy
|
||||||
|
haproxy-splice,stream1-down,0,47.62696450489736,nan,nan,nan,0,0,0,9.96,9.308399999999999,0.16728181803047182,nan,42.109375,0.2393629664844307,0.9162833486660533,0.21685991852083986,0.9514145276910632,0.38968830503606744,client
|
||||||
|
haproxy,http-ka-1k,0,0.44224741376,43767.86,1.4,2.12,0,0,0,10.1,10.09507,18.270316000954335,22.847732306014834,29.75390625,0.4527994201848161,0.9600760456273765,0.4640539839086426,0.6925179771661301,0.3136237673521794,proxy
|
||||||
|
haproxy-splice-auto,http-ka-1k,0,0.4412407808,43668.11,1.4,2.13,0,0,0,10.09,10.089706000000001,18.2938666398081,22.879247909916078,35.796875,0.45099108928896164,0.9600380589914367,0.46659761781460385,0.6936018485235806,0.32032686619155504,proxy
|
||||||
|
haproxy-splice,http-ka-1k,0,0.44400902144,43945.28,1.39,2.11,0,0,0,10.09,10.094142999999999,18.179810792630008,22.73300769632847,35.80078125,0.45607375271149675,0.9600380589914367,0.4628956927867151,0.698295986925665,0.3363989405582086,proxy
|
||||||
|
haproxy,http-ka-1m,0,5.8981141708800005,702.88,22.52,26.65,0,0,0,10.09,10.100358,1.3685730330302601,1421.3269474573883,37.34765625,0.6215240925493526,0.9600380589914367,0.16199095022624435,1.2678542450703074,0.026603372180188496,client
|
||||||
|
haproxy-splice-auto,http-ka-1m,0,6.25806934016,745.21,21.17,25.1,0,0,0,10.11,10.097527999999999,1.2924113748783124,1343.343077331916,44.88671875,0.5915651781686965,0.9601139601139601,0.15641103364655956,1.2825439345426253,0.026609834615750023,client
|
||||||
|
haproxy-splice,http-ka-1m,0,28.346784153599998,3382.78,4.66,5.72,0,0,0,9.99,9.951156,0.2819367430426858,295.2738450625129,52.44140625,0.5561823104693141,0.950523311132255,0.23213789268835142,1.6438977194646323,0.10547278904621821,client
|
||||||
|
haproxy,http-ka-50k-2000,0,4.07166255104,9744.89,193.14,512.74,0,0,0,10.09,10.039950999999999,1.9824825605791467,102.71183680117268,176.00390625,0.5347850156855508,0.9591254752851711,0.2985718135273511,0.8752281070644606,0.09218093276895038,proxy
|
||||||
|
haproxy-splice-auto,http-ka-50k-2000,0,3.9366898483200004,9421.6,200.61,570.88,0,0,0,10.09,10.047718999999999,2.050453632623551,106.2228258008822,182.140625,0.5346644481419855,0.9591254752851711,0.2891137855579869,0.884949502988458,0.09027899200636934,proxy
|
||||||
|
haproxy-splice,http-ka-50k-2000,0,4.9580867583999995,11984.65,161.23,393.17,0,0,0,10.12,10.072325999999999,1.6328879252231197,83.82826801852174,136.0390625,0.5424570111682325,0.9619771863117871,0.48020113136392206,0.844047476500976,0.11502621442719918,proxy
|
||||||
|
haproxy,http-close-1k,0,0.17045651456,16623.35,3.69,4.55,0,0,0,10.11,10.062655000000001,47.44905186450387,60.217282538774924,29.53515625,0.5420985633751592,0.9601139601139601,0.4613646633529146,0.8191778310296798,0.1492330706128941,proxy
|
||||||
|
haproxy-splice-auto,http-close-1k,0,0.169869312,16560.35,3.71,4.5,0,0,0,10.1,10.066307,47.565978250385804,60.38755657596575,35.7578125,0.5444001449800653,0.9600760456273765,0.46188850967007966,0.8210625053404907,0.1549161742184061,proxy
|
||||||
|
haproxy-splice,http-close-1k,0,0.16978542591999998,16555.02,3.72,4.42,0,0,0,10.1,10.062906,47.58947922778224,60.405253462835816,35.625,0.5433996383363472,0.9600760456273765,0.46545536114849706,0.8136549127740669,0.19295717801130827,proxy
|
||||||
|
haproxy-splice-auto,stream1,1,27.657705036907,nan,nan,nan,0,0,0,10.0,9.833874,0.28919158401814893,nan,40.65234375,0.15907990314769976,0.9900990099009901,0.26803708182184605,0.23978301610049976,0.698794525197252,proxy
|
||||||
|
haproxy-splice,stream1,1,44.66709383479124,nan,nan,nan,0,0,0,9.96,9.483912,0.17835478491282797,nan,44.984375,0.09460154241645244,0.9239332096474954,0.303347280334728,0.32433711631255135,0.838195850298805,proxy
|
||||||
|
haproxy,stream1,1,13.9130793718519,nan,nan,nan,0,0,0,10.0,10.001526,0.5748229081905579,nan,31.44921875,0.13121361397223466,0.9514747859181731,0.1997513468711148,0.11609297064619445,0.5218641241285665,proxy
|
||||||
|
haproxy-splice-auto,stream16,1,15.871037952656748,nan,nan,nan,0,0,11,10.04,10.011549,0.5056481486447681,nan,60.015625,0.22426160337552742,0.9516587677725118,0.7153581482639975,0.17497538300354495,1.2916249924400047,origin
|
||||||
|
haproxy-splice,stream16,1,22.562433611542634,nan,nan,nan,0,0,3,10.03,10.008068,0.3554258363877096,nan,55.68359375,0.27662203913491246,0.9516129032258065,0.7242658423493045,0.2416265140565151,1.2786892962500593,origin
|
||||||
|
haproxy,stream16,1,8.56274783754313,nan,nan,nan,0,0,8,10.02,10.009423,0.9354805272106242,nan,43.66015625,0.11837013430457546,0.9515669515669516,0.6884035681328822,0.09227811846283687,1.3248314087242796,origin
|
||||||
|
haproxy-splice-auto,stream1-down,1,29.532618920028337,nan,nan,nan,0,0,0,9.98,9.745233,0.2703355432066713,nan,40.23828125,0.18612747723620782,0.9379699248120301,0.08706208810267083,0.6914418421747642,0.23085334338816266,proxy
|
||||||
|
haproxy-splice,stream1-down,1,45.20745569639618,nan,nan,nan,0,0,0,9.96,9.484789000000001,0.1762340398376784,nan,44.6015625,0.2248864209994952,0.924791086350975,0.14191761855313256,0.8562900706132912,0.34591034845458013,proxy
|
||||||
|
haproxy,stream1-down,1,13.280333707459034,nan,nan,nan,0,0,0,10.0,10.001983,0.6023285462637666,nan,32.8359375,0.13882488479262672,0.9505703422053232,0.24791834542035993,0.5136100587673486,0.12826097080847915,proxy
|
||||||
|
haproxy-splice-auto,http-ka-1k,1,0.44711280639999995,44248.96,1.39,2.07,0,0,0,10.11,10.087575999999999,18.089394632020987,22.62276373644816,35.80859375,0.4535765895953757,0.9601139601139601,0.4662004662004662,0.6886438222525255,0.2945534754186057,proxy
|
||||||
|
haproxy-splice,http-ka-1k,1,0.44593840127999995,44132.54,1.39,2.1,0,0,0,10.1,10.087207,18.11909442382078,22.658491662348094,35.796875,0.45339366515837104,0.9600760456273765,0.46313603322949115,0.6945662425374509,0.3221811798409665,proxy
|
||||||
|
haproxy,http-ka-1k,1,0.44862275584,44402.84,1.38,2.08,0,0,0,10.1,10.091105,18.01067800243666,22.52262297129146,29.70703125,0.45520100955471426,0.9600760456273765,0.4665288188162316,0.6924554721759041,0.29546388241465266,proxy
|
||||||
|
haproxy-splice-auto,http-ka-1m,1,5.906922209279999,703.12,22.55,26.06,0,0,0,10.09,10.096472,1.3665323012581037,1420.9266300521053,43.19921875,0.6057525951557093,0.9591254752851711,0.13498452012383902,1.2206981774202692,0.020907726724359123,client
|
||||||
|
haproxy-splice,http-ka-1m,1,28.00318676992,3338.12,4.72,6.53,0,0,0,10.0,9.953499,0.28568177135444134,299.43705833033897,52.203125,0.5647553686074829,0.9505703422053232,0.2257247396566282,1.6406109424173014,0.09314792662013098,client
|
||||||
|
haproxy,http-ka-1m,1,5.91371698176,704.32,22.55,25.24,0,0,0,10.09,10.092942,1.3649621760555857,1418.5294531140166,38.8359375,0.624,0.9600380589914367,0.15222623345367028,1.253629079008308,0.030413129775669574,client
|
||||||
|
haproxy-splice-auto,http-ka-50k-2000,1,4.0017854464000004,9573.19,198.04,506.2,0,0,0,10.08,10.040982,2.0151005365003662,104.48410970831519,184.0,0.5310818333642605,0.9581749049429658,0.29093886462882096,0.877336596256015,0.0921928976926707,proxy
|
||||||
|
haproxy-splice,http-ka-50k-2000,1,4.850209259520001,11724.01,164.56,467.97,0,0,0,10.11,10.057952,1.6675569170804037,85.57643473844591,132.6796875,0.5495367070563079,0.9610266159695817,0.48620045652625027,0.8827828822617122,0.11212372578867655,proxy
|
||||||
|
haproxy,http-ka-50k-2000,1,4.05740191744,9702.65,195.76,645.83,0,0,0,10.09,10.040626,1.9894504326288172,103.36843830676555,177.29296875,0.5312326227988878,0.9582146248812915,0.2982786444324906,0.8723025194799039,0.09122591365490804,proxy
|
||||||
|
haproxy-splice-auto,http-close-1k,1,0.17246978048,16820.23,3.67,4.28,0,0,0,10.0,9.971963,46.384937568397376,59.415235254623994,35.59375,0.5402319681043857,0.9514747859181731,0.46653279785809904,0.812422387488307,0.20048900026686614,proxy
|
||||||
|
haproxy-splice,http-close-1k,1,0.17339252736000002,16905.08,3.65,4.24,0,0,0,10.11,10.064707,46.64560879955097,59.21318503681057,35.70703125,0.5444988218234548,0.959203036053131,0.4523154516276937,0.8220920443166914,0.22048409460256574,proxy
|
||||||
|
haproxy,http-close-1k,1,0.17221812224000002,16794.68,3.68,4.25,0,0,0,10.09,10.066023999999999,46.87079324178793,59.48731251768701,29.53515625,0.5452406804198335,0.9600380589914367,0.4732519422863485,0.8219748116165262,0.1681692979728716,proxy
|
||||||
|
haproxy-splice,stream1,2,44.025537299292175,nan,nan,nan,0,0,0,9.98,9.64556,0.18131571189526788,nan,44.91796875,0.15224166866458883,0.9327102803738317,0.3000352982703848,0.3729495374137985,0.8229787358803089,proxy
|
||||||
|
haproxy,stream1,2,13.420193637999308,nan,nan,nan,0,0,0,10.0,10.00282,0.5958974733855598,nan,31.4140625,0.05717791411042945,0.9514747859181731,0.19552609776304888,0.12086002113679797,0.5182343923337167,proxy
|
||||||
|
haproxy-splice-auto,stream1,2,29.507297892950234,nan,nan,nan,0,0,0,9.97,9.623803,0.2702392892979522,nan,44.4609375,0.07093881856540084,0.9774509803921568,0.27580772261623326,0.2157945829744378,0.7366131461399941,proxy
|
||||||
|
haproxy-splice,stream16,2,22.12554165032845,nan,nan,nan,0,0,2,10.02,10.003693,0.36212735525203216,nan,54.74609375,0.2913907284768212,0.9506641366223909,0.7249082007343941,0.23862270559995377,1.2426461145422065,origin
|
||||||
|
haproxy,stream16,2,8.580147028941548,nan,nan,nan,0,0,6,10.03,10.00947,0.9346185347163698,nan,51.703125,0.17872340425531916,0.9516129032258065,0.6840330983757279,0.09415712324018922,1.340238855783671,origin
|
||||||
|
haproxy-splice-auto,stream16,2,15.973129606882429,nan,nan,nan,0,0,13,10.03,10.012126,0.5019140976009596,nan,60.0,0.2711763538980361,0.9516129032258065,0.711083819465766,0.1807299535793587,1.3052893396648573,origin
|
||||||
|
haproxy-splice,stream1-down,2,48.59185309676415,nan,nan,nan,0,0,0,9.93,9.026188000000001,0.16346198078264335,nan,44.9375,0.23901164172012354,0.9019073569482289,0.1280977312390925,0.9513393656065166,0.34494886912870415,client
|
||||||
|
haproxy,stream1-down,2,13.238887720464081,nan,nan,nan,0,0,0,10.01,10.002078,0.6048169736106161,nan,31.21875,0.1375432525951557,0.9506172839506173,0.05361384458771632,0.49179301438541884,0.11592095587872998,proxy
|
||||||
|
haproxy-splice-auto,stream1-down,2,30.76905592533716,nan,nan,nan,0,0,0,9.99,9.65392,0.2597207502459875,nan,41.29296875,0.1940376569037657,0.9336448598130841,0.09265614275909403,0.7237916928519336,0.22990802153107426,proxy
|
||||||
|
haproxy-splice,http-ka-1k,2,0.44904218624000003,44444.43,1.38,2.08,0,0,0,10.1,10.094124,17.99385502653302,22.500796439081878,35.796875,0.4565061107117182,0.9591642924976258,0.46492363448097335,0.6905813584959353,0.3030430566697726,proxy
|
||||||
|
haproxy,http-ka-1k,2,0.44568674304,44112.76,1.39,2.09,0,0,0,10.01,10.002418,17.967776975769922,22.674504207581574,29.71484375,0.44922797456857405,0.9515209125475285,0.4595788926436184,0.6905693150174204,0.3098286205277593,proxy
|
||||||
|
haproxy-splice-auto,http-ka-1k,2,0.44602228736,44139.96,1.39,2.11,0,0,0,10.01,10.00352,17.954259746523533,22.658695755512447,35.79296875,0.4514140681653372,0.9515209125475285,0.4600780234070221,0.6927552847361909,0.30133454145667854,proxy
|
||||||
|
haproxy-splice,http-ka-1m,2,27.4877906944,3276.96,4.78,6.88,0,0,0,9.99,9.923215,0.2907472662627697,304.7961923358555,52.234375,0.5973016235993597,0.999,0.22384066587395957,1.6187790952229908,0.10784169195139078,client
|
||||||
|
haproxy,http-ka-1m,2,5.767839088640001,687.06,23.09,26.32,0,0,0,10.11,10.097942,1.4022582592377886,1456.9822741028968,37.94140625,0.6142604074402126,0.9601139601139601,0.15242424242424243,1.2832361890399908,0.02660297986960112,client
|
||||||
|
haproxy-splice-auto,http-ka-1m,2,5.5785082060799995,663.85,23.81,28.12,0,0,0,10.1,10.099212000000001,1.4484159028741108,1506.3385533184191,43.671875,0.6274887604367373,0.9600760456273765,0.1124129195693477,1.2758842161775354,0.028503600136568153,client
|
||||||
|
haproxy-splice,http-ka-50k-2000,2,4.92235128832,11897.29,163.37,414.88,0,0,0,10.13,10.062857,1.6463676656376751,84.49552916054985,151.32421875,0.5455516014234876,0.9620132953466287,0.483153078202995,0.8592217872562844,0.11119336969404632,proxy
|
||||||
|
haproxy,http-ka-50k-2000,2,4.06822322176,9736.04,194.05,680.82,0,0,0,10.09,10.042601,1.984158577342735,102.92977516627903,177.98828125,0.5328911000552792,0.9582146248812915,0.29488220958570266,0.8649197963205894,0.09123941413633474,proxy
|
||||||
|
haproxy-splice-auto,http-ka-50k-2000,2,4.08936251392,9784.39,191.94,569.22,0,0,0,10.08,10.042211,1.9719454982409896,102.35684765279908,181.41796875,0.5373106760251201,0.9590865842055185,0.2985756517065305,0.8915635476483981,0.09314699784890836,proxy
|
||||||
|
haproxy-splice,http-close-1k,2,0.17230200832,16803.03,3.67,4.27,0,0,0,10.1,10.066593,46.894404068661764,59.51819724684141,35.89453125,0.5420374069366262,0.9600760456273765,0.4473441108545035,0.8136090213947146,0.18058427193404752,proxy
|
||||||
|
haproxy,http-close-1k,2,0.17431527424,16996.31,3.62,4.34,0,0,0,10.09,10.064283,46.30690015658836,58.78035140047537,29.65625,0.5434585374705135,0.9600380589914367,0.43952734012974976,0.8193729517211945,0.16926621774991768,proxy
|
||||||
|
haproxy-splice-auto,http-close-1k,2,0.17079205888,16650.93,3.71,4.33,0,0,0,10.02,9.972787,46.93426645574963,60.12817743213077,35.7421875,0.5415685564209383,0.9515669515669516,0.4681848626925653,0.8173954622833055,0.1615753572679179,proxy
|
||||||
|
169
bench/data/m4-main.csv
Normal file
169
bench/data/m4-main.csv
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
direct,stream1,0,61.59043807936239,nan,nan,nan,0,0,0,0.07,0.0,0.0009090945904281307,nan,0.0,0.15914552736982643,0.010130246020260492,0.33659689399054693,0.542523909627398,0.9920184956182384,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream1,0,25.076815274321753,nan,nan,nan,0,0,0,10.01,10.001756,0.3192535554117112,nan,4.5703125,0.14034676663542642,0.9506172839506173,0.3075668623613829,0.22547887021175553,0.8998971051200377,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream1,0,8.320864371719768,nan,nan,nan,0,0,0,10.01,10.001265,0.9622296045989882,nan,2.171875,0.09806629834254144,0.9506172839506173,0.20161290322580644,0.08559402701932255,0.5118258825166938,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream1,0,21.129445707467838,nan,nan,nan,0,0,0,10.01,9.998918,0.3789108481077464,nan,6.39453125,0.09235668789808917,0.9515209125475285,0.21260470682090146,0.19784026605014632,0.5586089505468658,proxy
|
||||||
|
3proxy-devel,stream1,0,22.045100293757027,nan,nan,nan,0,0,0,10.0,10.001657,0.36277761019709465,nan,8.4375,0.08768520767549186,0.9505703422053232,0.22015073383577946,0.1892821448997447,0.5653165236592292,proxy
|
||||||
|
3proxy-devel-s,stream1,0,45.733864660192815,nan,nan,nan,0,0,0,9.89,8.817747,0.17296129740164518,nan,11.4140625,0.10646866347847973,0.8925992779783394,0.3173747622067216,0.3453118000638853,0.9474347722871482,origin
|
||||||
|
nginx,stream1,0,13.502219260500269,nan,nan,nan,0,0,0,10.01,10.002879,0.5928629926236841,nan,32.0390625,0.059215585747244295,0.9980059820538385,0.21870882740447958,0.11588387034324961,0.5469890694930801,proxy
|
||||||
|
haproxy,stream1,0,13.074724676255311,nan,nan,nan,0,0,0,10.01,10.001975,0.6122991754617084,nan,30.234375,0.04035087719298246,0.9506172839506173,0.2,0.1122562984734366,0.5227224462734111,proxy
|
||||||
|
direct,stream16,0,141.16148088835325,nan,nan,nan,0,0,3723,0.31,0.0,0.0017563336806383245,nan,0.0,0.5459744830620326,0.05457746478873239,0.9503164556962025,1.5296777692959824,2.846258589236203,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream16,0,24.37506402915491,nan,nan,nan,0,0,1696,10.04,10.006798999999999,0.32865708613295747,nan,68.921875,0.1541483706956321,0.9534662867996201,0.32031517643028434,0.22920876854538716,0.8197928180249117,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream16,0,8.727871407167079,nan,nan,nan,0,0,1051,10.05,10.016788,0.9181255018866824,nan,24.5546875,0.08593930970581422,0.9544159544159544,0.2816796729840208,0.08276581520000051,0.632726762221158,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream16,0,20.882659266549513,nan,nan,nan,0,0,1816,10.05,10.004978999999999,0.3839491594428824,nan,76.11328125,0.13076923076923078,0.9535104364326376,0.26881720430107525,0.19778844727512063,0.5716611797506093,proxy
|
||||||
|
3proxy-devel,stream16,0,20.683068039219563,nan,nan,nan,0,0,2018,10.05,9.999567,0.387817586561441,nan,52.1328125,0.1397824577644064,0.9535104364326376,0.26135936913255725,0.19972138897003985,0.5632383924778547,proxy
|
||||||
|
3proxy-devel-s,stream16,0,36.88142111514797,nan,nan,nan,0,0,1729,10.02,9.981243,0.21714618962344945,nan,84.87890625,0.18587962962962962,0.9515669515669516,0.35127674258109043,0.35179881734362295,0.9295704072412715,origin
|
||||||
|
nginx,stream16,0,13.526442518804762,nan,nan,nan,0,0,1815,10.05,10.034925999999999,0.5925640285562345,nan,74.99609375,0.12301045929968167,0.9544159544159544,0.2937113776808433,0.13315927762132487,0.616550983411331,proxy
|
||||||
|
haproxy,stream16,0,9.500596986818456,nan,nan,nan,0,0,0,10.03,10.006478,0.8442035098288654,nan,49.87890625,0.1736682546556951,0.9507109004739337,0.7012946979038225,0.11125250071463563,1.291515298093347,origin
|
||||||
|
direct,stream1-down,0,61.54374690443803,nan,nan,nan,0,0,0,0.1,0.0,0.0012997464239230243,nan,0.0,0.251073503409952,0.014347202295552367,0.20786933927245732,0.9372038366817282,0.5728991681204915,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,0,47.863368062293,nan,nan,nan,0,0,0,9.91,8.83401,0.1656195232648594,nan,10.67578125,0.25125,0.9349056603773584,0.2878605769230769,0.9472740801933867,0.4502748995413846,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,0,10.053500776066262,nan,nan,nan,0,0,0,10.0,10.002113,0.7956568633457785,nan,2.84375,0.2219469903393609,0.9514747859181731,0.04069963000336361,0.8449148815408425,0.09219263446435975,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,0,22.432411451723134,nan,nan,nan,0,0,0,10.01,10.002163,0.3569436671923783,nan,6.4296875,0.15131022823330514,0.9506172839506173,0.25606394707828006,0.5649721152037466,0.2128018914352686,proxy
|
||||||
|
3proxy-devel,stream1-down,0,22.1386177174921,nan,nan,nan,0,0,0,10.01,10.002789,0.3616802866998139,nan,9.89453125,0.15313290250070244,0.9515209125475285,0.12183235867446393,0.5641362593700737,0.1938367623087162,proxy
|
||||||
|
3proxy-devel-s,stream1-down,0,47.3560956479822,nan,nan,nan,0,0,0,9.93,8.989258999999999,0.16773134538475204,nan,11.23828125,0.41999521645539345,0.9010889292196007,0.2042907460774896,0.9401727710581673,0.3820936529645266,client
|
||||||
|
nginx,stream1-down,0,13.598172754592353,nan,nan,nan,0,0,0,10.0,10.00013,0.5882475717441422,nan,34.21875,0.1541043637473299,0.998003992015968,0.10531628532974428,0.5263660973475165,0.12171259743303382,proxy
|
||||||
|
haproxy,stream1-down,0,13.04557020209267,nan,nan,nan,0,0,0,9.99,10.001577000000001,0.6125540591772419,nan,30.6875,0.17640480849874196,0.9514285714285714,0.1926871735345328,0.5157725897846064,0.12262789874069302,proxy
|
||||||
|
direct,http-ka-1k,0,1.23874574336,120311.11,0.502,0.767,0,0,0,0.91,0.0,0.5876912222724234,0.7489317435130989,0.0,0.8062471706654595,0.2774390243902439,0.9533858267716535,2.502850504542173,0.9528021897151907,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,0,0.13597933568,13461.44,4.6,8.55,0,0,0,10.09,10.085132,59.36196084231376,74.21900859881279,5.3125,0.38467126770795496,0.9591254752851711,0.4049443757725587,0.38442310064795926,0.14444948982271436,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,0,0.14310965248,14160.83,4.36,8.29,0,0,0,10.09,10.103392,56.4043015975326,70.55105337127755,5.3125,0.3983276996975627,0.9600380589914367,0.4062111801242236,0.4053795728817735,0.15679788194444916,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,0,0.060565749759999996,5997.53,10.55,12.12,0,0,0,6.41,5.892927,84.66831534853273,106.56160125014546,9.4296875,0.15339163318364452,0.6296660117878192,0.1442687747035573,0.2739518353868087,0.10545455830369485,none
|
||||||
|
3proxy-devel,http-ka-1k,0,0.15980298240000002,15814.98,3.85,8.24,0,0,0,10.11,10.103257,50.61232198880413,63.3038207706661,9.3125,0.41626709287870717,0.9610266159695817,0.4333821376281113,0.4557657693361603,0.21004838330773956,proxy
|
||||||
|
3proxy-devel-s,http-ka-1k,0,0.15015608319999998,14862.79,4.13,8.6,0,0,0,10.0,10.004617999999999,53.27789477129888,67.2436168996658,9.2578125,0.400362647325476,0.9514747859181731,0.4208969935929029,0.42725600771529987,0.15776746007234257,proxy
|
||||||
|
nginx,http-ka-1k,0,0.38545653760000004,37438.23,1.68,2.09,0,0,0,10.02,10.016202,20.79611893447361,26.716081641359267,30.16796875,0.4208509007282484,0.9524714828897338,0.45414118954974986,0.6185750236098108,0.30333217719531014,proxy
|
||||||
|
haproxy,http-ka-1k,0,0.44862275584,44403.29,1.38,2.08,0,0,0,10.1,10.092595,18.01067800243666,22.52161852391974,29.7109375,0.44773933736042465,0.9600760456273765,0.4677210267046928,0.6925191237198265,0.31553329713730766,proxy
|
||||||
|
direct,http-ka-1m,0,71.38235645952001,8502.84,1.29,2.32,0,0,0,0.25,0.0,0.0028018127996855546,2.934203422454872,0.0,0.9309048178613396,0.044169611307420496,0.6012909632571996,3.6776368437892866,0.4544336356412374,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,0,32.55585210368,3883.29,3.89,8.53,0,0,0,10.02,9.985391,0.24622301313053013,257.6166602391053,16.984375,0.4876753081172971,0.9524714828897338,0.3697355533790402,1.4072569080833086,0.13684705872970046,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,0,8.33223655424,993.73,15.79,25.57,0,0,0,10.02,10.017144,0.9620466183141335,1006.6305003013864,12.5078125,0.23848726524311809,0.9515669515669516,0.08189519924694069,0.5907749255544233,0.03515967768304146,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,0,12.4554051584,1480.26,10.75,11.5,0,0,0,6.9,5.363434,0.4431810872308139,465.1162790697674,11.11328125,0.19615293279506055,0.6341911764705882,0.07758346581875994,0.5490367098688399,0.05132568508940509,none
|
||||||
|
3proxy-devel,http-ka-1m,0,21.990232555520002,2622.03,5.77,11.73,0,0,0,10.02,9.96345,0.3645254764705896,381.322068729307,19.0703125,0.38890097932535367,0.9533777354900095,0.21711079943899017,1.0049405487576604,0.12362131370626167,client
|
||||||
|
3proxy-devel-s,http-ka-1m,0,35.30463117312,4202.74,3.53,8.65,0,0,0,10.02,9.947932000000002,0.22705236490625533,238.0952380952381,17.06640625,0.5084709868699704,0.9515669515669516,0.38868832731648617,1.4966583639715494,0.14539533846143493,client
|
||||||
|
nginx,http-ka-1m,0,12.627203850239999,1502.42,10.5,14.34,0,0,0,10.03,10.019086999999999,0.6354534301628061,666.3566303481265,45.60546875,0.29071499503475673,0.9525166191832859,0.08328173374613003,0.7798955597828292,0.04654943004942413,proxy
|
||||||
|
haproxy,http-ka-1m,0,6.02226556928,717.05,22.13,26.28,0,0,0,10.09,10.100359,1.34035935598321,1393.2615299640984,39.10546875,0.6164913034142152,0.9600380589914367,0.15104009647271632,1.2611953734187002,0.02184922324712792,client
|
||||||
|
direct,http-ka-50k-2000,0,34.44563771392,83597.96,21.36,653.72,0,531,0,1.51,0.0,0.035069752809710045,1.789118604345307,0.0,0.8976982097186701,0.3793969849246231,0.9434920634920635,3.381443743187913,0.9475666754601523,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,0,3.72101873664,9041.86,67.48,190.21,0,481,0,10.43,10.38188,2.2423966635369466,114.5046548392763,100.265625,0.4756548288606781,0.9914448669201521,0.49294570329200516,0.45560365627383104,0.12353803865212871,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,0,3.11628398592,7572.42,81.79,246.09,0,503,0,10.41,10.363715,2.6724136945244994,136.4047328904438,132.41015625,0.47485399091499025,0.9895437262357415,0.4525371828521435,0.4234260960372297,0.1007558872384741,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,0,3.70499649536,9003.02,68.12,225.76,0,480,0,10.44,10.408701,2.2542531444927776,115.27377521613833,206.96875,0.30470390592188157,0.9933396764985728,0.324052812858783,0.4159046044059033,0.11412223049799855,proxy
|
||||||
|
3proxy-devel,http-ka-50k-2000,0,4.288340295679999,10420.37,57.75,172.75,0,496,0,10.39,10.361574,1.9382790139983448,98.97783239499681,193.98046875,0.4794651384909265,0.9885823025689819,0.5053464499572284,0.47278849098808134,0.13207793919829464,proxy
|
||||||
|
3proxy-devel-s,http-ka-50k-2000,0,4.08466489344,9925.62,57.4,166.54,0,610,0,10.39,10.361924,2.0349282540531366,103.95821660129673,186.515625,0.47475231703419624,0.9876425855513308,0.4960120715671481,0.45559069014449605,0.127294880652316,proxy
|
||||||
|
nginx,http-ka-50k-2000,0,4.435895910399999,10774.0,66.87,85.03,0,338,0,10.14,10.102538999999998,1.8287173918985202,93.48982583601479,78.22265625,0.4268248175182482,0.9638783269961977,0.4438381082310141,0.47766825616381503,0.12164560872152692,proxy
|
||||||
|
haproxy,http-ka-50k-2000,0,3.9845888,9540.41,193.95,695.26,0,0,0,10.09,10.049517,2.025805021587171,104.97513473022742,178.3828125,0.5321375186846039,0.9591254752851711,0.29462832338578404,0.8962389296400717,0.09122410107872184,proxy
|
||||||
|
direct,http-close-1k,0,0.48494542848,47287.31,0.87,2.47,0,0,0,4.71,0.0,7.769946428426635,9.861912289701525,0.0,0.7769055980169387,0.5136314067611778,0.9360972568578554,2.2514680684726835,0.9028206642967048,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,0,0.049576673280000004,4833.7,13.05,18.02,0,0,0,10.01,9.908954,161.5275788024799,206.56637569904456,9.9765625,0.3274593338497289,0.9515209125475285,0.38796477495107634,0.27787220939323715,0.0845929270930012,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,0,0.05100273664,4976.02,12.7,17.47,0,0,0,10.03,9.919003,157.32489134135997,201.10678910855356,9.61328125,0.3289422704378148,0.9534220532319392,0.39449317738791423,0.2806871378622416,0.08744536686658436,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,0,0.04521459712,4406.68,14.25,22.13,0,0,0,10.02,9.868813000000001,177.2878784859114,227.02041371185175,29.73828125,0.24721030042918454,0.9524714828897338,0.2986904430203399,0.24834668257046094,0.07698453085959421,proxy
|
||||||
|
3proxy-devel,http-close-1k,0,0.0528482304,5152.66,12.21,17.34,0,0,0,10.01,9.894235,151.52825249565973,193.98097009863767,12.4296875,0.3351393188854489,0.9515209125475285,0.39799657952602,0.2920875794095629,0.08932091563637072,proxy
|
||||||
|
3proxy-devel-s,http-close-1k,0,0.05142216704,5014.24,12.55,17.78,0,0,0,10.01,9.888247,155.73050419619187,199.23173377385905,12.40234375,0.33603082851637767,0.9515209125475285,0.396240234375,0.2864431587240493,0.08747886553316407,proxy
|
||||||
|
nginx,http-close-1k,0,0.13639876608,13300.09,4.7,5.26,0,0,0,10.02,9.971497000000001,58.768860088503224,75.22296627728898,29.6953125,0.5281369513749772,0.9515669515669516,0.3856041131105398,0.7164067540389693,0.15395175858105878,proxy
|
||||||
|
haproxy,http-close-1k,0,0.17020485632,16591.82,3.71,4.39,0,0,0,10.09,10.066581000000001,47.42520380748676,60.21472008211641,29.796875,0.5440115440115441,0.9600380589914367,0.4718902169101372,0.8126631474982218,0.20339719368038653,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream1,1,24.128537890835506,nan,nan,nan,0,0,0,10.01,10.001909,0.33182378356055536,nan,4.93359375,0.1204876882620129,0.9506172839506173,0.22343434343434343,0.21786695370343528,0.5833912195555127,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream1,1,10.155853300627914,nan,nan,nan,0,0,0,10.01,10.003753999999999,0.7881915025627496,nan,4.94921875,0.11301446051167964,0.9506172839506173,0.27844950213371267,0.07801192476959028,0.7652136358644214,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream1,1,22.10263720326343,nan,nan,nan,0,0,0,10.01,9.999949,0.36221549434084527,nan,11.078125,0.0581891146225232,0.9506172839506173,0.21894904458598727,0.18743641707799016,0.5654714009259497,proxy
|
||||||
|
3proxy-devel,stream1,1,22.282829232860685,nan,nan,nan,0,0,0,10.0,10.002649,0.358900282309469,nan,8.23828125,0.11426437640029873,0.999000999000999,0.23177966101694916,0.18980949377395148,0.5949025878185107,proxy
|
||||||
|
3proxy-devel-s,stream1,1,40.75770404715078,nan,nan,nan,0,0,0,10.0,9.873198,0.1962368540774464,nan,8.4453125,0.2007635302043566,0.9442870632672332,0.28341631558789737,0.3806346595691404,0.741593290863814,proxy
|
||||||
|
nginx,stream1,1,13.964509447397514,nan,nan,nan,0,0,0,10.01,10.002995,0.5731866228689451,nan,33.765625,0.1125748502994012,0.9980059820538385,0.21826965305226176,0.11486668871228368,0.5516676626390851,proxy
|
||||||
|
haproxy,stream1,1,13.63586872669775,nan,nan,nan,0,0,0,10.0,10.00288,0.5864614681340897,nan,31.8046875,0.06549482301950398,0.9505703422053232,0.19635459817729908,0.11602996350477843,0.5196638114746532,proxy
|
||||||
|
direct,stream1,1,62.67828350394503,nan,nan,nan,0,0,0,0.05,0.0,0.0006380799654798943,nan,0.0,0.14424057084607544,0.006666666666666667,0.32005141388174807,0.5335400698475843,0.9461611344094641,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream16,1,24.521235105224097,nan,nan,nan,0,0,1684,10.04,10.00666,0.3266668134853958,nan,60.07421875,0.14476771468793995,0.952561669829222,0.3187907935417382,0.22818345621197217,0.8327313277144565,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream16,1,8.70824880716366,nan,nan,nan,0,0,845,10.05,10.016509000000001,0.9206278971143109,nan,30.8671875,0.07368421052631578,0.9535104364326376,0.2754831375521031,0.08085922800264037,0.6175168737432718,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream16,1,20.84771208887811,nan,nan,nan,0,0,1975,10.03,9.999493,0.38404855710296704,nan,54.4296875,0.14997713763145862,0.9534220532319392,0.2666420118343195,0.2016766859838979,0.5692024053152211,proxy
|
||||||
|
3proxy-devel,stream16,1,20.881245040836067,nan,nan,nan,0,0,1860,10.06,10.011274,0.38418114418047355,nan,69.71484375,0.14739488117001828,0.9544592030360531,0.25984251968503935,0.19977036487598687,0.5662202685144221,proxy
|
||||||
|
3proxy-devel-s,stream16,1,37.89353177859546,nan,nan,nan,0,0,1718,10.02,9.984601,0.21126347422751993,nan,80.5546875,0.18891454965357968,0.9524714828897338,0.3562113932738504,0.35383789918565955,0.9328252781932733,origin
|
||||||
|
nginx,stream16,1,13.664191780368505,nan,nan,nan,0,0,1668,10.05,10.034652999999999,0.5866115955218271,nan,78.25,0.10988505747126437,0.9535104364326376,0.2748868778280543,0.12557451766543334,0.5976091432016605,proxy
|
||||||
|
haproxy,stream16,1,8.682181566428659,nan,nan,nan,0,0,10,10.02,10.008988,0.9226321638862739,nan,46.30078125,0.15513074049659414,0.9506641366223909,0.6997140133460439,0.0950879825413525,1.3476021812629118,origin
|
||||||
|
direct,stream16,1,140.8321600374948,nan,nan,nan,0,0,3726,0.17,0.0,0.0009654514037505305,nan,0.0,0.5683407501589319,0.031423290203327174,0.95,1.5333419334256484,2.846455293599054,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,1,48.3383582245863,nan,nan,nan,0,0,0,9.91,8.760173,0.1639922172051299,nan,10.6875,0.25131020713750934,0.9322671683913453,0.13392200147167035,0.9492117632457292,0.3594076287894674,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,1,8.780283833160503,nan,nan,nan,0,0,0,10.01,10.001005000000001,0.9119378978782314,nan,1.96875,0.1502025553131817,0.9970119521912351,0.037181303116147306,0.5212892635387247,0.08478167370374819,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,1,22.492259081296943,nan,nan,nan,0,0,0,10.01,10.002716,0.3559952605176645,nan,9.9453125,0.15742296918767507,0.9506172839506173,0.2569482288828338,0.5650504441492834,0.1957467321950951,proxy
|
||||||
|
3proxy-devel,stream1-down,1,22.2377952080391,nan,nan,nan,0,0,0,10.0,10.0015,0.35970742721593585,nan,9.83984375,0.16259678379988088,0.998003992015968,0.07603186097031137,0.5644406198681341,0.2015559746727999,proxy
|
||||||
|
3proxy-devel-s,stream1-down,1,47.4263128032106,nan,nan,nan,0,0,0,9.92,8.869871,0.16731498235848097,nan,11.2578125,0.2390011890606421,0.8953068592057761,0.12866108786610878,0.9515148702102105,0.34311731646818777,client
|
||||||
|
nginx,stream1-down,1,12.7216665185501,nan,nan,nan,0,0,0,10.01,10.002332000000001,0.6294060283162803,nan,32.859375,0.1366906474820144,0.9515209125475285,0.044513457556935816,0.512918074155217,0.11406471357164742,proxy
|
||||||
|
haproxy,stream1-down,1,13.5949945831861,nan,nan,nan,0,0,0,10.0,10.001486,0.588388207490784,nan,31.26171875,0.14853300733496333,0.999000999000999,0.2631140716069942,0.5165840531196128,0.13179059571121746,proxy
|
||||||
|
direct,stream1-down,1,61.83615689991757,nan,nan,nan,0,0,0,0.1,0.0,0.0012936022698756653,nan,0.0,0.2505,0.013793103448275862,0.1908114116339385,0.948257342685464,0.5311648500355413,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,1,0.13564379136000002,13424.47,4.62,8.4,0,0,0,10.11,10.095007,59.626761526698736,74.56522059799684,5.3203125,0.3858439201451906,0.9601139601139601,0.40321384425216317,0.3844104465613866,0.15966589585638852,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,1,0.14285799424,14135.63,4.38,8.16,0,0,0,10.02,10.016059,56.1116655924288,70.79520966545377,5.11328125,0.39630353652034833,0.9524714828897338,0.4100171863491284,0.40630267493527505,0.1577425503570464,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,1,0.06073352192,6012.96,10.53,12.18,0,0,0,6.22,5.709776,81.93168850893474,103.29137467202497,9.42578125,0.14596640643482375,0.6110019646365422,0.1436065573770492,0.2692223356178073,0.10071710097566386,none
|
||||||
|
3proxy-devel,http-ka-1k,1,0.15879634943999998,15718.59,3.88,8.24,0,0,0,10.1,10.103434,50.88278180508782,63.62204724409449,9.24609375,0.4113551151580075,0.9600760456273765,0.4330225711481845,0.45388993305911707,0.1824608060725231,proxy
|
||||||
|
3proxy-devel-s,http-ka-1k,1,0.15149826047999998,14991.62,4.09,8.26,0,0,0,10.09,10.089036,53.28113982579769,66.64068846633951,9.265625,0.3931059772643931,0.9600380589914367,0.42572552877520903,0.42635135778420247,0.17116313758023172,proxy
|
||||||
|
nginx,http-ka-1k,1,0.37966839807999997,36874.78,1.71,2.11,0,0,0,10.01,10.011303000000002,21.092089940845256,27.1114276969912,30.1484375,0.4200150206533984,0.9524262607040913,0.46948228882833787,0.6319238140289862,0.30050672677949675,proxy
|
||||||
|
haproxy,http-ka-1k,1,0.44803555328,44346.04,1.38,2.08,0,0,0,10.1,10.09164,18.034283085008664,22.55083426923017,29.70703125,0.4550379198266522,0.9591642924976258,0.46507400675149313,0.6945284460716071,0.3049951885902933,proxy
|
||||||
|
direct,http-ka-1k,1,1.2410945536,120544.57,0.506,0.737,0,0,0,0.61,0.0,0.3932013065277543,0.5010443900688074,0.0,0.8031938821412505,0.20677966101694914,0.9582410629547612,2.486784427146756,0.9575474368758521,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,1,33.414845562880004,3983.52,3.79,8.25,0,0,0,10.01,9.983574,0.23965395814655369,251.00300902708125,13.94140625,0.49396825396825395,0.9515209125475285,0.3705695428990467,1.4224894309488278,0.12069466170148065,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,1,8.33223655424,993.03,15.8,26.0,0,0,0,10.02,10.015114,0.9620466183141335,1007.7441416071608,11.37890625,0.23741374904165602,0.9515669515669516,0.08197236180904523,0.620369821858343,0.04181882762724019,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,1,12.4554051584,1479.94,10.75,11.49,0,0,0,6.89,5.403439,0.44253879580004457,464.7868321640583,9.30078125,0.19624167459562322,0.6356088560885609,0.0799492385786802,0.5376147927466318,0.05037882843821314,none
|
||||||
|
3proxy-devel,http-ka-1m,1,21.904333209599997,2611.4,5.81,11.51,0,0,0,10.01,9.951078,0.3655897636039584,382.6452599388379,15.21484375,0.38804015713662154,0.9524262607040913,0.23330562482682182,0.9952619081101569,0.08552675106932976,client
|
||||||
|
3proxy-devel-s,http-ka-1m,1,35.30463117312,4209.52,3.53,8.49,0,0,0,10.01,9.955867,0.22682576573968222,237.4175798112044,17.1015625,0.5100571670548381,0.9515209125475285,0.38613861386138615,1.5004169911523857,0.14729591443476903,client
|
||||||
|
nginx,http-ka-1m,1,12.884901888,1533.4,10.16,16.89,0,0,0,10.02,10.017987999999999,0.6221234798431396,652.4287016538611,44.5546875,0.3120173745173745,0.9524714828897338,0.0931023816888339,0.8494284894229014,0.06460517774355376,proxy
|
||||||
|
haproxy,http-ka-1m,1,5.6199479296,669.51,23.77,26.75,0,0,0,10.1,10.10142,1.4377357408318718,1493.6409346347234,37.2578125,0.6189567430025446,0.9600760456273765,0.12264150943396226,1.2283878625213749,0.0313614380198913,client
|
||||||
|
direct,http-ka-1m,1,71.55415515136,8530.24,1.25,2.46,0,0,0,0.19,0.0,0.0021242651761937685,2.221312912842696,0.0,0.9348903043170559,0.034050179211469536,0.618208516886931,3.709405625590086,0.4019320096525814,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,1,3.7299945472,9063.64,63.09,514.63,0,468,0,10.42,10.374076,2.234855814000478,114.21055515975229,94.9921875,0.4750841211344336,0.9895536562203229,0.49168088737201365,0.45279435207006885,0.1178566516712031,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,1,3.12005885952,7581.55,81.16,398.47,0,390,0,10.41,10.364834,2.6691804145262847,136.2708136977694,125.58203125,0.4686014100672241,0.9886039886039886,0.4511393514460999,0.4206229326284934,0.09506761970676463,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,1,3.60827584512,8767.92,68.33,230.79,0,346,0,10.45,10.406272,2.3168960353478663,118.29965472349578,185.93359375,0.29191616766467066,0.9933460076045627,0.31209818819403856,0.41201669715464195,0.1178679391693439,proxy
|
||||||
|
3proxy-devel,http-ka-50k-2000,1,4.20487364608,10217.57,60.76,331.13,0,504,0,10.39,10.357021,1.9767538098912616,100.95415767892885,193.75,0.47977707006369424,0.9876425855513308,0.5068172134639966,0.46798553533834697,0.13115802493283865,proxy
|
||||||
|
3proxy-devel-s,http-ka-50k-2000,1,4.0667971584,9881.81,58.4,705.73,0,477,0,10.38,10.356761,2.041901692305461,104.58016805368045,210.84375,0.4753313108733834,0.9866920152091255,0.4967769660507091,0.45276734577617156,0.1273064226807526,proxy
|
||||||
|
nginx,http-ka-50k-2000,1,4.5468771942399995,11043.67,84.37,97.94,0,286,0,10.15,10.112297,1.7858410625838863,91.21955603487014,89.875,0.4225095610999818,0.964828897338403,0.4383094751192911,0.4615353256566173,0.12074832703972761,proxy
|
||||||
|
haproxy,http-ka-50k-2000,1,4.0114323456,9599.12,199.49,658.75,0,0,0,10.09,10.040925000000001,2.0122488190169516,104.50110818816414,175.69140625,0.5358673374324576,0.9582146248812915,0.29649742058104805,0.9049228720587726,0.09122955969335238,client
|
||||||
|
direct,http-ka-50k-2000,1,34.7892350976,84498.48,22.55,104.66,0,0,0,1.47,0.0,0.033803560115672926,1.7289846038037662,0.0,0.8991793669402111,0.3594132029339853,0.9491150442477876,3.411000944715859,0.9445115666403817,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,1,0.049325015039999996,4811.08,13.11,18.27,0,0,0,10.01,9.903726,162.35169910249257,207.54286662105284,9.83203125,0.326150262085032,0.9524262607040913,0.3879901960784314,0.275967034101441,0.0846086070834202,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,1,0.050751078399999996,4948.36,12.78,17.57,0,0,0,10.02,9.903932,157.9473826510847,202.19141594527514,9.56640625,0.3271880457985639,0.9524714828897338,0.3943765281173594,0.28071457773240316,0.08747121119129994,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,1,0.044543508479999994,4340.06,14.47,22.66,0,0,0,10.0,9.849950999999999,179.59968293903015,230.0701714022777,32.5859375,0.2443584784010316,0.9514747859181731,0.29759238521836506,0.2464537962061136,0.07507722882722555,proxy
|
||||||
|
3proxy-devel,http-close-1k,1,0.051589939200000004,5026.27,12.5,18.05,0,0,0,10.03,9.88227,155.5342015212144,198.897437931308,14.99609375,0.33365570599613154,0.9534220532319392,0.39681762545899635,0.2901956692189265,0.08840241088415653,proxy
|
||||||
|
3proxy-devel-s,http-close-1k,1,0.0511705088,4990.09,12.61,18.07,0,0,0,10.0,9.881556,156.34005186987704,200.0120007200432,12.44921875,0.33634789301520107,0.9514747859181731,0.3950587084148728,0.2854849847075131,0.08744387075013657,proxy
|
||||||
|
nginx,http-close-1k,1,0.1367343104,13330.41,4.67,5.54,0,0,0,10.01,9.963383,58.566134400162966,75.0217345684564,29.76953125,0.5268738574040219,0.9515209125475285,0.37834328745780316,0.7183057481458207,0.1796215524167742,proxy
|
||||||
|
haproxy,http-close-1k,1,0.17062428672,16634.73,3.69,4.5,0,0,0,10.1,10.056046,47.355509320074354,60.1169005868838,29.83984375,0.5420510037981552,0.9591642924976258,0.45001149161112386,0.8084893552081557,0.16340300680257439,proxy
|
||||||
|
direct,http-close-1k,1,0.50432311296,49176.43,0.842,2.3,0,0,0,4.68,0.0,7.4238120438809885,9.422679665132462,0.0,0.7885857113101438,0.5246636771300448,0.9357254290171607,2.3239174095993884,0.8977134920844292,origin
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream1,2,8.286605016341204,nan,nan,nan,0,0,0,10.0,9.920733,0.9651597170390142,nan,1.359375,0.14385964912280702,0.949667616334283,0.19778817524457679,0.08846419733487249,0.5178944270022812,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream1,2,22.2233827907604,nan,nan,nan,0,0,0,10.01,10.000335,0.36023357920119853,nan,9.625,0.11502958579881657,0.9506172839506173,0.22473246135552913,0.19502698520391007,0.5634104164845997,proxy
|
||||||
|
3proxy-devel,stream1,2,21.765111163589697,nan,nan,nan,0,0,0,10.02,9.998705000000001,0.36822359918464515,nan,6.7578125,0.0948905109489051,0.9524714828897338,0.21693967239312825,0.19223268418501907,0.5609295079271684,proxy
|
||||||
|
3proxy-devel-s,stream1,2,46.73249807813627,nan,nan,nan,0,0,0,9.92,9.003859,0.16977904591309106,nan,11.36328125,0.21421889616463985,0.9447619047619048,0.3312862504264756,0.41067798286675167,0.9694125806126206,origin
|
||||||
|
nginx,stream1,2,12.469062099793415,nan,nan,nan,0,0,0,10.0,9.998698,0.6415083395345121,nan,29.8828125,0.11991682070240296,0.9505703422053232,0.2013945857260049,0.11984938068224997,0.5103005386978487,proxy
|
||||||
|
haproxy,stream1,2,13.624683206697599,nan,nan,nan,0,0,0,10.0,10.000916,0.587057135368575,nan,34.87890625,0.12731326644370122,0.9505703422053232,0.20306672192291753,0.1122730340939643,0.5255302303974537,proxy
|
||||||
|
direct,stream1,2,62.00100565146528,nan,nan,nan,0,0,0,0.08,0.0,0.001032088881843162,nan,0.0,0.16763463569165787,0.01171303074670571,0.33240901213171575,0.5925148906387202,0.9621577871938664,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream1,2,25.13459256422261,nan,nan,nan,0,0,0,10.0,10.002671,0.3181990311989089,nan,8.390625,0.09686888454011741,0.9514747859181731,0.2643041712809155,0.20836226291557725,0.7175046811596728,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream16,2,8.987514810098146,nan,nan,nan,0,0,999,10.05,10.018224,0.891564226451582,nan,34.4765625,0.09099307159353348,0.9544159544159544,0.29216323582520765,0.08466374023601732,0.6719340718210135,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream16,2,21.071103752647087,nan,nan,nan,0,0,1750,10.04,10.004246,0.3802105630940858,nan,75.421875,0.14884887166628677,0.9534662867996201,0.27044025157232704,0.19874932036339213,0.5726167854729214,proxy
|
||||||
|
3proxy-devel,stream16,2,20.88356344300066,nan,nan,nan,0,0,1916,10.04,10.002035,0.3836478067402083,nan,62.578125,0.15109389243391066,0.952561669829222,0.2658937920718025,0.20069267100349697,0.5659629834079776,proxy
|
||||||
|
3proxy-devel-s,stream16,2,37.836379550825434,nan,nan,nan,0,0,1637,10.04,9.982891,0.2119675046593261,nan,90.01953125,0.1772983114446529,0.9516587677725118,0.35577924331829225,0.3470469663570807,0.9125012250895256,origin
|
||||||
|
nginx,stream16,2,13.526234749787726,nan,nan,nan,0,0,2714,10.03,10.026723,0.5918238758579852,nan,65.78515625,0.1294250281848929,0.9525166191832859,0.3106900250268144,0.1274306021910872,0.6039446697219155,proxy
|
||||||
|
haproxy,stream16,2,9.834126139401159,nan,nan,nan,0,0,44,10.02,10.008187,0.8146389446310781,nan,47.69921875,0.16695842450765863,0.9515669515669516,0.6993827160493827,0.10937241978106194,1.2993031629625964,origin
|
||||||
|
direct,stream16,2,141.1760211425275,nan,nan,nan,0,0,3740,0.28,0.0,0.0015863211409809627,nan,0.0,0.5678073510773131,0.05045045045045045,0.95,1.52668150425192,2.8462802363378126,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream16,2,24.55551544211028,nan,nan,nan,0,0,1644,10.04,10.005853,0.32629388551362054,nan,61.3984375,0.15359628770301625,0.9534662867996201,0.3163548163548164,0.23017459199529192,0.7998194470095865,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,2,8.77774998842636,nan,nan,nan,0,0,0,10.02,10.002153,0.9131106078895976,nan,1.91015625,0.15555555555555556,0.99800796812749,0.03339253996447602,0.5352658303272034,0.07979041790151097,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,2,21.603287837877293,nan,nan,nan,0,0,0,10.0,10.000727000000001,0.37027268069818686,nan,5.16015625,0.1575649059982095,0.998003992015968,0.07715023994093761,0.5524390397381199,0.20154594422907607,proxy
|
||||||
|
3proxy-devel,stream1-down,2,21.303928895665045,nan,nan,nan,0,0,0,10.0,10.002455,0.3754771118572582,nan,5.984375,0.1503653738055087,0.9505703422053232,0.09543285616905249,0.552717440113428,0.1938354142227824,proxy
|
||||||
|
3proxy-devel-s,stream1-down,2,47.320203777706716,nan,nan,nan,0,0,0,9.9,8.762285,0.16735206137277603,nan,11.29296875,0.2516209476309227,0.9304511278195489,0.13850110213078617,0.9492116954091504,0.3602838138755396,client
|
||||||
|
nginx,stream1-down,2,14.106979062991007,nan,nan,nan,0,0,0,10.0,10.000791000000001,0.5670304371051654,nan,35.7734375,0.15931894192763757,0.999000999000999,0.244173140954495,0.5245647078834085,0.1137764809547855,proxy
|
||||||
|
haproxy,stream1-down,2,13.730794831069057,nan,nan,nan,0,0,0,10.01,10.002403,0.5831436303216366,nan,33.20703125,0.14322543683758235,0.9506172839506173,0.06225165562913907,0.533578834453824,0.11684576402124208,proxy
|
||||||
|
direct,stream1-down,2,61.970607058644724,nan,nan,nan,0,0,0,0.07,0.0,0.0009035575299123102,nan,0.0,0.23823109843081314,0.00904392764857881,0.18501742160278745,0.9515401696214075,0.5065174918896649,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,2,47.00754139952631,nan,nan,nan,0,0,0,9.92,9.164185,0.16880471450875434,nan,7.81640625,0.2354368932038835,0.9092575618698442,0.1350314026517795,0.9181941858744715,0.34314505326991174,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,2,0.14126415872,13977.54,4.41,8.57,0,0,0,10.11,10.103936000000001,57.25443787925883,71.61578239002621,5.26953125,0.39503305342147577,0.9601139601139601,0.4092140921409214,0.4044028381125424,0.1672592594808021,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,2,0.06073352192,6012.45,10.54,11.94,0,0,0,6.33,5.787432,83.38064119960721,105.05003568050185,9.265625,0.14845409487845174,0.6193737769080235,0.14365548980933596,0.2721064683401922,0.1206863596697095,none
|
||||||
|
3proxy-devel,http-ka-1k,2,0.15946743808000002,15785.92,3.86,8.19,0,0,0,10.1,10.103763,50.668651213588234,63.35108418167334,9.2734375,0.4144079885877318,0.9600760456273765,0.4346764346764347,0.45769850543007873,0.20054527218174723,proxy
|
||||||
|
3proxy-devel-s,http-ka-1k,2,0.15082717184,14929.48,4.1,8.28,0,0,0,10.09,10.08355,53.51820830110713,66.91602668682769,9.44921875,0.40567732662594325,0.9591254752851711,0.4263016377413835,0.42724727426155973,0.1805576935586204,proxy
|
||||||
|
nginx,http-ka-1k,2,0.38109446144,37010.5,1.7,2.09,0,0,0,10.02,10.013575000000001,21.03415507459966,27.03570493846814,30.16796875,0.4271085458946193,0.9524714828897338,0.4704607046070461,0.6413979374063188,0.30332627013937496,proxy
|
||||||
|
haproxy,http-ka-1k,2,0.44577062912,44116.19,1.39,2.09,0,0,0,10.01,9.999934999999999,17.964395760682276,22.676404759100013,29.703125,0.4526010512959942,0.9506172839506173,0.46119906566311963,0.6943160022023335,0.3182816361460946,proxy
|
||||||
|
direct,http-ka-1k,2,1.23790688256,120231.46,0.47300000000000003,0.88,0,0,0,0.64,0.0,0.413601384088907,0.527050886763117,0.0,0.8046082949308756,0.20846905537459284,0.957608351787409,2.4892068817789443,0.9574683332380854,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,2,0.13581156352,13441.73,4.61,8.49,0,0,0,10.08,10.08868,59.376387334002466,74.24703343326237,5.2734375,0.3856599674090168,0.9590865842055185,0.4054388133498146,0.3853053598739871,0.17577252336062021,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,2,8.76173328384,1043.83,15.05,25.04,0,0,0,10.02,10.018011,0.9148874703575584,958.3014537107881,8.79296875,0.24720812182741117,0.9524714828897338,0.09020458772473651,0.6430452902999537,0.030413724521814716,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,2,12.4554051584,1479.7,10.75,11.56,0,0,0,6.88,5.355506,0.4418965043692753,463.95576235754265,10.078125,0.1962594696969697,0.6317722681359045,0.08011399620012666,0.5603951058237995,0.05131653431277712,none
|
||||||
|
3proxy-devel,http-ka-1m,2,21.81843386368,2602.78,5.85,11.44,0,0,0,10.02,9.961265000000001,0.36739575581287776,384.2466541396633,16.15625,0.386041439476554,0.9533777354900095,0.22219116825041924,1.0010771720141753,0.11410175580144677,client
|
||||||
|
3proxy-devel-s,http-ka-1m,2,34.96103378944,4165.09,3.57,8.69,0,0,0,10.01,9.958632000000001,0.2290550115946177,239.99616389748016,14.21484375,0.5072217502124045,0.9515209125475285,0.3882580333413868,1.4940993752813039,0.14542942821942076,client
|
||||||
|
nginx,http-ka-1m,2,12.54130450432,1497.64,10.45,16.55,0,0,0,10.02,10.019409000000001,0.6391679587429516,667.8664267146571,45.26953125,0.2984306032368808,0.9515669515669516,0.08904747130003103,0.7933676888279081,0.04370691621717513,proxy
|
||||||
|
haproxy,http-ka-1m,2,6.294056468479999,749.32,21.2,24.21,0,0,0,10.09,10.100241,1.2824797553729876,1333.2452431289641,39.00390625,0.613958560523446,0.9600380589914367,0.09904761904761905,1.2948826327916734,0.02755697648841598,client
|
||||||
|
direct,http-ka-1m,2,72.06955122688001,8587.98,1.25,2.33,0,0,0,0.18,0.0,0.0019980698859450073,2.0933153463273944,0.0,0.9413997627520759,0.033271719038817,0.6151936444885799,3.754277127623124,0.46653177061824086,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,2,32.98534883328,3932.3,3.85,8.34,0,0,0,10.02,9.985841,0.24301698431372643,254.42449787979587,14.6015625,0.4930203045685279,0.9524714828897338,0.37142857142857144,1.4196693651925036,0.1539927098158036,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,2,3.14681851904,7646.69,78.46,598.72,0,497,0,10.41,10.359805000000001,2.6464824550926513,135.20885286783042,125.03125,0.472448646886208,0.9886039886039886,0.45147123407992973,0.4253535770225284,0.09884827589363786,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,2,3.6885548236799997,8963.07,66.91,268.78,0,425,0,10.46,10.413841999999999,2.268639182554269,115.97352344416973,199.2734375,0.3172043010752688,0.9942965779467681,0.3365439093484419,0.41968795136117204,0.12456576544886427,proxy
|
||||||
|
3proxy-devel,http-ka-50k-2000,2,4.27215028224,10381.1,57.98,217.64,0,471,0,10.41,10.362829,1.949369626490155,99.63820134382358,198.3359375,0.4785589032360912,0.9886039886039886,0.504708904109589,0.47274066039307266,0.13204040116340665,proxy
|
||||||
|
3proxy-devel-s,http-ka-50k-2000,2,4.04892942336,9838.84,59.56,684.02,0,451,0,10.39,10.360715,2.0528883393334865,105.1332125836057,182.32421875,0.47179816808613206,0.9885823025689819,0.496881049688105,0.452020753762097,0.12450968328260942,proxy
|
||||||
|
nginx,http-ka-50k-2000,2,4.578082816,11119.51,82.36,97.03,0,291,0,10.15,10.113419,1.7736682201600436,90.59183691684294,89.765625,0.43762270212386223,0.9657469077069457,0.4379694969269292,0.4691141566268477,0.11783661140664521,proxy
|
||||||
|
haproxy,http-ka-50k-2000,2,4.071998095360001,9750.91,193.51,818.8,0,0,0,10.09,10.037085000000001,1.9823191983311483,102.87415503512403,176.203125,0.5370644922164566,0.9591254752851711,0.3017148981779207,0.8963847192577428,0.09029282753738208,proxy
|
||||||
|
direct,http-ka-50k-2000,2,35.13283248128,85332.97,22.77,52.86,0,0,0,1.59,0.0,0.03620544972221543,1.8452218618172533,0.0,0.91359177954227,0.38405797101449274,0.9541139240506329,3.4653449768624753,0.952137198533366,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,2,3.73888647168,9085.46,67.45,190.12,0,488,0,10.41,10.359068,2.227401142848279,113.8488795564159,96.58984375,0.46634146341463417,0.9876660341555977,0.491044776119403,0.45181039548726254,0.11590967543506979,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,2,0.0511705088,4985.36,12.65,17.84,0,0,0,10.03,9.914797,156.80907202548667,200.73650082055798,9.5703125,0.3288759689922481,0.9534220532319392,0.39224349533627884,0.2845225037643004,0.08744239251847147,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,2,0.0452984832,4420.66,14.18,21.97,0,0,0,10.03,9.879292,177.1361739547164,226.2882411334717,31.34765625,0.24989311671654554,0.9534220532319392,0.3030050083472454,0.2493314729842301,0.07890083260724257,proxy
|
||||||
|
3proxy-devel,http-close-1k,2,0.0528482304,5153.04,12.2,17.51,0,0,0,10.03,9.903379000000001,151.8310062468998,194.1390523381852,13.5390625,0.3364864864864865,0.9534220532319392,0.401609363569861,0.29404623857137496,0.09028827318898211,proxy
|
||||||
|
3proxy-devel-s,http-close-1k,2,0.05133828096,5005.62,12.56,17.8,0,0,0,10.03,9.89768,156.29662407769095,199.67748999621747,12.5390625,0.33513513513513515,0.9534220532319392,0.39515537068754586,0.28740050932892375,0.08842468920240701,proxy
|
||||||
|
nginx,http-close-1k,2,0.13690208256,13351.64,4.68,5.23,0,0,0,10.03,9.976531000000001,58.61123402913412,74.97888182042446,29.65625,0.5274785466496257,0.9525166191832859,0.38292934502320786,0.71732877140962,0.15297870495328245,proxy
|
||||||
|
haproxy,http-close-1k,2,0.171966464,16769.34,3.68,4.28,0,0,0,10.1,10.062629999999999,46.98590534489329,59.636629880903875,29.890625,0.5421119362434341,0.9600760456273765,0.4504463263904784,0.8094617760775544,0.16151087000273195,proxy
|
||||||
|
direct,http-close-1k,2,0.49970937856000003,48719.93,0.847,2.4,0,0,0,4.68,0.0,7.492354877927227,9.51134451390526,0.0,0.7908633696563285,0.527027027027027,0.9366614664586583,2.3234202233526995,0.900496417140032,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,2,0.04915724288,4789.91,13.15,18.65,0,0,0,10.0,9.888626,162.7430574072099,208.28993959591753,9.875,0.327005036807439,0.9514747859181731,0.38700980392156864,0.2768784280803077,0.0845814286769186,proxy
|
||||||
|
148
bench/data/m4-splice-direction.csv
Normal file
148
bench/data/m4-splice-direction.csv
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
direct,stream1,0,61.487212980060306,nan,nan,nan,0,0,0,0.06,0.0,0.0007805286666274496,nan,0.0,0.14247239429033126,0.008298755186721992,0.333000333000333,0.502620102346311,0.9985659689289935,origin
|
||||||
|
3proxy-devel-s0,stream1,0,22.44501605295182,nan,nan,nan,0,0,0,10.0,10.002151,0.35631229684384064,nan,3.94140625,0.10666347075743049,0.9514747859181731,0.20868516284680338,0.20172796213326183,0.5636353556645027,proxy
|
||||||
|
3proxy-devel-s1,stream1,0,22.37642214939323,nan,nan,nan,0,0,0,10.01,10.002891,0.35776804063379836,nan,6.5,0.1497737556561086,0.9497153700189753,0.2128,0.19878914914226112,0.5650049000762309,proxy
|
||||||
|
3proxy-devel-s3,stream1,0,44.136779831106054,nan,nan,nan,0,0,0,9.96,9.459084,0.18049117370151851,nan,9.671875,0.09532374100719425,0.9230769230769231,0.3029350104821803,0.33871862348288345,0.8401950944403631,proxy
|
||||||
|
haproxy,stream1,0,13.509580471013159,nan,nan,nan,0,0,0,10.0,10.001668,0.5920179506056444,nan,32.69921875,0.03625527688105289,0.9505703422053232,0.2,0.11508241846266444,0.5253322403228243,proxy
|
||||||
|
haproxy-splice-response,stream1,0,13.708241445787277,nan,nan,nan,0,0,0,10.0,10.001178,0.5834788601183875,nan,41.45703125,0.13733245440562514,0.9514747859181731,0.2006661115736886,0.11036628578210421,0.5217587530609814,proxy
|
||||||
|
haproxy-splice,stream1,0,46.32776561974326,nan,nan,nan,0,0,0,9.93,9.175564,0.1714389207100888,nan,45.0546875,0.10099649878804201,0.9548076923076924,0.3290965304019237,0.33474151591736007,0.9605071996968593,origin
|
||||||
|
direct,stream16,0,141.2373491852448,nan,nan,nan,0,0,4160,0.31,0.0,0.0017552205533524605,nan,0.0,0.5704569606801275,0.056776556776556776,0.95,1.56745831250613,2.8460546808562666,origin
|
||||||
|
3proxy-devel-s0,stream16,0,21.144310573433135,nan,nan,nan,0,0,1920,10.04,10.002381000000002,0.3789090711365423,nan,62.0859375,0.13965317919075146,0.9534662867996201,0.2633729569093611,0.20071088633863815,0.5681786228255737,proxy
|
||||||
|
3proxy-devel-s1,stream16,0,21.243645575609744,nan,nan,nan,0,0,1880,10.03,10.003535000000001,0.3767333284845438,nan,70.64453125,0.13404452690166976,0.9525166191832859,0.26217228464419473,0.19873324824577762,0.5650803170902811,proxy
|
||||||
|
3proxy-devel-s3,stream16,0,38.512462995553136,nan,nan,nan,0,0,1735,10.02,9.982759,0.2078769301972949,nan,66.46484375,0.1876155268022181,0.9524714828897338,0.35753237900477164,0.3594042109574554,0.9565678731741979,origin
|
||||||
|
haproxy,stream16,0,8.953355848332826,nan,nan,nan,0,0,3,10.02,10.00652,0.8949384016006018,nan,46.55078125,0.15711159737417943,0.9506641366223909,0.6951102588686481,0.10176953426144361,1.339292796661325,origin
|
||||||
|
haproxy-splice-response,stream16,0,9.75675083543487,nan,nan,nan,0,0,5,10.02,10.009506,0.8210787090180441,nan,55.921875,0.16429975966790475,0.9515669515669516,0.7033001245330013,0.10366690475769363,1.3250853020025157,origin
|
||||||
|
haproxy-splice,stream16,0,23.968363506977507,nan,nan,nan,0,0,0,10.01,10.006899,0.3339304999007984,nan,65.87109375,0.2625523012552301,0.9515209125475285,0.7369385884509624,0.25394726356699204,1.3048203919224286,origin
|
||||||
|
direct,stream1-down,0,66.98494270000984,nan,nan,nan,0,0,0,0.04,0.0,0.0004776633665574674,nan,0.0,0.25118483412322273,0.0055248618784530384,0.22486865148861646,0.9492501829192568,0.5421010098971271,client
|
||||||
|
3proxy-devel-s0,stream1-down,0,22.265855203813558,nan,nan,nan,0,0,0,10.01,10.002751,0.35961951770456624,nan,5.2890625,0.15046491969568893,0.9515209125475285,0.25943396226415094,0.5556162913945981,0.21479958214461328,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,0,48.11495851109196,nan,nan,nan,0,0,0,9.91,8.987101000000001,0.1647530137622763,nan,11.375,0.23887699262431597,0.9009090909090909,0.27546628407460544,0.9496073811347584,0.42195677113184316,client
|
||||||
|
3proxy-devel-s3,stream1-down,0,46.3017559714097,nan,nan,nan,0,0,0,9.92,8.883735,0.1713775760327341,nan,11.28125,0.23545037430572324,0.8953068592057761,0.12757777001048584,0.927494284705082,0.34018938367566726,client
|
||||||
|
haproxy,stream1-down,0,13.814483246634754,nan,nan,nan,0,0,0,10.01,10.002008,0.5796162663768405,nan,32.609375,0.1484219505260165,0.9515209125475285,0.04864139550486414,0.5451987260603789,0.1216615145243143,proxy
|
||||||
|
haproxy-splice-response,stream1-down,0,46.7439033815401,nan,nan,nan,0,0,0,9.92,9.133771999999999,0.16975657809149552,nan,44.9140625,0.23832335329341317,0.906764168190128,0.12692847124824685,0.937019776420622,0.3420948665360546,client
|
||||||
|
haproxy-splice,stream1-down,0,47.41147205757616,nan,nan,nan,0,0,0,9.94,9.16069,0.16770495718846748,nan,44.9140625,0.2496236828901154,0.9530201342281879,0.13616236162361622,0.9412903131586786,0.35745225307441714,client
|
||||||
|
direct,http-ka-1k,0,1.25225140224,121626.0,0.504,0.719,0,0,0,0.64,0.0,0.4088635868837085,0.5210105651173658,0.0,0.807242465137202,0.21548821548821548,0.9576217583807717,2.5188764874269234,0.9576925437006272,origin
|
||||||
|
3proxy-devel-s0,http-ka-1k,0,0.16114515968,15952.09,3.82,8.15,0,0,0,10.11,10.10432,50.190772196081134,62.750988436687294,9.42578125,0.42030510257759074,0.9610266159695817,0.4353857386225359,0.4577213404241798,0.1967696799782158,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,0,0.1556086784,15399.24,3.97,8.27,0,0,0,10.1,10.09741,51.92512450513814,64.94007509901753,9.43359375,0.41102756892230574,0.9600760456273765,0.4291687161829808,0.43774075312343336,0.1948503650542321,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,0,0.15166603263999998,15008.65,4.1,8.28,0,0,0,10.01,9.999277999999999,52.80022072581064,66.61741902423117,9.27734375,0.4061323292092523,0.9515209125475285,0.4218942189421894,0.43012125408953433,0.19768443421556894,proxy
|
||||||
|
haproxy,http-ka-1k,0,0.446693376,44210.83,1.39,2.09,0,0,0,10.1,10.090006,18.088470602259388,22.619367553525038,29.703125,0.45401987353206863,0.9600760456273765,0.4673744174003107,0.690656463524837,0.28694960570814776,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,0,0.44677726207999996,44219.81,1.38,2.12,0,0,0,10.09,10.092872,18.067168329964442,22.592974905899922,35.79296875,0.45226860254083484,0.9600380589914367,0.4615585092520198,0.6925690888772407,0.2831905647869406,proxy
|
||||||
|
haproxy-splice,http-ka-1k,0,0.4366270464,43213.42,1.42,2.16,0,0,0,10.1,10.095120999999999,18.505495861101103,23.14220772079041,35.80859375,0.45031905195989064,0.9600760456273765,0.46247727862892757,0.6963301592739042,0.33361477577821014,proxy
|
||||||
|
direct,http-ka-1m,0,70.95285972992,8455.89,1.3,2.28,0,0,0,0.27,0.0,0.0030442747596389737,3.1880224814622395,0.0,0.9296270232230823,0.047285464098073555,0.5918572505654687,3.6778375733986057,0.45582281905816757,client
|
||||||
|
3proxy-devel-s0,http-ka-1m,0,22.07613190144,2632.68,5.76,11.58,0,0,0,10.02,9.959567999999999,0.3631070894026107,379.97724687144483,18.32421875,0.38961321164710994,0.9524714828897338,0.2408118486012068,0.99525414137977,0.07507923787836303,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,0,35.47642986496,4229.73,3.51,8.44,0,0,0,10.02,9.958341,0.225952837715426,236.4490171555325,17.19140625,0.5095541401273885,0.9524714828897338,0.3856556387346052,1.5091835207991013,0.1644485427831386,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,0,34.96103378944,4166.23,3.56,8.51,0,0,0,10.02,9.952836,0.2292838377800269,240.1322884463297,16.31640625,0.5056251326682233,0.9515669515669516,0.3783783783783784,1.4891091509552656,0.16156221774601218,client
|
||||||
|
haproxy,http-ka-1m,0,6.129975296,729.73,21.57,27.04,0,0,0,10.11,10.101142,1.31941804158292,1371.7774762550882,39.09375,0.6089980439034992,0.9601139601139601,0.13184772516248838,1.2665546459470216,0.026615701205427198,client
|
||||||
|
haproxy-splice-response,http-ka-1m,0,26.37109919744,3143.12,5.0,6.56,0,0,0,10.0,9.98051,0.30336240215487903,318.0358108322997,52.09765625,0.605999097880018,0.998003992015968,0.24359720605355065,1.6157059495457868,0.09484297321822183,client
|
||||||
|
haproxy-splice,http-ka-1m,0,26.45699854336,3148.67,4.96,6.42,0,0,0,10.0,9.994585,0.3023774592907398,317.33942625031733,51.74609375,0.5726495726495726,0.9505703422053232,0.24931431705979154,1.5943894466628896,0.10358563023199845,client
|
||||||
|
direct,http-ka-2k-50k-2000,0,29.635274342400002,72002.61,25.3,390.94,0,528,0,0.64,0.0,0.017276708630548008,0.8824202581630768,0.0,0.9105202312138728,0.17486338797814208,0.9537535635096611,3.3858454104933187,0.9517514817089334,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,0,3.90296764416,9484.04,61.02,162.28,0,531,0,10.41,10.371582,2.133760963266289,109.0909090909091,178.22265625,0.3772845953002611,0.9886039886039886,0.5113006396588486,0.42821412802735687,0.15491155478238802,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,0,3.66112407552,8896.4,73.6,271.94,0,420,0,10.39,10.358821,2.270340974122661,115.94041176142387,197.41796875,0.3664724675812817,0.9876425855513308,0.5021358393848783,0.40330801925072834,0.13299807033596747,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,0,3.5618029568000003,8654.75,70.06,176.8,0,585,0,10.41,10.346931,2.3381416942508393,119.51505131914307,196.25390625,0.363824192336589,0.9886039886039886,0.5015947267701467,0.3957081887213887,0.1378065840003408,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,0,3.6326866944000002,8683.35,220.17,632.8,0,0,0,10.07,10.046798,2.2176423891492756,115.2873023687133,140.0703125,0.5216417910447761,0.9581351094196003,0.27842690225135364,0.819990330188369,0.10358652209871884,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,0,4.64619831296,11231.47,171.94,543.3,0,0,0,10.12,10.070951,1.7424998793997237,89.54722023130083,143.9453125,0.5019950598517956,0.9619771863117871,0.46373626373626375,0.8221449563597469,0.13500443497052061,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,0,4.64192012288,11216.39,172.88,474.18,0,0,0,10.14,10.073342,1.7475526905376924,89.79013548215708,142.3046875,0.5028812908182866,0.9629629629629629,0.4607908106914071,0.85053107579199,0.13020256819296278,proxy
|
||||||
|
direct,http-close-1k,0,0.48452599807999996,47239.81,0.88,2.41,0,0,0,4.68,0.0,7.7271395442888675,9.808997030053677,0.0,0.7764244426094137,0.5109170305676856,0.9352428393524284,2.248213854039727,0.8956366813821871,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,0,0.052680458240000005,5137.81,12.25,17.31,0,0,0,10.03,9.901605,152.31454448335487,194.81402350199087,13.19140625,0.33725641520355004,0.9534220532319392,0.3999512551791372,0.2959398960221911,0.09124664663010544,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,0,0.05142216704,5015.87,12.52,18.06,0,0,0,10.02,9.890167,155.8860791254588,199.24438258103004,12.2109375,0.3343000773395205,0.9524714828897338,0.39540566959921797,0.28832316010616965,0.0883786599817914,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,0,0.050834964479999994,4953.57,12.66,18.8,0,0,0,10.01,9.874103,157.5293714063789,201.68846084100662,13.5546875,0.33507347254447023,0.9515209125475285,0.3956500488758553,0.288277359454439,0.08935883727247883,proxy
|
||||||
|
haproxy,http-close-1k,0,0.17087594496,16663.43,3.7,4.3,0,0,0,10.1,10.065618,47.28576630192992,60.01437968305277,29.76953125,0.545749279538905,0.9600760456273765,0.4696256444743331,0.8135872774079423,0.1691943123365163,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,0,0.17121148928,16692.69,3.69,4.32,0,0,0,10.1,10.065442,47.193094540436675,59.90652210016845,35.75,0.5408588512411668,0.9600760456273765,0.4460018382352941,0.805048843723069,0.16541725711158606,proxy
|
||||||
|
haproxy-splice,http-close-1k,0,0.17272143872,16840.36,3.65,4.43,0,0,0,10.02,9.96999,46.40998858858973,59.41932729256606,35.92578125,0.5405944182674882,0.9506641366223909,0.4100216815225247,0.8151160047298934,0.15960310316874107,proxy
|
||||||
|
3proxy-devel-s0,stream1,1,22.837818841062138,nan,nan,nan,0,0,0,10.01,10.003943,0.3505151425454952,nan,6.66796875,0.14971687429218572,0.9515209125475285,0.21761658031088082,0.19789816312017983,0.5653981339541418,proxy
|
||||||
|
3proxy-devel-s1,stream1,1,21.450425656809077,nan,nan,nan,0,0,0,10.0,10.00309,0.37284033696348023,nan,3.453125,0.14594843462246776,0.9505703422053232,0.21006389776357828,0.1988538953797619,0.551021059854269,proxy
|
||||||
|
3proxy-devel-s3,stream1,1,47.43245857162112,nan,nan,nan,0,0,0,9.9,8.976406,0.16695403212905002,nan,11.3046875,0.16192045187102846,0.9,0.3145631067961165,0.3748387031068509,0.9256114840882478,origin
|
||||||
|
haproxy,stream1,1,13.146829794171975,nan,nan,nan,0,0,0,10.01,10.002989999999999,0.6089013917528086,nan,30.21484375,0.040199750312109865,0.9515209125475285,0.1961028192371476,0.10751662651624597,0.5181105183796308,proxy
|
||||||
|
haproxy-splice-response,stream1,1,13.607586197795765,nan,nan,nan,0,0,0,10.01,10.00215,0.588323235943398,nan,38.13671875,0.058580456976178905,0.9515209125475285,0.1986727498963086,0.11704392038018378,0.5208744899019659,proxy
|
||||||
|
haproxy-splice,stream1,1,46.30613478363452,nan,nan,nan,0,0,0,9.95,9.436968,0.17185616166298975,nan,42.14453125,0.21272365805168986,0.9230055658627088,0.31076218514883874,0.40818395209763403,0.9105263522607521,origin
|
||||||
|
direct,stream1,1,61.61557578967376,nan,nan,nan,0,0,0,0.03,0.0,0.0003894508731223541,nan,0.0,0.13425216947422156,0.0038910505836575876,0.31695721077654515,0.5004039388084773,0.9502366073982361,origin
|
||||||
|
3proxy-devel-s0,stream16,1,20.955773135042747,nan,nan,nan,0,0,1794,10.04,10.008061999999999,0.3821987211351831,nan,74.203125,0.1414118188089216,0.9534662867996201,0.2690166975881262,0.19966075048086795,0.5696333546451248,proxy
|
||||||
|
3proxy-devel-s1,stream16,1,20.6655596998746,nan,nan,nan,0,0,2076,10.03,9.999322,0.38739262375622047,nan,44.74609375,0.1439446366782007,0.9534220532319392,0.2619316046599023,0.19975677767959069,0.5567830361663778,proxy
|
||||||
|
3proxy-devel-s3,stream16,1,38.1264621919771,nan,nan,nan,0,0,1653,10.02,9.982086,0.20999314147813583,nan,79.796875,0.17150956768249467,0.9515669515669516,0.35314443676572216,0.3451557690591759,0.9240927522378024,origin
|
||||||
|
haproxy,stream16,1,8.803591705829385,nan,nan,nan,0,0,4,10.01,10.007219000000001,0.9091695149739584,nan,48.09765625,0.13762287756925826,0.9515209125475285,0.7017710309930424,0.09701453153247169,1.3427362231738011,origin
|
||||||
|
haproxy-splice-response,stream16,1,9.20448724268318,nan,nan,nan,0,0,6,10.03,10.009892,0.8713400645446187,nan,55.22265625,0.1377232142857143,0.9507109004739337,0.7017430600387347,0.09982994301761618,1.366099047058414,origin
|
||||||
|
haproxy-splice,stream16,1,21.938702636983383,nan,nan,nan,0,0,1,10.02,10.013288999999999,0.36502362711527536,nan,52.57421875,0.2632460732984293,0.9515669515669516,0.7227443609022557,0.23486219470799805,1.2538197428000601,origin
|
||||||
|
direct,stream16,1,140.5837182273533,nan,nan,nan,0,0,3751,0.2,0.0,0.001137784995444025,nan,0.0,0.5619676320272572,0.03656307129798903,0.9500158177791838,1.5265737636491428,2.846971796737993,origin
|
||||||
|
3proxy-devel-s0,stream1-down,1,22.914811514145512,nan,nan,nan,0,0,0,10.02,10.001677,0.34977687022723947,nan,9.80859375,0.15563006426376083,0.9506641366223909,0.19080322484323678,0.5650456897204938,0.19667998237942064,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,1,47.906365458167535,nan,nan,nan,0,0,0,9.95,8.918061999999999,0.1661362609638204,nan,11.34375,0.23694298035457595,0.8963963963963963,0.27406340057636885,0.9379055259898098,0.42658538652742733,client
|
||||||
|
3proxy-devel-s3,stream1-down,1,46.3442832652511,nan,nan,nan,0,0,0,9.93,9.152154,0.17139315443349795,nan,11.20703125,0.2335124572545188,0.9085086916742909,0.1392931392931393,0.9047028881709641,0.3477173771475372,client
|
||||||
|
haproxy,stream1-down,1,13.455516773444856,nan,nan,nan,0,0,0,10.0,10.001686,0.5944859222081099,nan,31.90234375,0.1470948012232416,0.998003992015968,0.05079928952042629,0.5183878794549521,0.12270950615418987,proxy
|
||||||
|
haproxy-splice-response,stream1-down,1,47.675632503302225,nan,nan,nan,0,0,0,9.92,9.028054000000001,0.1664443857376602,nan,43.1875,0.2375717017208413,0.9018181818181819,0.1635936976198458,0.9417555460032427,0.358166877198603,client
|
||||||
|
haproxy-splice,stream1-down,1,47.41410378852379,nan,nan,nan,0,0,0,9.94,9.082224,0.16769494444300098,nan,42.0703125,0.2388981239610544,0.9052823315118397,0.13233240223463688,0.9512416704915422,0.34299074212254055,client
|
||||||
|
direct,stream1-down,1,63.6951610197785,nan,nan,nan,0,0,0,0.04,0.0,0.0005023370423135674,nan,0.0,0.24059787849566056,0.00546448087431694,0.2026554856743536,0.9456976958041993,0.5502321715011873,client
|
||||||
|
3proxy-devel-s0,http-ka-1k,1,0.16055795712,15890.95,3.84,8.29,0,0,0,10.02,10.016485999999999,49.92589681499804,62.973716957653004,9.21875,0.41788675251367086,0.9515669515669516,0.43298211222739524,0.4577345917883268,0.1710894552700988,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,1,0.15502147584,15339.4,3.98,8.31,0,0,0,10.09,10.090712000000002,52.070204829756825,65.12996946830965,9.26171875,0.4084785342195078,0.9591254752851711,0.4309838472834068,0.43580134409824284,0.18056244321438847,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,1,0.15174991872,15017.81,4.08,8.44,0,0,0,10.1,10.090126999999999,53.24549804147664,66.59018684810844,9.2578125,0.40105110547299744,0.9591642924976258,0.42552147239263804,0.42904165609352063,0.18819906612065884,proxy
|
||||||
|
haproxy,http-ka-1k,1,0.448790528,44416.32,1.38,2.08,0,0,0,10.02,9.999747,17.86133953344042,22.545884925983344,29.71484375,0.45201014125316913,0.9497630331753555,0.4628956927867151,0.6941980794478849,0.2925208873436063,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,1,0.44509954048,44049.37,1.39,2.09,0,0,0,10.1,10.090792,18.15324273596518,22.702445120772513,35.796875,0.45510611282423363,0.9600760456273765,0.4655127873934384,0.7047753414968844,0.34578888180527684,proxy
|
||||||
|
haproxy-splice,http-ka-1k,1,0.44535119872,44075.39,1.39,2.1,0,0,0,10.1,10.086662,18.142984734795863,22.689745807451672,35.7890625,0.4537708484408992,0.9591642924976258,0.465650826446281,0.698144157232353,0.3382050590003495,proxy
|
||||||
|
direct,http-ka-1k,1,1.22154909696,118640.29,0.561,0.87,0,0,0,0.73,0.0,0.47808147986304245,0.6092563567137547,0.0,0.8065168539325843,0.23624595469255663,0.9525766677205185,2.487133879528027,0.9520692576470958,origin
|
||||||
|
3proxy-devel-s0,http-ka-1m,1,22.3338299392,2661.9,5.69,11.35,0,0,0,10.02,9.954504,0.35891739221719593,375.7875787578758,15.08203125,0.39166304819800263,0.9524714828897338,0.24179431072210067,0.998997196287122,0.07602551328455898,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,1,35.64822855680001,4248.49,3.51,8.2,0,0,0,10.02,9.953738999999999,0.2248639083770384,235.5762448864438,18.3359375,0.50986632718014,0.9524714828897338,0.36187157789945246,1.504984092218568,0.16343393541133866,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,1,34.61743640576,4124.55,3.6,8.53,0,0,0,10.01,9.953606,0.23132851046900593,242.36114473875358,17.09765625,0.5036108751062022,0.9515209125475285,0.3679152291769345,1.4776402768314068,0.16250695738860327,client
|
||||||
|
haproxy,http-ka-1m,1,5.681688084479999,676.68,23.41,27.18,0,0,0,10.1,10.098886,1.4221125622983752,1477.9045946736903,39.70703125,0.5954545454545455,0.9600760456273765,0.15611685940353012,1.187068085094224,0.02850278466429372,client
|
||||||
|
haproxy-splice-response,http-ka-1m,1,26.886495272959998,3199.4,4.92,7.13,0,0,0,10.0,9.951245,0.29754714843945007,312.4804699706268,52.19140625,0.5846021874329831,0.9505703422053232,0.224278104850014,1.6289000774791895,0.08743357172455572,client
|
||||||
|
haproxy-splice,http-ka-1m,1,27.4877906944,3275.98,4.8,5.96,0,0,0,10.02,9.98811,0.29162038117647165,305.590289426332,52.15234375,0.570334718879895,0.9506641366223909,0.2342367256637168,1.6114456010998695,0.11496989857514432,client
|
||||||
|
direct,http-ka-1m,1,69.5784701952,8287.53,1.39,2.56,0,0,0,0.07,0.0,0.000804846669420784,0.8431703204047217,0.0,0.9134006101854025,0.013618677042801557,0.5416886543535621,3.5955132207399956,0.730596787726919,client
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,1,3.8972633907199996,9470.11,55.72,130.56,0,417,0,10.42,10.383066,2.1389367780092394,109.24264027509855,152.80078125,0.37984783818890333,0.9895536562203229,0.5094380094380094,0.4253189069645489,0.1444623566140756,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,1,3.6859543552,8956.56,68.69,166.41,0,567,0,10.42,10.374920000000001,2.261558119470443,115.56462524676708,193.76953125,0.368085505344084,0.9895536562203229,0.5040563620836892,0.40618607058375267,0.13782981670640643,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,1,3.592421376,8729.35,69.37,169.74,0,574,0,10.41,10.338671,2.31821357473183,118.43407624833613,189.25390625,0.36604127579737333,0.9886039886039886,0.4954760878931495,0.39873414692721915,0.13116511059526584,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,1,3.69425907712,8831.9,218.33,579.34,0,0,0,10.07,10.041761,2.1806808433912983,113.36898395721926,157.3203125,0.5273510678156613,0.959047619047619,0.28055713473564525,0.8506908842525117,0.10264496424164767,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,1,4.61859979264,11156.93,174.55,489.48,0,0,0,10.12,10.065012000000001,1.752912216577291,90.13502440414692,140.1328125,0.5058373205741626,0.9619771863117871,0.4675976434649793,0.8550609037236319,0.1330003868591117,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,1,4.6342864896,11196.2,172.36,424.99,0,0,0,10.13,10.064854,1.7487050095384764,89.79143214231898,133.2421875,0.503550182306659,0.961100569259962,0.45760071221900733,0.8522968991498954,0.13491947344561445,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,1,30.32246910976,73677.33,26.2,1360.0,0,0,0,0.76,0.0,0.02005113758378934,1.0266926582018558,0.0,0.9002569493109087,0.20320855614973263,0.9487017099430018,3.3466132384778007,0.9471075559921832,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,1,0.053016002560000004,5172.21,12.15,17.26,0,0,0,10.02,9.890685000000001,151.19963054415547,193.36163643380934,13.94921875,0.33980023050326547,0.9515669515669516,0.40102389078498296,0.2939950116300253,0.09026272539014284,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,1,0.051589939200000004,5026.84,12.5,17.91,0,0,0,10.0,9.882197,155.0689945376016,198.58606720152514,12.390625,0.33449141092453194,0.9514747859181731,0.39800146234462586,0.28740436975961386,0.08840741185720098,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,1,0.05091885056,4963.17,12.68,17.99,0,0,0,10.01,9.878451,157.26985020142604,201.35983263598325,13.16796875,0.3334622076164701,0.9515209125475285,0.39511002444987775,0.2845230976336132,0.08745556560157255,proxy
|
||||||
|
haproxy,http-close-1k,1,0.1690304512,16478.61,3.73,4.46,0,0,0,10.1,10.066578999999999,47.80203769579715,60.68653900462059,29.6640625,0.5423942394239424,0.9591642924976258,0.467695059244355,0.804026326118069,0.18149220686102707,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,1,0.169869312,16564.81,3.7,4.51,0,0,0,10.1,10.063043,47.565978250385804,60.37131346459611,35.84375,0.5424741894584314,0.9600760456273765,0.43529136438099697,0.8126625021842682,0.17205024153625922,proxy
|
||||||
|
haproxy-splice,http-close-1k,1,0.16961765376,16536.29,3.73,4.41,0,0,0,10.1,10.065089,47.63655091841308,60.475782742247425,35.67578125,0.5438186071621378,0.9600760456273765,0.46944692239072255,0.8048873059929241,0.1615351619690719,proxy
|
||||||
|
direct,http-close-1k,1,0.50264539136,49007.5,0.844,2.31,0,0,0,4.68,0.0,7.44859112279915,9.455175799598761,0.0,0.7887913007109996,0.5282167042889391,0.9366021236727046,2.3176738655799256,0.8985833468836837,origin
|
||||||
|
3proxy-devel-s1,stream1,2,22.412542061207652,nan,nan,nan,0,0,0,10.01,10.001405,0.35718239423146625,nan,8.65234375,0.06389376096216487,0.9515209125475285,0.2161624203821656,0.19317767772057867,0.5657524486097208,proxy
|
||||||
|
3proxy-devel-s3,stream1,2,42.19485753953147,nan,nan,nan,0,0,0,10.01,9.996824,0.18972605516077723,nan,11.03125,0.18370165745856354,0.9506172839506173,0.2898606811145511,0.3785076463813056,0.7261663017363147,proxy
|
||||||
|
haproxy,stream1,2,12.734461707248238,nan,nan,nan,0,0,0,10.0,10.000467,0.6280525968907694,nan,30.75,0.03365384615384615,0.9505703422053232,0.1951219512195122,0.11416389333626328,0.5151260390750806,proxy
|
||||||
|
haproxy-splice-response,stream1,2,13.642627039770355,nan,nan,nan,0,0,0,10.0,10.002360999999999,0.5862271431068662,nan,38.11328125,0.15149530670159353,0.949667616334283,0.1998345055854365,0.11603779651563073,0.5205390266361747,proxy
|
||||||
|
haproxy-splice,stream1,2,47.214454290552546,nan,nan,nan,0,0,0,9.93,9.132807,0.1682128857463181,nan,44.9921875,0.19656962310990747,0.9076782449725777,0.3174754202346971,0.41200892977257375,0.9494882304044413,origin
|
||||||
|
direct,stream1,2,62.171198367771204,nan,nan,nan,0,0,0,0.04,0.0,0.0005146285868344458,nan,0.0,0.13370901639344263,0.005194805194805195,0.3174754202346971,0.5042117850831974,0.9493906240908521,origin
|
||||||
|
3proxy-devel-s0,stream1,2,21.807164296726466,nan,nan,nan,0,0,0,10.0,10.003136999999999,0.36673434075112,nan,6.76171875,0.09279845335911067,0.9505703422053232,0.21451355661881977,0.19208659099534162,0.5622548525126803,proxy
|
||||||
|
3proxy-devel-s1,stream16,2,20.907970548003146,nan,nan,nan,0,0,1947,10.05,10.000237,0.3836149164435075,nan,62.74609375,0.14236351071181755,0.9535104364326376,0.26276556093924713,0.20059920218016655,0.5660576530267616,proxy
|
||||||
|
3proxy-devel-s3,stream16,2,38.1507540727546,nan,nan,nan,0,0,1612,10.03,9.985721,0.2100503892278696,nan,96.44140625,0.18545959712896504,0.9525166191832859,0.36460116398493664,0.35565379178998613,0.9401473783851194,origin
|
||||||
|
haproxy,stream16,2,9.095685800647711,nan,nan,nan,0,0,17,10.02,10.008029,0.8808219057855167,nan,64.046875,0.11503416856492027,0.9506641366223909,0.7057187017001546,0.10173412928821919,1.342720263159998,origin
|
||||||
|
haproxy-splice-response,stream16,2,9.065552626026134,nan,nan,nan,0,0,2,10.02,10.007312,0.8838362568863157,nan,68.8984375,0.10354348826507133,0.9506641366223909,0.6891175553476769,0.09888458368877626,1.347579724265575,origin
|
||||||
|
haproxy-splice,stream16,2,23.23972300154158,nan,nan,nan,0,0,2,10.02,10.007752,0.3447435307628219,nan,50.21484375,0.2768115942028985,0.9515669515669516,0.729487970388649,0.26162023035291915,1.2959658586295257,origin
|
||||||
|
direct,stream16,2,138.00702853494744,nan,nan,nan,0,0,6144,0.25,0.0,0.0014487927031357174,nan,0.0,0.5787878787878787,0.05070993914807302,0.95,1.6975733612606676,2.8440309258678904,origin
|
||||||
|
3proxy-devel-s0,stream16,2,21.28271617367179,nan,nan,nan,0,0,1984,10.05,9.998313,0.3769556359371236,nan,56.50390625,0.13805104408352667,0.9535104364326376,0.25755879059350506,0.20539050326847086,0.5659601516248431,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,2,47.6898340099585,nan,nan,nan,0,0,0,9.95,9.318458000000001,0.16689342470130655,nan,8.54296875,0.24307533005436188,0.961352657004831,0.2835866261398176,0.8903022014005461,0.44327934808285063,proxy
|
||||||
|
3proxy-devel-s3,stream1-down,2,48.303841786431875,nan,nan,nan,0,0,0,9.91,8.864684,0.16410861336116145,nan,10.4296875,0.23877405559515325,0.894404332129964,0.1329399514057619,0.9512678830899849,0.3458615682150364,client
|
||||||
|
haproxy,stream1-down,2,13.872830224954548,nan,nan,nan,0,0,0,10.0,10.0009,0.5766040789662626,nan,37.01953125,0.1508106454573264,0.998003992015968,0.25096525096525096,0.5243534567898559,0.11971545237080566,proxy
|
||||||
|
haproxy-splice-response,stream1-down,2,46.90340399314967,nan,nan,nan,0,0,0,9.94,9.306656,0.16952845655307194,nan,41.97265625,0.23435225618631733,0.9161290322580645,0.13216783216783218,0.9158678847658244,0.34482106680818864,client
|
||||||
|
haproxy-splice,stream1-down,2,47.612362334398284,nan,nan,nan,0,0,0,9.95,9.178912,0.16716501603317538,nan,43.84375,0.24912016088486677,0.9539789069990412,0.24398073836276082,0.9362151674865723,0.416153713441182,client
|
||||||
|
direct,stream1-down,2,62.95540590216663,nan,nan,nan,0,0,0,0.06,0.0,0.0007623600594797953,nan,0.0,0.25081108060893437,0.008321775312066574,0.19247787610619468,0.9491397262612927,0.5289101130447306,client
|
||||||
|
3proxy-devel-s0,stream1-down,2,21.56461910706485,nan,nan,nan,0,0,0,10.01,10.0022,0.37130790823473714,nan,6.7578125,0.14902624894157493,0.9506172839506173,0.15279106858054226,0.5546530421025905,0.2005256238523849,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,2,0.15485370368,15324.33,3.98,8.46,0,0,0,10.09,10.090988,52.126618919496536,65.19561916453979,9.41796875,0.4100035855145213,0.9600380589914367,0.4295913343180699,0.4386459370568692,0.1758138911841442,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,2,0.15032385536,14875.44,4.13,8.6,0,0,0,10.01,10.003869,53.271651268005364,67.21504112808461,9.41015625,0.3997825299021385,0.9524262607040913,0.42067604243770046,0.43010330894019155,0.19292518270134998,proxy
|
||||||
|
haproxy,http-ka-1k,2,0.44409290751999997,43954.85,1.39,2.11,0,0,0,10.1,10.091429999999999,18.194391000572583,22.751334669880386,29.71875,0.45319032903108525,0.9600760456273765,0.46285714285714286,0.6984227681049596,0.32696719488165243,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,2,0.44300238848,43847.82,1.39,2.13,0,0,0,10.11,10.089401,18.257237907341768,22.830431542578417,35.8046875,0.4546606334841629,0.9601139601139601,0.4629966242534407,0.6973532821396143,0.32216731716697494,proxy
|
||||||
|
haproxy-splice,http-ka-1k,2,0.44971327488,44508.83,1.38,2.07,0,0,0,10.11,10.092801999999999,17.98479264851182,22.49005632524492,35.8203125,0.4564000722152013,0.9601139601139601,0.46477774889524304,0.6982359312435344,0.288826641190277,proxy
|
||||||
|
direct,http-ka-1k,2,1.23589361664,120032.57,0.449,0.97,0,0,0,0.75,0.0,0.4854786786836947,0.61864752103814,0.0,0.8133333333333334,0.24509803921568626,0.9579247073710851,2.517043664654647,0.958300051238524,origin
|
||||||
|
3proxy-devel-s0,http-ka-1k,2,0.15980298240000002,15814.69,3.86,8.29,0,0,0,10.02,10.018809999999998,50.16176719365158,63.26636275240248,9.23046875,0.40754039497307004,0.9524714828897338,0.4308183828950602,0.4557980920459262,0.2014843960996622,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1m,2,35.734127902720004,4260.4,3.5,8.29,0,0,0,10.01,9.954687999999999,0.2240994945168495,234.65153894840478,17.8671875,0.5144667370644139,0.9515209125475285,0.38866202257987026,1.5140628451764615,0.16259789928495108,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,2,33.75844294656,4027.77,3.69,9.13,0,0,0,10.02,9.95322,0.23745170986379374,248.40716959615241,18.12109375,0.5025531914893617,0.9515669515669516,0.38276699029126215,1.4765319449214074,0.12828120671426269,client
|
||||||
|
haproxy,http-ka-1m,2,5.82739820544,693.3,22.73,28.61,0,0,0,10.1,10.099346,1.3865536067978244,1442.4450157097972,37.84375,0.5999567754484547,0.9600760456273765,0.1553133514986376,1.2138055133144956,0.02660314498816172,client
|
||||||
|
haproxy-splice-response,http-ka-1m,2,25.512105738240002,3039.38,5.2,6.51,0,0,0,10.1,10.06189,0.3167123906941526,329.0330987750847,52.09765625,0.5806451612903226,0.9591642924976258,0.25239791723759936,1.5959098947136607,0.09311173513541872,client
|
||||||
|
haproxy-splice,http-ka-1m,2,25.59800508416,3045.77,5.14,6.81,0,0,0,10.09,9.997931,0.3153370730828919,328.01274340886187,52.1796875,0.5860089304699129,0.9563981042654028,0.22919010123734535,1.60208005609905,0.09217081889877518,client
|
||||||
|
direct,http-ka-1m,2,71.21055776767999,8489.66,1.31,2.42,0,0,0,0.12,0.0,0.0013481147039066034,1.410802040960286,0.0,0.9280507876792852,0.021897810218978103,0.5729327170005136,3.673680265449341,0.5802900762307843,client
|
||||||
|
3proxy-devel-s0,http-ka-1m,2,22.50562863104,2686.42,5.63,11.4,0,0,0,10.02,9.957056,0.35617756479569057,372.2277944945949,15.1328125,0.39198266522210184,0.9533777354900095,0.2344523940561365,0.9942785213109134,0.09598994439343105,client
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,2,3.73611823104,9078.58,56.34,347.14,0,301,0,10.42,10.374294,2.23119277402513,114.18302157642701,142.58203125,0.3677988365547007,0.9886148007590133,0.4919319668556476,0.40805399723335684,0.13395904605159958,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,2,3.59569293312,8737.32,69.76,173.1,0,515,0,10.4,10.35747,2.3138794537665643,118.3001183001183,183.01953125,0.3619747503297532,0.9895337773549001,0.49957337883959047,0.39570590928196736,0.13398143416173144,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,2,3.68410886144,8798.77,218.58,594.26,0,0,0,10.09,10.039916000000002,2.1910318895530447,113.88390388153366,152.41796875,0.5229100430147746,0.9582146248812915,0.28198581560283686,0.8332164056407744,0.10450901729841595,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,2,4.65181868032,11246.13,172.22,613.08,0,0,0,10.12,10.065694,1.7403945760506456,89.42852345731379,129.80859375,0.5071306332002282,0.9619771863117871,0.4747191011235955,0.8437061463760049,0.13206016213360533,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,2,4.67312574464,11292.9,170.91,609.65,0,0,0,10.12,10.064278,1.732459266538244,89.0351301654892,131.859375,0.5064935064935064,0.9610636277302944,0.468804537521815,0.8532276120405744,0.13301138316058767,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,2,30.75196583936,74650.09,24.37,594.85,0,559,0,0.54,0.0,0.014047882410401075,0.7186432016353125,0.0,0.9103097549699491,0.15254237288135594,0.9547038327526133,3.3763903217528424,0.952624424484007,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,2,3.91018184704,9501.44,64.13,154.58,0,493,0,10.4,10.375247,2.127778278725892,108.74907197306369,173.7734375,0.3782325581395349,0.9904761904761905,0.5147589721809301,0.4262943383234204,0.15023060680399306,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,2,0.051589939200000004,5032.57,12.48,17.86,0,0,0,10.01,9.889688,155.2240635321392,198.39460905757605,12.47265625,0.33526458091927386,0.9524262607040913,0.39579770339604203,0.2892649566119041,0.08744208736695183,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,2,0.05066719232,4941.42,12.7,18.28,0,0,0,10.01,9.883535,158.05099184149938,202.07933784192994,12.328125,0.3330110230129569,0.9506172839506173,0.3953147877013177,0.2853918409977784,0.08741012760702671,proxy
|
||||||
|
haproxy,http-close-1k,2,0.16953376768,16531.46,3.72,4.48,0,0,0,10.11,10.064937,47.70730993996629,60.54871146832122,29.83984375,0.5425628049882523,0.9601139601139601,0.45029775538250116,0.8067033956314082,0.1757744584961748,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,2,0.17280532480000002,16845.92,3.64,4.58,0,0,0,10.02,9.959469,46.387459467915654,59.428137621806925,35.9140625,0.5421990282526543,0.9506641366223909,0.42577295256077413,0.8115412761749208,0.1672503124172539,proxy
|
||||||
|
haproxy-splice,http-close-1k,2,0.17221812224000002,16794.84,3.67,4.28,0,0,0,10.1,10.064293,46.917245960560756,59.54591815678853,35.640625,0.5421119362434341,0.9600760456273765,0.4580483356133151,0.8114098994221223,0.189993297265006,proxy
|
||||||
|
direct,http-close-1k,2,0.5020581888,48951.17,0.841,2.29,0,0,0,4.68,0.0,7.4573029252819545,9.466498103666245,0.0,0.7882451021258858,0.5264341957255343,0.9354939233406045,2.3150945648023504,0.8905012023160093,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,2,0.052512686079999996,5122.12,12.28,17.55,0,0,0,10.01,9.892285,152.49648414099943,195.05066250974278,12.61328125,0.33603864734299516,0.9524262607040913,0.4009261515963929,0.29309418708894697,0.09028870487075917,proxy
|
||||||
|
436
bench/data/m4-tunnels.csv
Normal file
436
bench/data/m4-tunnels.csv
Normal file
@ -0,0 +1,436 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
3proxy-devel-s0,connect-stream1-down,0,23.080054864057715,nan,nan,nan,0,0,0,10.0,9.993826,0.3465795620508417,nan,10.76953125,0.15585509688289806,0.949667616334283,0.25096738529574353,0.5620097930032771,0.20326445528720555,proxy
|
||||||
|
3proxy-devel-s1,connect-stream1-down,0,47.52190872482201,nan,nan,nan,0,0,0,9.91,8.692171,0.166810000142718,nan,11.4765625,0.2383555133079848,0.8856121537086684,0.12879581151832462,0.9502465510014815,0.34392937127625883,client
|
||||||
|
3proxy-devel-s3,connect-stream1-down,0,47.0864747727305,nan,nan,nan,0,0,0,9.93,9.011108,0.16869194012788297,nan,9.109375,0.24899497487437186,0.9457142857142857,0.21471571906354514,0.9370967747851792,0.4042910286488728,client
|
||||||
|
3proxy-devel-s,connect-stream1-down,0,46.698371558992285,nan,nan,nan,0,0,0,9.93,8.928125999999999,0.17009175380509578,nan,11.546875,0.23429128105211885,0.8970189701897019,0.16661079450217903,0.9151353114904183,0.36777300387562917,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,0,46.90517120578176,nan,nan,nan,0,0,0,9.92,9.061402,0.16917373852185652,nan,7.1484375,0.2388095238095238,0.9042844120328167,0.1368384401114206,0.9474696664229609,0.35723924662410067,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,0,8.30322413957405,nan,nan,nan,0,0,0,10.0,9.892085999999999,0.9634290353895694,nan,1.7265625,0.14662120272783633,0.9960159362549801,0.03377650017966224,0.5095803131499897,0.08286398371013423,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,0,22.82448736287745,nan,nan,nan,0,0,0,10.01,10.001744,0.3508130148042559,nan,9.72265625,0.1495774647887324,0.9515209125475285,0.13462157809983896,0.5573829705643105,0.19856736225949168,proxy
|
||||||
|
tinyproxy,connect-stream1-down,0,1.282028094860574,nan,nan,nan,0,0,0,10.0,10.00374,6.2392824102469735,nan,2.11328125,0.13501483679525222,0.9505703422053232,0.00416,0.5012862270250146,0.012356369373417806,proxy
|
||||||
|
squid,connect-stream1-down,0,15.088525715332452,nan,nan,nan,0,0,0,10.01,9.982022,0.5306731840139286,nan,22.515625,0.19005235602094242,0.9506172839506173,0.14849681141815974,0.46408872613446095,0.1292008703638535,proxy
|
||||||
|
3proxy-devel-s0,connect-stream16,0,21.140391707611386,nan,nan,nan,0,0,1886,10.05,10.003649,0.37933150469771143,nan,67.0234375,0.14397244546498278,0.9535104364326376,0.2603305785123967,0.19595857508939768,0.5712395030542039,proxy
|
||||||
|
3proxy-devel-s1,connect-stream16,0,21.037770264258,nan,nan,nan,0,0,1802,10.05,10.003534,0.38131985457985423,nan,77.26953125,0.15002269632319565,0.9535104364326376,0.2644968200523756,0.19492719126437993,0.567833763616798,proxy
|
||||||
|
3proxy-devel-s3,connect-stream16,0,37.55670691372577,nan,nan,nan,0,0,1661,10.04,9.991446,0.21351909455087997,nan,77.6484375,0.17970204841713222,0.9516587677725118,0.35578231292517004,0.34687126919952865,0.9396339393973406,origin
|
||||||
|
3proxy-devel-s,connect-stream16,0,38.15810299223708,nan,nan,nan,0,0,1736,10.05,9.991061,0.21030990210476766,nan,87.875,0.18152199208750291,0.95260663507109,0.34818652849740933,0.3443037341812295,0.9604403069881928,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,0,24.0181821150017,nan,nan,nan,0,0,1817,10.05,10.002158,0.33403217251110895,nan,38.5625,0.15347109356860925,0.95260663507109,0.31057192374350084,0.2291032892524626,0.7755642575160783,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,0,9.04460446713506,nan,nan,nan,0,0,835,10.07,10.025636,0.8876001124078642,nan,55.109375,0.0861034164358264,0.9545023696682464,0.2873857404021938,0.08271772540588769,0.6722821725467367,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,0,20.841506041598358,nan,nan,nan,0,0,1919,10.05,10.004857,0.38467342463633697,nan,67.09765625,0.1320139697322468,0.9535104364326376,0.2646509891750653,0.1948264619858759,0.5639913661949121,proxy
|
||||||
|
tinyproxy,connect-stream16,0,1.280928726816388,nan,nan,nan,0,0,1104,10.06,10.028352,6.253703983082784,nan,15.953125,0.010518766435572556,0.9544592030360531,0.28293983244478293,0.0171234522035559,0.5871093008226139,proxy
|
||||||
|
squid,connect-stream16,0,17.475281358361165,nan,nan,nan,0,0,0,10.07,9.985028,0.46082884726625056,nan,72.71484375,0.25517104216388226,0.9526963103122044,0.600701754385965,0.17111078232565427,0.7384385986974055,proxy
|
||||||
|
3proxy-devel-s0,connect-ka-1k,0,0.20191379456,19608.72,3.05,6.77,0,0,0,10.1,10.090673,40.01707767221905,51.00005554461495,72.71484375,0.4411502053938203,0.9591642924976258,0.4833965844402277,0.5708435241765696,0.2479900116540519,proxy
|
||||||
|
3proxy-devel-s1,connect-ka-1k,0,0.18295554047999998,17773.27,3.42,6.67,0,0,0,10.09,10.082692,44.12000849398928,56.22046893108674,9.03515625,0.4280169371912491,0.9582146248812915,0.4651928504233302,0.5041032653537995,0.190015473994106,proxy
|
||||||
|
3proxy-devel-s3,connect-ka-1k,0,0.16601055232,16125.76,3.83,6.89,0,0,0,10.06,10.05026,48.47884599821565,61.910359215473896,9.3359375,0.4201121233356692,0.9553656220322887,0.44771863117870725,0.45954298419902556,0.21666425458184907,proxy
|
||||||
|
3proxy-devel-s,connect-ka-1k,0,0.20199768063999998,19619.31,3.05,6.72,0,0,0,10.09,10.086606,39.96085486934827,51.004675849867304,9.51171875,0.4439907686845376,0.9582146248812915,0.48266856600189934,0.5724598938495268,0.23179451586513952,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,0,0.16626221056,16148.34,3.82,6.88,0,0,0,10.05,10.043785,48.3573505544037,61.81229972507365,5.203125,0.4181245626312106,0.9553231939163498,0.45300751879699247,0.4566444283968372,0.18056816276974558,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,0,0.20283654144,19701.82,3.04,6.7,0,0,0,10.05,10.050305,39.63782828735655,50.71966408946848,5.26171875,0.4374439059414827,0.956232159847764,0.4810578984989278,0.5727755558998046,0.2614360075247133,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,0,0.20182990848,19602.05,3.06,6.76,0,0,0,10.05,10.044251000000001,39.83552319153289,51.01004974114303,9.34375,0.4423008217220436,0.9544159544159544,0.4778846153846154,0.5744644890410207,0.21173867159483878,proxy
|
||||||
|
tinyproxy,connect-ka-1k,0,0.17557356544,17048.54,3.6,6.72,0,0,0,10.05,10.05066,45.79277056800198,58.557902403495994,5.5234375,0.42425838160435314,0.9553231939163498,0.46047058823529413,0.48600738132623966,0.20432995108703988,proxy
|
||||||
|
squid,connect-ka-1k,0,0.38981861376,37862.11,1.67,2.05,0,0,0,10.04,10.032359,20.604454780974283,26.418132732697966,22.0703125,0.5420130903944808,0.9534662867996201,0.5826494724501758,0.9715345022478038,0.33897879619178894,client
|
||||||
|
3proxy-devel-s0,connect-ka-50k-2000,0,4.520956395520001,10980.52,142.94,327.85,0,0,0,10.19,10.168475999999998,1.8031582892677638,91.96999918770364,382.31640625,0.4543729515266517,0.9686311787072244,0.4760835391870649,0.5602300257453022,0.13112391806402512,proxy
|
||||||
|
3proxy-devel-s1,connect-ka-50k-2000,0,4.74107346944,11515.18,144.12,312.7,0,0,0,10.16,10.137429999999998,1.7143796763309922,87.37229541467441,284.109375,0.4520524017467249,0.966698382492864,0.47667572463768115,0.5812366330439428,0.13683133109241116,proxy
|
||||||
|
3proxy-devel-s3,connect-ka-50k-2000,0,4.35947569152,10588.41,154.87,323.06,0,0,0,10.16,10.131462,1.8644443908267427,95.03676126690738,294.21484375,0.44606060606060605,0.9648622981956315,0.46271729185727356,0.540293873061896,0.12921363946121575,proxy
|
||||||
|
3proxy-devel-s,connect-ka-50k-2000,0,4.7341109248,11498.35,138.44,313.18,0,0,0,10.18,10.164821,1.720280772750177,87.7767814030489,389.19921875,0.4553494017686839,0.967680608365019,0.4847404767208732,0.5797317113967663,0.1414386266719179,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,0,4.38304768,10645.71,157.13,322.86,0,0,0,10.13,10.117997999999998,1.8489417847263758,94.26324849951146,181.06640625,0.4460444136016655,0.9638439581351094,0.4631194336606531,0.5460124464313578,0.12541635766469492,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,0,3.4139117977600004,8291.54,207.5,374.65,0,0,0,10.16,10.138814,2.3808465131797183,121.38735229811587,172.45703125,0.43392724573125463,0.9648622981956315,0.4271310724106325,0.5230508421081845,0.10069702684407131,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,0,4.616418754560001,11212.49,149.42,320.13,1,0,0,10.22,10.200577000000001,1.7710698345820384,90.26912919437893,382.31640625,0.4505666957279861,0.9714828897338403,0.47468354430379744,0.5669994965105719,0.1321407716730462,proxy
|
||||||
|
tinyproxy,connect-ka-50k-2000,0,0.93012885504,2257.93,742.59,1130.0,0,3,0,10.13,10.058447000000001,8.71277130699433,444.80547993325723,129.80859375,0.36345861394742557,0.959280303030303,0.19222032935831915,0.5543333677154575,0.037039860874303436,proxy
|
||||||
|
squid,connect-ka-50k-2000,0,6.691340943359999,16252.17,118.26,128.41,0,0,0,10.15,10.140476,1.2135086328335576,61.86496979892361,234.64453125,0.21933853927423058,0.9639126305792972,0.2667060910703726,0.45747591355999623,0.12255146121944799,proxy
|
||||||
|
3proxy-devel-s0,connect-close-1k,0,0.04261412864,4158.33,4.96,13.56,11,0,0,10.1,9.871587,189.6084762933686,240.55637593483542,234.64453125,0.5390084550345888,0.9582542694497154,0.44135321611395506,1.450757817088504,0.07695794743302843,client
|
||||||
|
3proxy-devel-s1,connect-close-1k,0,0.04060086272,3957.98,6.26,14.41,3,0,0,10.07,9.889975,198.419429053945,252.1723887511582,13.79296875,0.5163950143815915,0.956315289648623,0.4314119749776586,1.3353447583774998,0.07219206375153656,client
|
||||||
|
3proxy-devel-s3,connect-close-1k,0,0.03909091328,3811.15,6.6,14.88,2,0,0,10.07,9.906198999999999,206.08369884572826,261.612802660293,14.06640625,0.5056137012369172,0.956315289648623,0.4224176815516464,1.268549064304755,0.07026125801311708,client
|
||||||
|
3proxy-devel-s,connect-close-1k,0,0.042446356479999996,4140.71,5.81,13.91,3,0,0,10.09,9.883429,190.16944372606844,241.32405347874962,12.2734375,0.5358714367706141,0.9591254752851711,0.4405532009814856,1.425975621118421,0.07600451445691268,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,0,0.0402653184,3922.77,5.83,14.65,6,0,0,10.08,9.907623,200.2716064453125,254.55188262329858,10.00390625,0.5344574780058651,0.9563567362428842,0.41312384473197783,1.3094444921819755,0.07313842791201705,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,0,0.0436207616,4249.2,6.0,14.11,4,0,0,10.08,9.903741,184.86609825721152,234.95408139480676,11.08203125,0.5579669820070488,0.9572649572649573,0.429061000685401,1.454397783522816,0.07791079341068725,client
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,0,0.0385875968,3763.5,6.95,15.98,1,0,0,10.09,9.895771,209.18638809867525,265.4704272784677,23.9140625,0.45170876671619614,0.9591254752851711,0.33550403750976815,1.261259611591752,0.06935353662519003,client
|
||||||
|
tinyproxy,connect-close-1k,0,0.04194304,4089.55,6.49,15.08,2,0,0,10.05,9.471523000000001,191.68853759765628,243.41802504420278,5.56640625,0.6807770961145194,0.9357541899441341,0.4397098821396192,2.311446017610849,0.08075853563938959,client
|
||||||
|
squid,connect-close-1k,0,0.054525952,5317.69,5.54,10.45,0,0,0,10.08,9.98354,147.89287860576923,188.07724601175482,22.890625,0.6458978328173375,0.9563567362428842,0.46886940885592265,1.9039484505692086,0.09216903150354003,client
|
||||||
|
3proxy-devel-s0,socks-stream1-down,0,22.458725529430914,nan,nan,nan,0,0,0,10.0,10.002077,0.3561692442940707,nan,4.19140625,0.14841986455981943,0.9505703422053232,0.13111545988258316,0.5250455351273801,0.20238522980023754,proxy
|
||||||
|
3proxy-devel-s1,socks-stream1-down,0,47.11389256237269,nan,nan,nan,0,0,0,9.92,9.045283999999999,0.16842380286360278,nan,8.58984375,0.2382654276864427,0.9034608378870674,0.1615514333895447,0.9474795728456069,0.36577774093136556,client
|
||||||
|
3proxy-devel-s3,socks-stream1-down,0,47.69539077592048,nan,nan,nan,0,0,0,9.91,8.981278,0.16620276495282035,nan,8.55078125,0.23798191337458352,0.9000908265213442,0.14634146341463414,0.9470517010741777,0.359951460345851,client
|
||||||
|
3proxy-devel-s,socks-stream1-down,0,43.58153616249242,nan,nan,nan,0,0,0,10.01,9.917522,0.183725399729146,nan,11.06640625,0.2113599126160568,0.946124763705104,0.13963328631875882,0.7573877268499962,0.3591937668426567,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,0,47.45779986213497,nan,nan,nan,0,0,0,9.91,8.839911,0.16703553758751397,nan,10.75390625,0.23703170028818443,0.8927927927927928,0.27742676622630674,0.9326716318336706,0.4329635394537427,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,0,8.63678700832577,nan,nan,nan,0,0,0,10.01,10.002376,0.9270820648702004,nan,1.67578125,0.14809468822170901,0.9506172839506173,0.0912849872773537,0.5507688647591521,0.07601252412201047,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,0,22.78130681244954,nan,nan,nan,0,0,0,10.0,10.002343999999999,0.35112384799917157,nan,10.328125,0.1491401184099239,0.9505703422053232,0.09565217391304348,0.5564067458506937,0.19474225196521358,proxy
|
||||||
|
dante,socks-stream1-down,0,11.214427830668013,nan,nan,nan,0,0,0,10.0,10.005784,0.7132875095829321,nan,17.0859375,0.10226628895184137,0.9514747859181731,0.22901773894625363,0.4033486880362393,0.09217501620917352,proxy
|
||||||
|
3proxy-devel-s0,socks-stream16,0,21.0754014523641,nan,nan,nan,0,0,1752,10.05,10.00643,0.3804929387198163,nan,79.35546875,0.1460136674259681,0.95260663507109,0.2621973929236499,0.19579012625014885,0.5668525625012238,proxy
|
||||||
|
3proxy-devel-s1,socks-stream16,0,21.01476653464138,nan,nan,nan,0,0,1802,10.05,10.008632,0.3815437574408095,nan,77.5546875,0.1381533502187428,0.9544159544159544,0.26476049015967323,0.19496432296070515,0.571829651236525,proxy
|
||||||
|
3proxy-devel-s3,socks-stream16,0,37.4683760308564,nan,nan,nan,0,0,1682,10.05,9.991353,0.21423937411723656,nan,75.6875,0.1664693345962586,0.9517045454545454,0.3548387096774194,0.3421124223594041,0.9272402749837448,origin
|
||||||
|
3proxy-devel-s,socks-stream16,0,38.235751811449184,nan,nan,nan,0,0,1670,10.05,9.993716000000001,0.2098919409022567,nan,101.19921875,0.17463666197843414,0.95260663507109,0.35714285714285715,0.34719705209721474,0.9907319309817073,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,0,24.11611411381923,nan,nan,nan,0,0,1817,10.05,10.003587999999999,0.3326972960829906,nan,37.72265625,0.15507649513212796,0.9535104364326376,0.31476997578692495,0.22726204547813353,0.7711997600110428,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,0,8.8041939768957,nan,nan,nan,0,0,1029,10.06,10.018728,0.9114863604818598,nan,27.86328125,0.09019426456984274,0.9544592030360531,0.2841911764705882,0.08556508564671861,0.6408936360962295,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,0,20.932214880885027,nan,nan,nan,0,0,1991,10.04,9.999518,0.38285969027870104,nan,59.30859375,0.13742757821552723,0.9534662867996201,0.2542565266742338,0.19595022019907837,0.5682841451321818,proxy
|
||||||
|
dante,socks-stream16,0,14.358286426536305,nan,nan,nan,0,0,0,10.03,10.01957,0.5586790426326558,nan,58.390625,0.17329854316155685,0.9516129032258065,0.5504638740511667,0.14446967314850123,0.741213788953135,proxy
|
||||||
|
3proxy-devel-s0,socks-ka-1k,0,0.20166213632,19589.45,3.06,6.75,0,0,0,10.08,10.090959999999999,39.987675163789525,50.98582715399945,5.546875,0.44296847325540206,0.9590865842055185,0.4843123378155225,0.5715015523615591,0.2336799319478303,proxy
|
||||||
|
3proxy-devel-s1,socks-ka-1k,0,0.18303942656,17773.78,3.42,6.67,0,0,0,10.04,10.043453999999999,43.88125635526467,56.132033276679486,5.15625,0.4291234849815563,0.9543726235741445,0.46652621722846443,0.5004151415074299,0.20241433355803,proxy
|
||||||
|
3proxy-devel-s3,socks-ka-1k,0,0.165675008,16087.84,3.84,6.9,0,0,0,10.05,10.058488,48.52874369560919,61.87890206509291,5.26953125,0.42126326779189144,0.956232159847764,0.4482185273159145,0.4546590166191782,0.20812652462079692,proxy
|
||||||
|
3proxy-devel-s,socks-ka-1k,0,0.20224933888,19645.01,3.04,6.7,0,0,0,10.09,10.08524,39.911131698627386,50.8801920235592,5.5234375,0.44205856255545695,0.9582146248812915,0.48207927842392595,0.5708666124741102,0.25750953509419644,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,0,0.16575889408000002,16102.41,3.83,6.9,0,0,0,10.07,10.063926,48.600710355318505,61.99288343860427,4.70703125,0.4232242339832869,0.956315289648623,0.450734249171009,0.4565899647705612,0.1871870062507589,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,0,0.2021654528,19636.61,3.04,6.7,0,0,0,10.08,10.083368,39.88812078578838,50.873376770852786,4.73828125,0.4426054458088628,0.9590865842055185,0.4841081593927894,0.5727613548009929,0.2271064411192164,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,0,0.20141047808,19558.87,3.06,6.81,0,0,0,10.09,10.094280000000001,40.077358819404665,51.08524502184666,5.4296875,0.4384546271338724,0.9591254752851711,0.48235574630424416,0.5669253651947238,0.20427146058538126,proxy
|
||||||
|
dante,socks-ka-1k,0,0.27422359552,26631.68,1.24,4.38,0,0,0,10.06,10.051287,29.34831331614217,37.545018567243275,42.5234375,0.4685609532538955,0.9553656220322887,0.5179757270437371,0.7651439777183722,0.28100702367050656,proxy
|
||||||
|
3proxy-devel-s0,socks-ka-50k-2000,0,4.49738440704,10923.5,152.63,346.69,1,0,0,10.14,10.124691,1.8037150632047032,92.08805579773322,259.984375,0.4434404865334492,0.9638783269961977,0.47382610649292295,0.5212726564646712,0.1330586186373071,proxy
|
||||||
|
3proxy-devel-s1,socks-ka-50k-2000,0,4.668595896319999,11339.25,147.72,318.88,0,0,0,10.14,10.121694,1.7375673928844966,88.5844828640569,161.4296875,0.4505036470996874,0.9638783269961977,0.473015873015873,0.5413196131954697,0.13590062401150746,proxy
|
||||||
|
3proxy-devel-s3,socks-ka-50k-2000,0,4.2379247615999995,10293.14,165.45,341.25,0,0,0,10.18,10.153369,1.9216952773190075,97.98259798259798,170.55078125,0.43115878318973094,0.9658444022770398,0.4578645235361653,0.5027995222515038,0.1253261236029197,proxy
|
||||||
|
3proxy-devel-s,socks-ka-50k-2000,0,4.67681673216,11359.07,136.16,446.88,2,2,0,10.15,10.134784,1.7362236891095277,88.49017453924081,266.19921875,0.458546571136131,0.9657469077069457,0.4799192281803904,0.5375430383092755,0.13779993324960454,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,0,4.36115341312,10592.53,162.06,322.11,1,0,0,10.14,10.122831999999999,1.8600583908825667,94.8337136657813,167.625,0.4353824659448131,0.9638783269961977,0.4579031888047717,0.5056850632103573,0.12629841833338618,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,0,3.34445412352,8123.14,213.72,386.12,0,1,0,10.15,10.133761000000002,2.4278999502178227,123.75634022629731,157.92578125,0.4262874140174754,0.964828897338403,0.42296211251435134,0.48107981848008746,0.10255982313294572,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,0,4.6132310835200006,11204.83,150.04,318.78,2,1,0,10.19,10.162764000000001,1.7670911888896401,90.07416312351387,259.51953125,0.4480193738107594,0.9677113010446344,0.47403910991233983,0.5294122855887762,0.13101806482335995,proxy
|
||||||
|
dante,socks-ka-50k-2000,0,6.06613798912,14733.71,185.01,201.13,0,0,0,10.17,10.092333,1.3412157808794372,68.3844591777727,782.60546875,0.49190662804566365,0.9676498572787822,0.5070015559013114,0.6838907243291403,0.1652976316544594,proxy
|
||||||
|
3proxy-devel-s0,socks-close-1k,0,0.0402653184,3923.54,5.74,14.54,4,0,0,10.1,9.906920000000001,200.6689707438151,255.17293650994165,7.31640625,0.4615113616346662,0.9591642924976258,0.41970554926387316,0.654451063310191,0.07128095704386768,proxy
|
||||||
|
3proxy-devel-s1,socks-close-1k,0,0.03841982464,3750.05,5.74,14.79,10,0,0,10.09,9.926881,210.09986577596206,266.6631428722448,6.44140625,0.45286669011607456,0.9573055028462998,0.41566674213266924,0.6155460844340381,0.06746817784938844,proxy
|
||||||
|
3proxy-devel-s3,socks-close-1k,0,0.03674210304,3585.65,5.88,15.25,8,0,0,10.07,9.927456000000001,219.25799922856024,278.0922923973378,6.47265625,0.4437786394078252,0.956315289648623,0.4068337129840547,0.5858464054595075,0.06460539140202964,proxy
|
||||||
|
3proxy-devel-s,socks-close-1k,0,0.04043309056,3944.82,5.92,14.38,8,0,0,10.09,9.9123,199.6384616709349,253.4348077261196,7.1953125,0.4631190727081138,0.9573055028462998,0.4227293267058292,0.6590229623146182,0.07218887736772192,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,0,0.03758096384,3661.07,6.54,15.35,7,0,0,10.07,9.942332,214.36384746006556,272.39038113013606,9.16015625,0.4644874208454561,0.9572243346007605,0.39259779807917544,0.6011637257353692,0.06650187290519163,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,0,0.0402653184,3929.74,6.12,14.46,3,0,0,10.09,9.944913999999999,200.4702885945638,254.31632010081915,9.421875,0.4757716847732368,0.9582146248812915,0.4060972771701187,0.6697299557944527,0.0731580819518716,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,0,0.03682598912,3588.94,7.11,16.31,1,0,0,10.08,9.894203000000001,218.97578836845105,278.1610464153651,9.57421875,0.37577329874276594,0.9572649572649573,0.3310880829015544,0.5965095222847232,0.06555796548136916,proxy
|
||||||
|
dante,socks-close-1k,0,0.038671482880000004,3770.8,6.59,18.19,1,0,0,10.09,10.065451000000001,208.7326215301315,265.0659381074975,58.69140625,0.4413986997012827,0.9582146248812915,0.4134831460674157,0.6197020909992026,0.06836099126032054,proxy
|
||||||
|
3proxy-devel-s0,relay-stream1-down,0,22.44374091442802,nan,nan,nan,0,0,0,10.0,10.002648,0.35640550913274005,nan,10.578125,0.15395401009534493,0.9514747859181731,0.11286089238845144,0.5660396301315943,0.1947984118386584,proxy
|
||||||
|
3proxy-devel-s1,relay-stream1-down,0,46.590411794720275,nan,nan,nan,0,0,0,9.92,9.100538,0.1703169972477828,nan,11.515625,0.24439288476411447,0.9492822966507177,0.1603299856527977,0.8970582640294613,0.37022642937142247,proxy
|
||||||
|
3proxy-devel-s3,relay-stream1-down,0,48.112531642866145,nan,nan,nan,0,0,0,9.91,9.024346,0.16476091229657477,nan,9.92578125,0.24930956565402962,0.9456106870229007,0.2898376428141912,0.9411482261022843,0.4511586189667178,client
|
||||||
|
3proxy-devel-s,relay-stream1-down,0,47.82433159373409,nan,nan,nan,0,0,0,9.91,8.839959,0.16575422907541199,nan,11.46875,0.2402181645719706,0.891989198919892,0.27691421991940124,0.9511707634837222,0.43799057854626594,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,0,47.512940456271345,nan,nan,nan,0,0,0,9.94,8.973005,0.16734561929299316,nan,7.9921875,0.2358036573628489,0.9003623188405797,0.13389121338912133,0.9312526698349304,0.35059770466400153,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,0,9.905959268888571,nan,nan,nan,0,0,0,10.01,10.00277,0.8083131979743281,nan,3.7578125,0.21205244578920826,0.9506172839506173,0.21936542669584244,0.8200365843244545,0.09027466607670559,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,0,21.766468367828715,nan,nan,nan,0,0,0,10.01,10.001873999999999,0.36785965433637835,nan,5.046875,0.14997186268992685,0.9506172839506173,0.07585247042449547,0.5576285237951032,0.19106254335170508,proxy
|
||||||
|
nginx,relay-stream1-down,0,13.542924487240493,nan,nan,nan,0,0,0,10.0,10.001966999999999,0.5906475599016799,nan,33.4375,0.1403609281008307,0.9505703422053232,0.05079580088046055,0.524706660307426,0.11491130394365404,proxy
|
||||||
|
haproxy,relay-stream1-down,0,13.50925684711943,nan,nan,nan,0,0,0,10.01,10.002056999999999,0.5927111522620471,nan,32.05859375,0.13940092165898618,0.9506172839506173,0.05756358768406961,0.5184341413216175,0.11212239732503576,proxy
|
||||||
|
haproxy-splice,relay-stream1-down,0,47.676037241114656,nan,nan,nan,0,0,0,9.92,9.089160000000001,0.1664385291957319,nan,43.91796875,0.23766388557806914,0.9051094890510949,0.1379191151054269,0.9462794578008062,0.34292908603058786,client
|
||||||
|
haproxy-splice-response,relay-stream1-down,0,44.34293986925046,nan,nan,nan,0,0,0,9.95,9.501827,0.17949012277550985,nan,42.11328125,0.22270408163265307,0.9255813953488372,0.1297278190173206,0.8409880621790907,0.34401687400925995,proxy
|
||||||
|
haproxy-splice-auto,relay-stream1-down,0,30.141078004940045,nan,nan,nan,0,0,0,9.98,9.620712000000001,0.26485792897549393,nan,40.796875,0.19167321288295366,0.9309701492537313,0.19768151311775473,0.7210887759018888,0.2537046674575404,proxy
|
||||||
|
3proxy-devel-s0,relay-stream16,0,20.912104145342735,nan,nan,nan,0,0,1929,10.03,9.997961,0.38285916560817673,nan,61.78515625,0.13740458015267176,0.9525166191832859,0.2639044419559537,0.19781666098743528,0.5660877893953077,proxy
|
||||||
|
3proxy-devel-s1,relay-stream16,0,20.9451400980178,nan,nan,nan,0,0,1839,10.04,10.00529,0.38253274085231864,nan,70.0625,0.14121699196326062,0.9534662867996201,0.2724907063197026,0.1959035925548499,0.5641184548492116,proxy
|
||||||
|
3proxy-devel-s3,relay-stream16,0,38.071462612354104,nan,nan,nan,0,0,1754,10.02,9.982460999999999,0.2102923683463998,nan,80.69140625,0.17138142385667138,0.9515669515669516,0.3566289825282631,0.34339933337866196,0.9675292228937937,origin
|
||||||
|
3proxy-devel-s,relay-stream16,0,38.011151937465314,nan,nan,nan,0,0,1701,10.03,9.987851999999998,0.2107625597627976,nan,96.87109375,0.16599573762727918,0.9516129032258065,0.36261872455902305,0.3430560034924045,0.9850805143901201,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,0,24.2423059105644,nan,nan,nan,0,0,1701,10.04,10.003912000000001,0.3305461889388741,nan,61.42578125,0.1344835736232569,0.9534662867996201,0.3168110918544194,0.22349652346933416,0.78557604152217,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,0,8.69606248088621,nan,nan,nan,0,0,1318,10.03,9.98993,0.9215731576857651,nan,29.4921875,0.09487709625545601,0.9525166191832859,0.2866032210834553,0.08463781596362842,0.6441773064249012,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,0,21.145937427156554,nan,nan,nan,0,0,1807,10.04,10.002386,0.37889220291122144,nan,74.23046875,0.123300515705579,0.952561669829222,0.2670391061452514,0.19671656384459818,0.5732452047367002,proxy
|
||||||
|
nginx,relay-stream16,0,13.422467429001186,nan,nan,nan,0,0,2194,10.04,10.031083,0.5967150776965443,nan,72.91015625,0.12615662378695555,0.952561669829222,0.2989090909090909,0.12357541899947791,0.5885654859069279,proxy
|
||||||
|
haproxy,relay-stream16,0,8.873867705275545,nan,nan,nan,0,0,83,10.02,10.010019,0.9026737026429051,nan,48.67578125,0.1649417852522639,0.9506641366223909,0.7034739454094293,0.09797591667423197,1.3309694871035107,origin
|
||||||
|
haproxy-splice,relay-stream16,0,23.700387364164023,nan,nan,nan,0,0,2,10.02,10.005909,0.3381034090645234,nan,60.07421875,0.2834453268173488,0.9506641366223909,0.7356394795303078,0.25393498685370514,1.3355792222687934,origin
|
||||||
|
haproxy-splice-response,relay-stream16,0,8.803551941634899,nan,nan,nan,0,0,4,10.01,10.007551999999999,0.9092885884795926,nan,57.14453125,0.18208765615075165,0.9506172839506173,0.6877138413685847,0.09790961747641885,1.3442424312931467,origin
|
||||||
|
haproxy-splice-auto,relay-stream16,0,15.748072685991584,nan,nan,nan,0,0,10,10.01,10.009641,0.5081626438601642,nan,57.63671875,0.24194541350297558,0.9506172839506173,0.7110498928680747,0.17019048888266464,1.296087797816256,origin
|
||||||
|
3proxy-devel-s0,relay-ka-1k,0,0.20711473152,20118.16,2.98,6.81,0,0,0,10.1,10.101495,39.01219358324473,49.707415263621556,5.296875,0.44568965517241377,0.9609895337773549,0.4876091574227047,0.5100932862883204,0.21387186625865082,proxy
|
||||||
|
3proxy-devel-s1,relay-ka-1k,0,0.18614321152000002,18077.23,3.38,6.82,0,0,0,10.01,10.008742000000002,43.02063950980875,55.331686096324674,4.796875,0.43488690884167236,0.9515209125475285,0.4668866368135753,0.45960774882980715,0.19010174261124255,proxy
|
||||||
|
3proxy-devel-s3,relay-ka-1k,0,0.16777216,16294.29,3.79,7.17,0,0,0,10.08,10.084791000000001,48.065185546875,61.25313709643115,4.80859375,0.4224315068493151,0.9581749049429658,0.45488899385923476,0.4184911631624216,0.19566694942387144,proxy
|
||||||
|
3proxy-devel-s,relay-ka-1k,0,0.20669530112,20072.88,2.98,6.88,0,0,0,10.11,10.101412,39.13006225189606,49.867808381343224,5.29296875,0.4482284141726866,0.9601139601139601,0.4875207986688852,0.5099415878316292,0.2157113678533023,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,0,0.1694498816,16455.62,3.76,7.04,0,0,0,10.11,10.103283999999999,47.730927420134584,60.83032490974729,4.21875,0.4283293798712301,0.9601139601139601,0.45910475744082496,0.4186768292842009,0.19770199957895015,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,0,0.2051014656,19921.06,3.0,6.99,0,0,0,10.11,10.104495,39.43414044526457,50.24726025695187,4.52734375,0.446728331620418,0.9610266159695817,0.4857006673021926,0.5090820636961766,0.2224026939204556,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,0,0.20694695936000002,20102.63,2.97,6.88,0,0,0,10.11,10.101996,39.08247806593914,49.79903061827639,5.265625,0.4480452674897119,0.959203036053131,0.489179548156956,0.5088620260206782,0.21752209161501618,proxy
|
||||||
|
nginx,relay-ka-1k,0,0.44895830016000005,43603.25,1.43,1.95,0,0,0,10.01,10.007972,17.83684586552048,22.92753204929992,29.859375,0.4700688680911178,0.9515209125475285,0.5327577450482478,0.7030228408491069,0.36869253037099115,proxy
|
||||||
|
haproxy,relay-ka-1k,0,0.46925873151999997,45579.88,1.34,2.04,0,0,0,10.1,10.098595,17.218646041657355,21.941305920459506,29.30859375,0.49485579355709225,0.9591642924976258,0.5715617715617716,0.7207456005155718,0.39226672698679554,proxy
|
||||||
|
haproxy-splice,relay-ka-1k,0,0.3363831808,32672.34,1.93,2.37,0,0,0,10.1,10.098930999999999,24.020225924446695,30.60921428268367,35.5390625,0.4622093023255814,0.9591642924976258,0.5113960113960114,0.6065702118600356,0.3323664635821337,proxy
|
||||||
|
haproxy-splice-response,relay-ka-1k,0,0.40735080448,39560.58,1.57,2.35,0,0,0,10.01,10.008091,19.658731275178255,25.282949290132578,35.42578125,0.44872269529803777,0.9515209125475285,0.4563430919363123,0.7258855190185627,0.28787897936407736,proxy
|
||||||
|
haproxy-splice-auto,relay-ka-1k,0,0.4810866688,46726.19,1.31,1.98,0,0,0,10.11,10.101405999999999,16.811939562104946,21.421851559917616,35.41796875,0.496775288526816,0.9610266159695817,0.5633014688738633,0.7489209172094929,0.34316274589078394,proxy
|
||||||
|
3proxy-devel-s0,relay-ka-50k-2000,0,5.0545557504,12276.72,44.09,151.19,0,430,0,10.34,10.305674,1.636543429033379,83.59203207864442,130.671875,0.4814278822961891,0.9819563152896487,0.5215904232578025,0.5114937167392652,0.15288942131986685,proxy
|
||||||
|
3proxy-devel-s1,relay-ka-50k-2000,0,5.20815116288,12649.79,45.19,379.11,0,480,0,10.34,10.303353999999999,1.5882795528203821,81.35902620956638,82.12109375,0.4912420382165605,0.9828897338403042,0.5254599914420197,0.5272293975822697,0.15493151932255692,proxy
|
||||||
|
3proxy-devel-s3,relay-ka-50k-2000,0,4.745267773439999,11525.43,52.64,673.09,0,492,0,10.32,10.279898,1.7398385916618055,88.99774056123769,76.84765625,0.48709880427942104,0.98005698005698,0.5184870378240544,0.4877107070903056,0.1414766651482585,proxy
|
||||||
|
3proxy-devel-s,relay-ka-50k-2000,0,5.13064042496,12461.46,48.78,659.12,0,478,0,10.33,10.300572,1.6107150989955468,82.30092020874,137.15234375,0.4915551306564691,0.9828734538534729,0.5238604750695485,0.5242374910021713,0.15489926687931896,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,0,4.784442572800001,11620.61,51.62,161.23,0,567,0,10.3,10.259299,1.7222486997430309,88.05676669231427,174.90625,0.48141677255400256,0.9781576448243114,0.515798462852263,0.48865421076138804,0.1424377908813865,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,0,3.74853337088,9104.5,68.09,368.54,0,491,0,10.3,10.26126,2.1981930490498978,112.4773407299015,138.48828125,0.49735279961495266,0.9781576448243114,0.48975324132162273,0.4593480394476538,0.1082986249343703,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,0,5.042140610560001,12246.59,48.78,226.66,0,505,0,10.34,10.319236,1.6405730500009357,83.84010378658883,122.28515625,0.49082858950031627,0.9838249286393911,0.522008547008547,0.509628306442412,0.14816377139075687,proxy
|
||||||
|
nginx,relay-ka-50k-2000,0,5.94701975552,14444.33,51.51,74.37,0,434,0,10.18,10.14764,1.36942541555218,69.99883106077796,95.09765625,0.4954875243319766,0.9667616334283001,0.4825700615174299,0.6507001568537011,0.1586782433611348,proxy
|
||||||
|
haproxy,relay-ka-50k-2000,0,4.7048346828800005,11336.24,174.62,1030.0,0,0,0,10.12,10.084709,1.7207830977483238,88.72989987199045,156.515625,0.5263451871159933,0.9610636277302944,0.38639095936523205,0.8274507487430962,0.11304393288618754,proxy
|
||||||
|
haproxy-splice,relay-ka-50k-2000,0,8.33223655424,20285.79,94.61,1200.0,0,241,0,10.13,10.097345,0.9726080083355463,49.614301457083386,152.84375,0.5389101816363939,0.9629277566539924,0.5709074327405381,0.7831791420385501,0.23667728099631008,proxy
|
||||||
|
haproxy-splice-response,relay-ka-50k-2000,0,9.79252543488,23816.64,82.9,1230.0,0,39,0,10.12,10.0814,0.8267530223779512,42.195852131057315,161.0078125,0.5424133811230586,0.9601518026565465,0.5271687321258341,0.852949684050994,0.24690709042745812,proxy
|
||||||
|
haproxy-splice-auto,relay-ka-50k-2000,0,7.20740810752,17505.59,81.9,1050.0,0,0,0,10.1,10.069498,1.1210687503000643,57.31341928454694,161.15234375,0.5144040331292762,0.9600760456273765,0.444524843222383,0.789613213693494,0.16915759874667885,proxy
|
||||||
|
3proxy-devel-s0,relay-close-1k,0,0.05813305344,5665.17,11.1,16.48,0,0,0,10.01,9.87734,137.75295681423611,176.3659108127632,8.3828125,0.342911877394636,0.9515209125475285,0.45748716804284756,0.3015916872667863,0.09597939653686838,proxy
|
||||||
|
3proxy-devel-s1,relay-close-1k,0,0.05343543296,5210.08,12.15,16.82,0,0,0,10.01,9.903971,149.86310686383928,191.81757209926224,7.47265625,0.3167385339082713,0.9524262607040913,0.439918533604888,0.27782677431996755,0.09031902907790848,proxy
|
||||||
|
3proxy-devel-s3,relay-close-1k,0,0.052596572159999994,5129.83,12.39,17.04,0,0,0,10.0,9.894316,152.10116689094897,194.43526277925764,7.30859375,0.314633189486073,0.9505703422053232,0.4389416553595658,0.27407113196279415,0.08748620782118274,proxy
|
||||||
|
3proxy-devel-s,relay-close-1k,0,0.057881395200000005,5643.94,11.16,16.28,0,0,0,10.02,9.890133,138.49009638247284,177.26983228363173,9.984375,0.34485392400229137,0.9524714828897338,0.45938125973736926,0.30157657625576123,0.09786999585968303,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,0,0.0536870912,5234.06,12.12,17.08,0,0,0,10.02,9.896187,149.3096351623535,190.93351626364833,10.4921875,0.35117493472584854,0.9515669515669516,0.43048189993082775,0.27968134628222324,0.09121719452154745,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,0,0.057461964799999994,5599.17,11.21,17.05,0,0,0,10.0,9.873315,139.22252794251824,178.14197915738845,12.74609375,0.37216532553035847,0.9505703422053232,0.437976437976438,0.2959077390566439,0.09789286481801689,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,0,0.05192548352,5065.85,12.36,19.86,0,0,0,10.02,9.874217999999999,154.3750670499293,197.08115337712914,13.8359375,0.2801491918773311,0.9533777354900095,0.36622245002562787,0.27118368205489835,0.08743289815216203,proxy
|
||||||
|
nginx,relay-close-1k,0,0.0897581056,8748.89,7.19,7.97,0,0,0,10.03,9.962689,89.39582610798773,114.43762407868014,29.82421875,0.4778403095321843,0.9516129032258065,0.5320587549545348,0.5049479468465684,0.15863476342973196,proxy
|
||||||
|
haproxy,relay-close-1k,0,0.0994050048,9692.46,6.47,7.25,0,0,0,10.02,9.953403,80.63980295688292,103.18408370062198,29.5625,0.49333975284865994,0.9515669515669516,0.5422597864768683,0.398332784857395,0.16616754741119788,proxy
|
||||||
|
haproxy-splice,relay-close-1k,0,0.10250878976000001,9996.28,6.24,7.54,0,0,0,10.02,9.959614,78.19817226178907,100.03394365353513,35.75,0.49008498583569404,0.9524714828897338,0.542705804458177,0.4925916863181546,0.16622856345947037,proxy
|
||||||
|
haproxy-splice-response,relay-close-1k,0,0.10393485312,10132.71,6.18,7.0,0,0,0,10.01,9.949912000000001,77.04826398084391,98.66637753442481,35.63671875,0.4898431048720066,0.9515209125475285,0.5448475406187403,0.4688538114055679,0.1690877003056137,proxy
|
||||||
|
haproxy-splice-auto,relay-close-1k,0,0.09923723264,9678.99,6.48,7.27,0,0,0,10.01,9.946328,80.69551908052885,103.2767941892617,35.9921875,0.5034832172260925,0.9515209125475285,0.5418807236989055,0.4109562350975181,0.16434747031386293,proxy
|
||||||
|
3proxy-devel-s1,connect-stream1-down,1,47.5018132914237,nan,nan,nan,0,0,0,9.92,8.946302,0.1670472441162124,nan,11.43359375,0.23697478991596638,0.8985507246376812,0.13303230288294546,0.9348156833154366,0.3400674218915009,client
|
||||||
|
3proxy-devel-s3,connect-stream1-down,1,46.31385524061954,nan,nan,nan,0,0,0,9.94,9.195936,0.17167955529637946,nan,11.4453125,0.23172242874845106,0.9110907424381302,0.1581081081081081,0.8845154551660706,0.35530476754959056,proxy
|
||||||
|
3proxy-devel-s,connect-stream1-down,1,47.84360682301553,nan,nan,nan,0,0,0,9.91,8.893148,0.16568557799111935,nan,11.53125,0.23859315589353614,0.8952122854561879,0.2742725439354653,0.9500884434357999,0.426441410203943,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,1,47.73818183854307,nan,nan,nan,0,0,0,9.89,8.857724,0.16571798276830033,nan,10.74609375,0.23864986926550985,0.8942133815551537,0.13034410844629823,0.9512189972197798,0.3411042547420182,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,1,9.132813228302117,nan,nan,nan,0,0,0,10.01,10.002336,0.8767204222045082,nan,6.20703125,0.17642254288047918,0.9506172839506173,0.1971595655806182,0.6508038674605908,0.09314092751861903,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,1,22.80687602669792,nan,nan,nan,0,0,0,10.01,10.001428,0.3511000945112911,nan,7.25,0.14614074914869465,0.9506172839506173,0.1827364554637282,0.552559464880753,0.20613048168386144,proxy
|
||||||
|
tinyproxy,connect-stream1-down,1,1.2449262654546023,nan,nan,nan,0,0,0,10.0,9.935297,6.425294366894054,nan,2.0,0.13392330383480827,0.9487666034155597,0.01878980891719745,0.5087582149238212,0.014248728255589933,proxy
|
||||||
|
squid,connect-stream1-down,1,15.410253345777281,nan,nan,nan,0,0,0,10.0,9.982496,0.5190770534256361,nan,26.63671875,0.14582755752703078,0.9505703422053232,0.12209482491478153,0.4689155209924085,0.12349534673581168,proxy
|
||||||
|
3proxy-devel-s0,connect-stream1-down,1,22.054328280665395,nan,nan,nan,0,0,0,10.01,10.003025999999998,0.36306270148710484,nan,26.63671875,0.14858757062146893,0.9506172839506173,0.09193825042881647,0.5470714319999267,0.20052721411511526,proxy
|
||||||
|
3proxy-devel-s1,connect-stream16,1,20.885381417282456,nan,nan,nan,0,0,1839,10.06,10.012345000000002,0.3841542237723606,nan,75.41796875,0.14058538833832682,0.9544592030360531,0.26402393418100223,0.19974930754782397,0.5690170892105886,proxy
|
||||||
|
3proxy-devel-s3,connect-stream16,1,37.03290104556384,nan,nan,nan,0,0,1735,10.05,9.989465,0.21671537035463545,nan,85.65625,0.17942137190853943,0.95260663507109,0.35384615384615387,0.3536720670142229,0.9551448207521371,origin
|
||||||
|
3proxy-devel-s,connect-stream16,1,38.42621893782875,nan,nan,nan,0,0,1659,10.04,9.984686,0.2088370182686776,nan,98.59375,0.18107667210440456,0.9516587677725118,0.3571182350913478,0.352866876444454,0.9328539267169978,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,1,24.37603774056703,nan,nan,nan,0,0,1845,10.05,10.002032,0.3291115219058641,nan,38.2109375,0.14703132304815333,0.95260663507109,0.31905414667580534,0.22621665979269304,0.8108964014138828,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,1,8.6802472155058,nan,nan,nan,0,0,1220,10.04,9.994935,0.9241391423715419,nan,38.00390625,0.09264367816091953,0.9516587677725118,0.27746531683539555,0.08273101992954414,0.6182430266768638,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,1,21.15265252408013,nan,nan,nan,0,0,1758,10.06,10.012653,0.3793204951288673,nan,74.1640625,0.14679735582402553,0.9535545023696682,0.2688451541032306,0.19780235803773782,0.567928509936849,proxy
|
||||||
|
tinyproxy,connect-stream16,1,1.2982236444584678,nan,nan,nan,0,0,678,10.07,10.022015,6.180355798382069,nan,12.52734375,0.012386850881372083,0.9535984848484849,0.2820708031975638,0.01616384450093151,0.5896419533878512,proxy
|
||||||
|
squid,connect-stream16,1,17.561048443048044,nan,nan,nan,0,0,0,10.04,9.985142000000002,0.4572017326935818,nan,67.25,0.2584913112164297,0.9516587677725118,0.6108903949520916,0.17012685635550626,0.7448843832982198,proxy
|
||||||
|
3proxy-devel-s0,connect-stream16,1,21.00268659912842,nan,nan,nan,0,0,1871,10.05,10.008643000000001,0.38173941311305754,nan,74.09375,0.14216812126779974,0.9535104364326376,0.26416510318949343,0.19685588417462177,0.5659683139001648,proxy
|
||||||
|
3proxy-devel-s1,connect-ka-1k,1,0.18379440128,17847.95,3.41,6.68,0,0,0,10.06,10.0553,43.78805852600126,55.980946445265545,9.078125,0.427689594356261,0.9562737642585551,0.4630761994355597,0.505197481497437,0.24146114204213928,proxy
|
||||||
|
3proxy-devel-s3,connect-ka-1k,1,0.16626221056,16144.24,3.82,6.84,0,0,0,10.05,10.047497,48.3573505544037,61.82332677165354,9.30859375,0.41400599753042866,0.9544159544159544,0.44946492271105826,0.45457852572954005,0.20042576500580092,proxy
|
||||||
|
3proxy-devel-s,connect-ka-1k,1,0.20015218688,19438.15,3.08,6.89,0,0,0,10.06,10.052541,40.20940328183938,51.46859443668493,9.51171875,0.4365136298421808,0.9553656220322887,0.4799713876967096,0.5684832083873715,0.2297352089769649,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,1,0.16651386880000002,16176.35,3.81,6.86,0,0,0,10.06,10.052589,48.332310443561084,61.73104654373638,5.20703125,0.4218042493904563,0.9562737642585551,0.45443897868353245,0.46041467875135017,0.18624135821482382,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,1,0.20283654144,19699.5,3.03,6.75,0,0,0,10.11,10.0732,39.874472038325834,50.83978678467263,5.2265625,0.4385459780457081,0.9582938388625593,0.48278335724533716,0.5716103979268727,0.22512861647855786,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,1,0.20250099712,19668.7,3.04,6.72,0,0,0,10.09,10.078835,39.86153211490912,50.856598505047856,9.51953125,0.4416577730345073,0.9582146248812915,0.4823166389746024,0.5726629279323893,0.21949132956619458,proxy
|
||||||
|
tinyproxy,connect-ka-1k,1,0.17515413504,17008.33,3.6,6.76,0,0,0,10.07,10.063466,45.99377570024396,58.74940200459727,5.53125,0.4237018721299894,0.9572243346007605,0.4611019153464176,0.48711291252143085,0.18434700859619238,proxy
|
||||||
|
squid,connect-ka-1k,1,0.3770679296,36621.15,1.73,2.1,0,0,0,10.04,10.034758,21.301201638973858,27.297295827646398,22.22265625,0.5354699315808427,0.952561669829222,0.5890442890442891,0.9656795837950327,0.35027579209847765,client
|
||||||
|
3proxy-devel-s0,connect-ka-1k,1,0.20057161728,19478.78,3.07,6.85,0,0,0,10.08,10.070986,40.20509037797992,51.31181087932561,22.22265625,0.44127097465191,0.9572649572649573,0.47481320800192817,0.5736028381346884,0.25651297608392254,proxy
|
||||||
|
3proxy-devel-s1,connect-ka-50k-2000,1,4.73612419072,11503.32,139.02,314.73,0,0,0,10.18,10.160917,1.7195495033591852,87.70342801512841,284.1015625,0.4594315245478036,0.967680608365019,0.4778880866425993,0.5764102931132579,0.13674261041056351,proxy
|
||||||
|
3proxy-devel-s3,connect-ka-50k-2000,1,4.3843059712,10648.57,154.74,316.17,0,0,0,10.15,10.128808999999999,1.852060520716242,94.49068126384778,293.6640625,0.4439244236436124,0.964828897338403,0.4627647460715099,0.5408955000079665,0.12816986052886659,proxy
|
||||||
|
3proxy-devel-s,connect-ka-50k-2000,1,4.68612808704,11381.86,142.59,314.23,0,0,0,10.17,10.149633999999999,1.7361881384550708,88.61277871202154,389.46875,0.4596829772570641,0.9667300380228137,0.48528756130182793,0.57845949485548,0.13395309596374577,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,1,4.3749946163199995,10626.17,157.62,322.85,0,0,0,10.14,10.111257,1.8541737102349536,94.58072940957,181.03125,0.44561828888119154,0.9620493358633776,0.4604448520981426,0.545603240536255,0.13386590485682745,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,1,3.4165961523200004,8297.9,205.08,376.37,0,0,0,10.16,10.141793,2.378975927395099,121.31777854729124,171.43359375,0.43969157334312464,0.9648622981956315,0.4311050477489768,0.5228177533021626,0.09873510050082178,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,1,4.58831691776,11144.25,149.81,324.89,1,0,0,10.2,10.184063,1.7784299006058373,90.65216232069535,382.73046875,0.45110300503734585,0.9695817490494296,0.4772166105499439,0.5669508492644385,0.13586588031987382,proxy
|
||||||
|
tinyproxy,connect-ka-50k-2000,1,0.92828336128,2254.09,769.58,1180.0,0,4,0,10.17,10.093023,8.764565152585906,446.6991698511003,134.203125,0.36237236584835975,0.9630681818181818,0.19534355479841,0.5517488494044746,0.036103486350669664,proxy
|
||||||
|
squid,connect-ka-50k-2000,1,6.72246267904,16327.76,117.1,132.55,0,0,0,10.15,10.142117,1.2078906775217049,61.60774983004759,246.90234375,0.22001386642015253,0.9629981024667932,0.24410876132930515,0.48369657977085945,0.1195937902199916,proxy
|
||||||
|
3proxy-devel-s0,connect-ka-50k-2000,1,4.59913822208,11170.4,144.51,321.12,0,0,0,10.18,10.155969,1.7707665233676766,90.30026167561094,383.04296875,0.45601652608022036,0.9667616334283001,0.48034836980795,0.5655281289306057,0.13290493708001702,proxy
|
||||||
|
3proxy-devel-s1,connect-close-1k,1,0.041020293119999995,3996.17,6.09,14.17,5,0,0,10.08,9.894273,196.58562595858896,249.888442659527,13.73046875,0.5190238278247502,0.9572649572649573,0.4321731369924141,1.3526518506584253,0.07127730042227635,client
|
||||||
|
3proxy-devel-s3,connect-close-1k,1,0.03892314112,3794.75,6.59,14.88,2,0,0,10.05,9.888100999999999,206.56092413540546,262.6901563071776,13.8359375,0.5040106951871658,0.9553231939163498,0.42372500561671533,1.2669106724142087,0.06935013574710237,client
|
||||||
|
3proxy-devel-s,connect-close-1k,1,0.0423624704,4128.91,5.49,13.97,5,0,0,10.09,9.868301,190.54601688196163,241.9664268585132,12.4296875,0.5376508909752826,0.9573055028462998,0.4412486064659978,1.4431057482508682,0.07790603022151985,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,1,0.04043309056,3941.21,6.25,14.92,4,0,0,10.07,9.907532,199.24274618694892,253.32696032804205,10.79296875,0.5341911764705882,0.956315289648623,0.412485549132948,1.3139008400019825,0.0722205820628064,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,1,0.043201331200000005,4214.47,5.82,14.24,3,0,0,10.08,9.89213,186.66091474514565,236.87549936551204,10.93359375,0.5611923717830032,0.9572649572649573,0.43059038067016187,1.4665308151165566,0.07884365405340865,client
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,1,0.03850371072,3754.28,6.38,15.7,4,0,0,10.09,9.875058000000001,209.64213186359612,266.12860684707493,23.25390625,0.44884910485933505,0.9573055028462998,0.3311535443369082,1.2618475084795688,0.06838792642743573,client
|
||||||
|
tinyproxy,connect-close-1k,1,0.04160749568,4057.56,6.56,15.24,1,0,0,10.05,9.444514,193.23441290086316,245.3733092436154,5.50390625,0.6799506984387839,0.9340148698884758,0.43686006825938567,2.315591929286421,0.07975562721578285,client
|
||||||
|
squid,connect-close-1k,1,0.054442065920000005,5310.1,5.5,10.49,0,0,0,10.1,10.007200000000001,148.41464708325307,188.31338330163703,22.78125,0.6480263157894737,0.9591642924976258,0.46876404494382024,1.896912998215844,0.0921697644107246,client
|
||||||
|
3proxy-devel-s0,connect-close-1k,1,0.0423624704,4134.23,6.18,14.11,1,0,0,10.09,9.881604000000001,190.54601688196163,241.67664670658684,22.78125,0.5345322364645112,0.9582146248812915,0.4398127507802051,1.4213915227369596,0.07692133897467701,client
|
||||||
|
3proxy-devel-s1,socks-stream1-down,1,47.70953904779655,nan,nan,nan,0,0,0,9.91,8.965772999999999,0.16614944051872188,nan,8.609375,0.23709369024856597,0.898458748866727,0.14157458563535913,0.9405121948786317,0.35424775025931027,client
|
||||||
|
3proxy-devel-s3,socks-stream1-down,1,47.814029049222015,nan,nan,nan,0,0,0,9.92,8.825667,0.1659582355714411,nan,11.40625,0.23843586075345732,0.8912848158131177,0.24457177322074788,0.9456109108587236,0.41522784759857617,client
|
||||||
|
3proxy-devel-s,socks-stream1-down,1,47.217724831794676,nan,nan,nan,0,0,0,9.92,8.82714,0.1680528154393413,nan,11.30078125,0.2377655765099069,0.8936936936936937,0.13368055555555555,0.9447351676564593,0.3478219245583537,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,1,47.77651249115602,nan,nan,nan,0,0,0,9.91,8.861611,0.16592009788491502,nan,8.6875,0.23843586075345732,0.894404332129964,0.19736419157827065,0.9446950105753964,0.38197317889878846,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,1,10.85910707222569,nan,nan,nan,0,0,0,10.0,10.004023,0.7366271319709959,nan,4.51953125,0.2386282448201953,0.9514747859181731,0.04766666666666667,0.941706636393158,0.08836031575103136,client
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,1,22.646844663379245,nan,nan,nan,0,0,0,10.0,10.003383,0.3532094393223211,nan,9.0,0.14869050971557307,0.9505703422053232,0.16273291925465838,0.5543702527832387,0.1975541913795686,proxy
|
||||||
|
dante,socks-stream1-down,1,11.246954816220512,nan,nan,nan,0,0,0,10.02,10.009532,0.7126486487785608,nan,17.6171875,0.0851602023608769,0.9506641366223909,0.17564138708767973,0.3641745064130726,0.09022512030106462,proxy
|
||||||
|
3proxy-devel-s0,socks-stream1-down,1,22.69810006508277,nan,nan,nan,0,0,0,10.0,10.002519,0.35241325378770383,nan,8.1171875,0.14677601809954752,0.9505703422053232,0.08615384615384615,0.555654279718411,0.19673629291274927,proxy
|
||||||
|
3proxy-devel-s1,socks-stream16,1,20.787171310886144,nan,nan,nan,0,0,1869,10.06,10.015237,0.38587700970515637,nan,66.19140625,0.13900414937759337,0.9544592030360531,0.2680565897244974,0.19877408020539855,0.5631673450637982,proxy
|
||||||
|
3proxy-devel-s3,socks-stream16,1,38.36896158242118,nan,nan,nan,0,0,1758,10.06,9.990866,0.20939575047778,nan,84.4296875,0.1788295640009326,0.9526515151515151,0.35692201992442457,0.35181176911396894,0.9315390820077064,origin
|
||||||
|
3proxy-devel-s,socks-stream16,1,38.25819458378969,nan,nan,nan,0,0,1633,10.04,9.995042,0.20949212916937876,nan,97.76953125,0.1854764107308048,0.9534662867996201,0.36273504273504276,0.3509601245833945,0.948024232496477,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,1,24.171533768398486,nan,nan,nan,0,0,1824,10.05,9.998832,0.3320719577265591,nan,45.68359375,0.15430954587581094,0.9517045454545454,0.31332408049965305,0.22905313962021168,0.7781760327216242,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,1,8.617340260558914,nan,nan,nan,0,0,940,10.06,10.028236,0.9303350220532977,nan,37.703125,0.0846082522021326,0.9544592030360531,0.263014763014763,0.08365933847520038,0.586752065436051,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,1,20.98592466874024,nan,nan,nan,0,0,1822,10.04,10.006743,0.38177012337272354,nan,71.0390625,0.15788288288288288,0.9534662867996201,0.2690449646971386,0.19675030981988126,0.5686198304185847,proxy
|
||||||
|
dante,socks-stream16,1,14.563485673522006,nan,nan,nan,0,0,0,10.04,10.023985,0.5513345983974405,nan,62.00390625,0.16717657342657344,0.952561669829222,0.537042375324301,0.14738950719991592,0.7479239197186326,proxy
|
||||||
|
3proxy-devel-s0,socks-stream16,1,21.052277715525758,nan,nan,nan,0,0,1759,10.06,10.009234,0.38121015503546296,nan,78.0625,0.13977011494252872,0.9535545023696682,0.26614408361328856,0.19390843985019404,0.5696112684862682,proxy
|
||||||
|
3proxy-devel-s1,socks-ka-1k,1,0.18278776832,17750.89,3.43,6.71,0,0,0,10.06,10.049051,44.02920432788837,56.233160795537124,5.046875,0.430126404494382,0.9553656220322887,0.4647887323943662,0.503064331604166,0.20897146580385262,proxy
|
||||||
|
3proxy-devel-s3,socks-ka-1k,1,0.165675008,16089.12,3.82,6.89,0,0,0,10.08,10.064352000000001,48.67360561708861,62.03000578454419,5.34375,0.4164171217192179,0.9572649572649573,0.45288825757575757,0.4537308854290868,0.1881720560600659,proxy
|
||||||
|
3proxy-devel-s,socks-ka-1k,1,0.2017460224,19596.76,3.0,6.58,1,0,0,10.09,10.080873,40.01070208955951,50.988695568683134,5.3515625,0.4425093300159943,0.9582146248812915,0.4837330800284968,0.5696524099388174,0.22321547116521676,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,1,0.16508780543999999,16036.9,3.85,7.04,0,0,0,10.07,10.061620999999999,48.79827421855151,62.286604977980105,4.66015625,0.4165794066317626,0.9572243346007605,0.4431223227034745,0.4556984295749306,0.17676436070082419,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,1,0.20182990848,19601.37,3.05,6.76,0,0,0,10.09,10.076816,39.99407253756884,51.04234643032391,4.90234375,0.4413497589716122,0.9582146248812915,0.4841628959276018,0.5698917822005013,0.21294303617296037,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,1,0.201326592,19552.75,3.06,6.82,0,0,0,10.08,10.082256,40.05432128906251,51.1036979203634,5.54296875,0.44126023495906014,0.9581749049429658,0.4858690532265662,0.5698153421217099,0.21095516500217962,proxy
|
||||||
|
dante,socks-ka-1k,1,0.27548188672,26756.77,1.24,4.38,0,0,0,10.05,10.053563,29.185221924125493,37.32271709380443,42.59765625,0.47007299270072994,0.956232159847764,0.5233580018501388,0.7475767857288229,0.2727344596230782,proxy
|
||||||
|
3proxy-devel-s0,socks-ka-1k,1,0.20233322496,19654.24,3.04,6.71,0,0,0,10.1,10.09306,39.93412353110748,50.895457706378565,5.54296875,0.4401213635552383,0.9591642924976258,0.48370211753509396,0.5689292139114946,0.22141408348718866,proxy
|
||||||
|
3proxy-devel-s1,socks-ka-50k-2000,1,4.71750148096,11458.12,145.83,312.27,0,0,0,10.16,10.139382,1.722945935004979,87.79661602806726,159.88671875,0.4457242582897033,0.9657794676806084,0.4762550881953867,0.5402326626826487,0.13301172964894864,proxy
|
||||||
|
3proxy-devel-s3,socks-ka-50k-2000,1,4.3472283238400005,10558.49,162.42,323.32,0,0,0,10.14,10.128956,1.8660165502497685,95.12105890188647,170.671875,0.4354275741710297,0.9638783269961977,0.45940366972477065,0.5056560707991555,0.1253053748594313,proxy
|
||||||
|
3proxy-devel-s,socks-ka-50k-2000,1,4.70072426496,11417.13,150.19,314.97,1,0,0,10.15,10.133078,1.7273933849998104,88.16197482823615,265.9140625,0.4474877878576413,0.964828897338403,0.4775445723313022,0.5460643370182475,0.1387263699913661,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,1,4.34756386816,10559.6,164.38,325.42,2,1,0,10.12,10.099779,1.8621923094200417,94.9405683300029,167.9296875,0.4339457567804024,0.9619771863117871,0.45903890160183064,0.5046670145505544,0.12435873741305163,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,1,3.35829532672,8156.28,219.58,381.83,1,0,0,10.14,10.125644,2.4155112075634153,123.17036137260857,156.83984375,0.42430464812394997,0.9638783269961977,0.42238599723629666,0.48305678553760417,0.09783500788340166,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,1,4.54654164992,11042.71,135.22,966.96,0,0,0,10.21,10.174943,1.7965303364467635,91.54651746646582,260.06640625,0.46262864855744895,0.9696106362773029,0.4824815889310422,0.5288980456405333,0.13300510148899602,proxy
|
||||||
|
dante,socks-ka-50k-2000,1,5.876219904,14272.27,185.03,197.05,0,0,0,10.16,10.089067,1.3832021491345468,70.49534078530144,781.13671875,0.47744812210598525,0.966698382492864,0.5068186899172815,0.6333077297802284,0.165276589877777,proxy
|
||||||
|
3proxy-devel-s0,socks-ka-50k-2000,1,4.50535358464,10942.74,147.27,346.35,1,0,0,10.17,10.138486,1.8058516045750284,92.09620748360923,258.96875,0.4485078488873555,0.9658119658119658,0.47581552305961755,0.5241268024713905,0.1273078356633939,proxy
|
||||||
|
3proxy-devel-s1,socks-close-1k,1,0.03800039424,3704.05,6.39,15.45,4,0,0,10.07,9.916401,211.9978005786079,269.3089430894309,6.68359375,0.45037765677147373,0.9572243346007605,0.41329414424598687,0.6065682044643217,0.0655182510227132,proxy
|
||||||
|
3proxy-devel-s3,socks-close-1k,1,0.03573547008,3484.04,6.39,16.19,5,0,0,10.06,9.908853,225.21041368654642,286.13686785368907,6.49609375,0.4410156938811497,0.9562737642585551,0.4046967624259006,0.5782302093926802,0.0636655324898753,proxy
|
||||||
|
3proxy-devel-s,socks-close-1k,1,0.04001366016,3903.5,6.39,14.64,2,0,0,10.1,9.919932,201.9310397422039,256.1826252377933,7.6875,0.461024106985747,0.9591642924976258,0.4193109700815956,0.6539475641534863,0.07025573614789223,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,1,0.03749707776,3655.42,5.77,15.18,13,0,0,10.07,9.943883999999999,214.84340864006575,272.92931483087597,8.59765625,0.4627687016337059,0.9572243346007605,0.3925561797752809,0.6050168570840113,0.0665200995404605,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,1,0.04018143232,3916.81,5.95,14.34,5,0,0,10.09,9.940140000000001,200.8888069423604,255.1072006472492,9.58984375,0.47384828541738827,0.9582146248812915,0.4056383970177074,0.6684081313329814,0.07219185938292193,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,1,0.036909875200000004,3599.98,6.64,16.16,4,0,0,10.07,9.897469,218.2613719593395,277.1508779655419,9.7421875,0.3749500599280863,0.9581351094196003,0.33030852994555354,0.5973841045228931,0.06650300867042785,proxy
|
||||||
|
dante,socks-close-1k,1,0.03917479936,3816.55,6.18,17.8,6,0,0,10.11,10.078050000000001,206.45925779158858,262.3180509068265,58.3359375,0.4442882249560633,0.9601139601139601,0.41271989174560214,0.6305521735895795,0.06934176927887337,proxy
|
||||||
|
3proxy-devel-s0,socks-close-1k,1,0.0402653184,3925.78,5.79,14.32,5,0,0,10.08,9.903663,200.2716064453125,254.5004670891509,7.21875,0.46084656084656084,0.9563567362428842,0.421195652173913,0.657826418320732,0.07215996263955696,proxy
|
||||||
|
3proxy-devel-s1,relay-stream1-down,1,46.19049596584053,nan,nan,nan,0,0,0,9.94,9.285577,0.1721378298751007,nan,9.44140625,0.24221815328276222,0.9585342333654774,0.22036727879799667,0.875149972564404,0.4091077337915472,proxy
|
||||||
|
3proxy-devel-s3,relay-stream1-down,1,48.1479677191993,nan,nan,nan,0,0,0,9.89,8.913454,0.16430844924734772,nan,8.5859375,0.23877405559515325,0.8966455122393472,0.13275261324041812,0.9512054067186747,0.35058380665147765,client
|
||||||
|
3proxy-devel-s,relay-stream1-down,1,47.76959746589269,nan,nan,nan,0,0,0,9.91,8.846818,0.16594413271765993,nan,9.78515625,0.2377772477939423,0.8935978358881875,0.19633086578693273,0.9456073291234297,0.38290092057943,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,1,47.47733300057513,nan,nan,nan,0,0,0,9.91,8.874311,0.16696397769763777,nan,10.859375,0.24797365754812564,0.9375591296121097,0.20976430976430976,0.9260974405985034,0.4002884562865411,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,1,10.5422876891357,nan,nan,nan,0,0,0,10.01,10.002861999999999,0.7594947914335829,nan,3.3046875,0.22131350681536555,0.9515209125475285,0.17660550458715596,0.8544175553075659,0.09408703640246799,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,1,22.38375847337852,nan,nan,nan,0,0,0,10.01,10.001578,0.35771944268549877,nan,10.10546875,0.1651838671411625,0.9980059820538385,0.11565096952908588,0.562434441685378,0.20060143756394494,proxy
|
||||||
|
nginx,relay-stream1-down,1,14.1579525295107,nan,nan,nan,0,0,0,10.0,10.002329,0.5649854877737214,nan,35.59765625,0.1378809869375907,0.9505703422053232,0.09134309357097391,0.5258276862222702,0.11682111769613539,proxy
|
||||||
|
haproxy,relay-stream1-down,1,13.20126389368697,nan,nan,nan,0,0,0,10.0,9.999568,0.6059355045428914,nan,30.84765625,0.1360368133448375,0.949667616334283,0.06285714285714286,0.5181236829005443,0.1139495851741524,proxy
|
||||||
|
haproxy-splice,relay-stream1-down,1,46.6802718371348,nan,nan,nan,0,0,0,9.95,9.186549999999999,0.1705028571626103,nan,42.109375,0.24548460951411855,0.95489443378119,0.17839549612948627,0.9171551369898825,0.37818297119731725,client
|
||||||
|
haproxy-splice-response,relay-stream1-down,1,47.14338492255138,nan,nan,nan,0,0,0,9.93,9.061867,0.16848897390888437,nan,42.1328125,0.23747016706443913,0.9035486806187443,0.1607565011820331,0.9422917004780494,0.3599611271989163,client
|
||||||
|
haproxy-splice-auto,relay-stream1-down,1,30.6150729725241,nan,nan,nan,0,0,0,9.97,9.662942,0.2604967927279538,nan,44.9296875,0.19250916710319538,0.9326473339569691,0.26320154824440145,0.7244689743791659,0.2734995864991555,proxy
|
||||||
|
3proxy-devel-s0,relay-stream1-down,1,22.364837273369748,nan,nan,nan,0,0,0,10.0,10.002732,0.35766531173966654,nan,6.859375,0.15352231265787258,0.9505703422053232,0.0746987951807229,0.5661998752169524,0.191092737386607,proxy
|
||||||
|
3proxy-devel-s1,relay-stream16,1,20.78547407070374,nan,nan,nan,0,0,1965,10.05,10.002225,0.3858717359683479,nan,63.44140625,0.13786722183668748,0.9535104364326376,0.26711309523809523,0.20061021084540062,0.5602062022256988,proxy
|
||||||
|
3proxy-devel-s3,relay-stream16,1,38.150674967288666,nan,nan,nan,0,0,1735,10.03,9.986973,0.21005961483659355,nan,83.5703125,0.1695395513577332,0.9516129032258065,0.3570694967476892,0.3442078841103789,0.9686000911457923,origin
|
||||||
|
3proxy-devel-s,relay-stream16,1,38.3774327346466,nan,nan,nan,0,0,1714,10.04,9.987188999999999,0.20900226492773513,nan,96.05078125,0.18310512880018565,0.952561669829222,0.3550154056829853,0.3519061049463059,0.9909382164050635,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,1,24.689205043121984,nan,nan,nan,0,0,1664,10.04,10.00018,0.3246729755125526,nan,71.1484375,0.1421889616463985,0.952561669829222,0.3226252158894646,0.22437444785074848,0.7994885524714143,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,1,8.8575077795476,nan,nan,nan,0,0,881,10.05,10.019434,0.9048314259979053,nan,18.53515625,0.07925407925407925,0.9535104364326376,0.27719429857464367,0.08080259407185526,0.6381212164666958,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,1,20.88948417480089,nan,nan,nan,0,0,1865,10.04,10.001168,0.3836535713436042,nan,67.10546875,0.1383444777495965,0.9534662867996201,0.26272455089820357,0.19588559164853006,0.5678822064214138,proxy
|
||||||
|
nginx,relay-stream16,1,13.467000800604149,nan,nan,nan,0,0,1283,10.06,10.043175,0.5952328839215085,nan,90.9375,0.12909009412819364,0.9544592030360531,0.26222053808260704,0.12355144157146443,0.596954856799764,proxy
|
||||||
|
haproxy,relay-stream16,1,8.917764990462429,nan,nan,nan,0,0,4,10.01,10.007345,0.8976602284731773,nan,46.31640625,0.1401952085181899,0.9515209125475285,0.7003506534905961,0.09797077748755334,1.3299393453365875,origin
|
||||||
|
haproxy-splice,relay-stream16,1,23.045294741353786,nan,nan,nan,0,0,5,10.02,10.009443000000001,0.347601162223316,nan,52.4921875,0.36127007568765,0.9515669515669516,0.7341851043938922,0.26628879701340635,1.280503721891943,origin
|
||||||
|
haproxy-splice-response,relay-stream16,1,8.436110705132018,nan,nan,nan,0,0,17,10.03,10.010046,0.9506059348369233,nan,48.640625,0.1890063424947146,0.9507109004739337,0.6888753056234719,0.09695942981141549,1.3157328793791623,origin
|
||||||
|
haproxy-splice-auto,relay-stream16,1,15.815400978180609,nan,nan,nan,0,0,24,10.02,10.005980000000001,0.5066408631717686,nan,61.3828125,0.248117239975575,0.9515669515669516,0.715076923076923,0.16638362683443383,1.289105514637902,origin
|
||||||
|
3proxy-devel-s0,relay-stream16,1,21.05201490615203,nan,nan,nan,0,0,1913,10.04,9.999079,0.3807075530747706,nan,65.47265625,0.15122615803814715,0.952561669829222,0.25845229151014276,0.1986590357286859,0.56672873177423,proxy
|
||||||
|
3proxy-devel-s1,relay-ka-1k,1,0.18421383168,17891.84,3.41,7.03,0,0,0,10.1,10.103559,43.86207010793772,55.89745860267422,4.84375,0.43336199484092863,0.9600760456273765,0.4687353079454631,0.45768990785085584,0.19671681344207312,proxy
|
||||||
|
3proxy-devel-s3,relay-ka-1k,1,0.16869490688,16385.21,3.78,7.1,0,0,0,10.11,10.10369,47.94454171490396,61.092042927583876,4.83984375,0.42258340461933275,0.9610266159695817,0.45540349221330817,0.41773864413244344,0.20341391226420508,proxy
|
||||||
|
3proxy-devel-s,relay-ka-1k,1,0.20543700992,19950.28,3.0,7.02,0,0,0,10.11,10.103879,39.36973188594197,50.18017213139164,5.2890625,0.4410844629822732,0.9601139601139601,0.4753265602322206,0.5068903211458972,0.23466114783454223,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,1,0.16911433728,16427.82,3.77,7.05,0,0,0,10.01,10.014242,47.35257890489366,60.867344456876005,4.0234375,0.4242888775336399,0.9515209125475285,0.4531286894923259,0.4166063888885802,0.20804900298477172,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,1,0.20694695936000002,20103.05,2.98,6.86,0,0,0,10.11,10.10286,39.08247806593914,49.796332507499,4.671875,0.4450017295053615,0.9601139601139601,0.48799048751486324,0.5126561970714467,0.23939664047092005,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,1,0.20711473152,20112.59,2.98,6.9,0,0,0,10.11,10.104757,39.050819517485564,49.76961247637051,5.296875,0.4492877981808821,0.9601139601139601,0.4901821622900402,0.5108750910255319,0.2299406722629186,proxy
|
||||||
|
nginx,relay-ka-1k,1,0.452984832,43999.14,1.41,1.88,0,0,0,10.03,10.019226,17.71361739547164,22.75382538764306,30.08203125,0.4638041163946061,0.9516129032258065,0.5276781137878012,0.6849825054827087,0.3439812955710556,proxy
|
||||||
|
haproxy,relay-ka-1k,1,0.44778389504000005,43493.31,1.39,2.15,0,0,0,10.1,10.096373,18.044418500755196,22.993006483572522,29.30859375,0.49143922698762504,0.9591642924976258,0.5799718574108818,0.6867389060412432,0.3486703151825963,proxy
|
||||||
|
haproxy-splice,relay-ka-1k,1,0.34930163712,33929.95,1.85,2.29,0,0,0,10.01,10.01496,22.925744253666096,29.46353409351802,35.53515625,0.4231398944879025,0.9515209125475285,0.4682051282051282,0.6027989639484932,0.27540780613797045,proxy
|
||||||
|
haproxy-splice-response,relay-ka-1k,1,0.41531998208,40334.69,1.55,2.31,0,0,0,10.11,10.101374999999999,19.474141262102986,24.81614939763768,35.53515625,0.4522622345337027,0.9601139601139601,0.46580218662598527,0.7360679585906247,0.2944472964202044,proxy
|
||||||
|
haproxy-splice-auto,relay-ka-1k,1,0.42983227392,41744.21,1.45,2.25,0,0,0,10.02,10.007291,18.649134758763907,23.96550115881091,35.609375,0.5190098689532439,0.9515669515669516,0.578215527230591,0.6909102498067364,0.3946021112293276,proxy
|
||||||
|
3proxy-devel-s0,relay-ka-1k,1,0.20686307328,20093.2,2.98,6.81,0,0,0,10.11,10.103025,39.09832659719054,49.81768010249335,5.28515625,0.45138178096212894,0.9610266159695817,0.48981042654028434,0.507175259685352,0.23094739117578084,proxy
|
||||||
|
3proxy-devel-s1,relay-ka-50k-2000,1,5.170234654720001,12557.73,45.01,164.51,0,527,0,10.34,10.301992,1.5999273828796807,81.72491740566858,82.37109375,0.49099601593625497,0.9819563152896487,0.5248075278015398,0.5269947338955395,0.15203956222014597,proxy
|
||||||
|
3proxy-devel-s3,relay-ka-50k-2000,1,4.7424995328,11518.81,51.65,166.38,0,600,0,10.34,10.296554,1.74422789982146,89.08033598966186,80.75390625,0.47658004491498235,0.9828897338403042,0.5177773046625506,0.4823710717831659,0.14068531640774137,proxy
|
||||||
|
3proxy-devel-s,relay-ka-50k-2000,1,5.12653000704,12451.44,45.35,156.25,0,508,0,10.33,10.284168999999999,1.612006559729773,82.46714885599783,135.515625,0.4910969793322735,0.9800759013282733,0.5258565652266439,0.5229050113187005,0.14907960568889167,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,1,4.787126927359999,11627.09,49.72,723.31,0,508,0,10.3,10.263781,1.7212829584496077,87.97779201366646,166.78515625,0.4784276126558006,0.9800190294957184,0.51768968456948,0.4853698663780988,0.14264202446395277,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,1,3.70533203968,8999.5,70.97,630.46,0,401,0,10.29,10.2475,2.221663244169322,113.469702817445,128.77734375,0.5052880820836622,0.9772079772079773,0.4894594030473805,0.4572385217779805,0.11013323098824317,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,1,4.98249760768,12101.74,50.67,679.4,0,467,0,10.37,10.323607,1.6650283960422942,84.86018936015253,129.47265625,0.4898637947418435,0.9848053181386515,0.5218135158254918,0.5060569304761012,0.14916492785894128,proxy
|
||||||
|
nginx,relay-ka-50k-2000,1,5.90021132288,14330.6,61.26,75.86,0,380,0,10.19,10.154654,1.381645428255756,70.61823877142282,103.87109375,0.49711286089238843,0.9677113010446344,0.48726042841037204,0.6307916093177348,0.1529931439306044,proxy
|
||||||
|
haproxy,relay-ka-50k-2000,1,4.68847689728,11304.0,175.59,936.27,0,0,0,10.12,10.084577000000001,1.7267867960908285,88.8366091101416,155.1171875,0.5225273739005565,0.9619771863117871,0.38120610317268105,0.7373700100584103,0.11500380864126374,proxy
|
||||||
|
haproxy-splice,relay-ka-50k-2000,1,8.24633720832,20124.75,94.22,1190.0,0,365,0,10.11,10.091338,0.9807990863919258,49.97824883334651,154.296875,0.5405133366884751,0.9610266159695817,0.5744054360135901,0.802727941936616,0.23556639911899543,proxy
|
||||||
|
haproxy-splice-response,relay-ka-50k-2000,1,10.050223472639999,24462.07,80.92,1260.0,0,46,0,10.12,10.09092,0.8055542269323627,41.04161343828955,160.86328125,0.5289536065018625,0.9610636277302944,0.5193195625759417,0.7853270336921754,0.23941498518442764,proxy
|
||||||
|
haproxy-splice-auto,relay-ka-50k-2000,1,7.19717400576,17480.77,83.31,1090.0,0,0,0,10.11,10.071771,1.1237744138917662,57.42980328446214,161.171875,0.520508166969147,0.9601139601139601,0.4478041756659467,0.8337561966113601,0.16997500568711177,proxy
|
||||||
|
3proxy-devel-s0,relay-ka-50k-2000,1,5.04776097792,12260.19,48.57,444.1,0,500,0,10.33,10.292286,1.6371615130249881,83.65794993480672,136.171875,0.4889770023790642,0.9810066476733144,0.5221937686726419,0.5086245735136006,0.15098987301935898,proxy
|
||||||
|
3proxy-devel-s1,relay-close-1k,1,0.05335154688,5201.7,12.16,17.18,0,0,0,10.01,9.901705999999999,150.09874067966294,192.16740257247073,7.77734375,0.3186169173666732,0.9515209125475285,0.4415349887133183,0.2778501896808852,0.08839942379397997,proxy
|
||||||
|
3proxy-devel-s3,relay-close-1k,1,0.05217714176,5086.18,12.45,17.77,0,0,0,10.0,9.895256,153.3238450813907,196.20153822005963,7.03515625,0.3145935357492654,0.9505703422053232,0.43843368039837033,0.27403231638834363,0.08838954639745493,proxy
|
||||||
|
3proxy-devel-s,relay-close-1k,1,0.057629736960000004,5620.16,11.19,16.43,0,0,0,10.03,9.89953,139.2336738508688,177.89996452642782,9.296875,0.34390523500191056,0.9534220532319392,0.4575513851653262,0.3006469020940031,0.0969249947376688,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,1,0.05360320512,5224.8,12.14,16.99,0,0,0,10.0,9.891051000000001,149.2448069493349,190.95266283488323,10.09765625,0.3508019395747855,0.9514747859181731,0.43028624192059095,0.2797508424340286,0.09027629004141152,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,1,0.057881395200000005,5640.98,11.17,16.26,0,0,0,10.04,9.898295,138.7665237205616,177.44472526113006,9.7890625,0.3716797948342187,0.9534662867996201,0.4407561088059013,0.29875936229291306,0.09788491313921949,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,1,0.05192548352,5061.39,12.35,20.14,0,0,0,10.01,9.864411,154.22100011674576,197.22972041061612,12.140625,0.27997515013460345,0.9515209125475285,0.3641262509622787,0.26918086213172393,0.08834798377299148,proxy
|
||||||
|
nginx,relay-close-1k,1,0.09000976384,8777.93,7.16,8.0,0,0,0,10.03,9.958598,89.14588437609213,114.08876856928362,29.8984375,0.4769500438212095,0.9516129032258065,0.5312208760484622,0.4955072776949702,0.1586449637468045,proxy
|
||||||
|
haproxy,relay-close-1k,1,0.09890168831999999,9643.99,6.49,7.68,0,0,0,10.02,9.963651,81.05018363350827,103.64945382323734,29.609375,0.503968253968254,0.9533777354900095,0.5402991739227506,0.4176691775594017,0.16343201383174996,proxy
|
||||||
|
haproxy-splice,relay-close-1k,1,0.10334765056,10079.98,6.22,6.92,0,0,0,10.02,9.960401000000001,77.56344683758624,99.17453530494684,35.7734375,0.4911467813999669,0.9533777354900095,0.544676180021954,0.4786122294437725,0.16640312818380618,proxy
|
||||||
|
haproxy-splice-response,relay-close-1k,1,0.10259267584000001,10006.52,6.26,7.01,0,0,0,10.11,10.035892,78.83603711256899,100.03067211508969,35.8671875,0.4950166112956811,0.9601139601139601,0.5487316421895861,0.4985165043244384,0.17200539328693923,proxy
|
||||||
|
haproxy-splice-auto,relay-close-1k,1,0.09831448576,9590.1,6.54,7.33,0,0,0,10.03,9.960519,81.61564328971575,104.39217318900916,35.84765625,0.506003159557662,0.9525166191832859,0.5423728813559322,0.41770494555270116,0.1663072911676101,proxy
|
||||||
|
3proxy-devel-s0,relay-close-1k,1,0.057881395200000005,5639.83,11.15,16.41,0,0,0,10.03,9.895141,138.62831005151722,177.39025856885146,11.01171875,0.34278597432458324,0.9525166191832859,0.45793349698727964,0.30162517083601637,0.09787730868351147,proxy
|
||||||
|
3proxy-devel-s3,connect-stream1-down,2,47.302128468947245,nan,nan,nan,0,0,0,9.91,9.071727,0.1675845983449017,nan,8.63671875,0.23526570048309178,0.9050228310502283,0.15538932335940156,0.9246296981272119,0.35815262361511246,client
|
||||||
|
3proxy-devel-s,connect-stream1-down,2,47.50916500604735,nan,nan,nan,0,0,0,9.88,8.666499000000002,0.1663498008720417,nan,11.49609375,0.23846885401806941,0.8845120859444942,0.12909979064898813,0.9506014826726221,0.3449176812826723,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,2,47.38760622926295,nan,nan,nan,0,0,0,9.93,8.849246,0.1676200128664757,nan,10.765625,0.247843734145104,0.9367924528301886,0.13812154696132597,0.9252686627696004,0.3614254406903051,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,2,10.955283378203061,nan,nan,nan,0,0,0,10.01,10.002236,0.7308856278860417,nan,5.21484375,0.22970345162858533,0.9497153700189753,0.10698824984539271,0.900629203298511,0.08547818528197061,client
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,2,22.70491319665183,nan,nan,nan,0,0,0,10.02,10.002841,0.35301046012636456,nan,9.734375,0.14878599661208358,0.9506641366223909,0.14842767295597484,0.5563070990563604,0.19564843819841962,proxy
|
||||||
|
tinyproxy,connect-stream1-down,2,1.2424272596714219,nan,nan,nan,0,0,0,9.99,9.957578999999999,6.431869313686709,nan,2.0,0.1345185185185185,0.9496197718631179,0.018164435946462717,0.505073370585778,0.01424960315319435,proxy
|
||||||
|
squid,connect-stream1-down,2,15.136219406440818,nan,nan,nan,0,0,0,10.01,9.982335,0.5290043310600314,nan,23.71875,0.12168709033912796,0.9506172839506173,0.1488781079442086,0.4659295088815612,0.12725871688441392,proxy
|
||||||
|
3proxy-devel-s0,connect-stream1-down,2,22.04551902346937,nan,nan,nan,0,0,0,10.0,10.003659,0.362844897950691,nan,23.71875,0.14793901750423488,0.9505703422053232,0.09829931972789116,0.5468741645441885,0.19378289299207016,proxy
|
||||||
|
3proxy-devel-s1,connect-stream1-down,2,47.310514584573404,nan,nan,nan,0,0,0,9.91,8.976185,0.1675556299786753,nan,11.4921875,0.23573500967117988,0.9000908265213442,0.13984806629834254,0.9268367536679372,0.3459838308015186,client
|
||||||
|
3proxy-devel-s3,connect-stream16,2,38.3099864600437,nan,nan,nan,0,0,1690,10.03,9.98902,0.20918907278547838,nan,82.8671875,0.1753398968588842,0.9525166191832859,0.356994459833795,0.34904526136304986,0.9222762094915072,origin
|
||||||
|
3proxy-devel-s,connect-stream16,2,38.2733482927476,nan,nan,nan,0,0,1704,10.04,9.99264,0.20949957769692773,nan,92.17578125,0.17499413558526858,0.952561669829222,0.35235131396957126,0.34593811035756467,0.9253043452879681,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,2,24.13128783176701,nan,nan,nan,0,0,1851,10.04,10.002171,0.3321371104336043,nan,33.33203125,0.14174528301886793,0.952561669829222,0.31669535283993117,0.22433370127155686,0.7955502290924131,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,2,8.460337329083247,nan,nan,nan,0,0,962,10.05,10.009236999999999,0.9483428367766104,nan,31.69140625,0.0884526558891455,0.9517045454545454,0.2703422053231939,0.0817319285806749,0.5930861070330559,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,2,21.121759013394975,nan,nan,nan,0,0,1735,10.06,10.007573,0.3800662017716633,nan,84.265625,0.1472127417519909,0.9535545023696682,0.26950092421441774,0.1959388889065269,0.569936777476202,proxy
|
||||||
|
tinyproxy,connect-stream16,2,1.2997241922860208,nan,nan,nan,0,0,690,10.05,10.019012,6.163618572271906,nan,21.3359375,0.012610040447299548,0.95260663507109,0.2811199394627317,0.016156910392159284,0.5892327391047281,proxy
|
||||||
|
squid,connect-stream16,2,17.979650909809216,nan,nan,nan,0,0,0,10.04,9.983229,0.44657961039708727,nan,68.7421875,0.26362384418650403,0.952561669829222,0.5756914119359534,0.1750052883551558,0.7579282867515459,proxy
|
||||||
|
3proxy-devel-s0,connect-stream16,2,21.08761681393372,nan,nan,nan,0,0,1854,10.05,10.008596,0.3802174680359339,nan,70.7109375,0.16555258467023173,0.95260663507109,0.27517521209885654,0.1987083679499447,0.5658295103855575,proxy
|
||||||
|
3proxy-devel-s1,connect-stream16,2,20.93080695976371,nan,nan,nan,0,0,1750,10.06,10.016922000000001,0.3830938770452016,nan,86.5859375,0.14701204271756418,0.9535545023696682,0.2667910447761194,0.1938727723635086,0.5675433573130537,proxy
|
||||||
|
3proxy-devel-s3,connect-ka-1k,2,0.16601055232,16120.63,3.83,6.88,0,0,0,10.07,10.062379,48.52703570596736,61.89533725890322,9.31640625,0.4168564920273349,0.9572243346007605,0.4525323910482921,0.45752442587943426,0.18238856283954255,proxy
|
||||||
|
3proxy-devel-s,connect-ka-1k,2,0.20208156672,19624.57,3.05,6.72,0,0,0,10.1,10.08521,39.98385469366179,50.96891400888171,9.36328125,0.4431757359500446,0.9591642924976258,0.4835243553008596,0.5717027009618882,0.22705596777198012,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,2,0.16475226112,16005.42,3.85,7.05,0,0,0,10.05,10.038305999999999,48.80054419492267,62.36541791035514,5.16015625,0.4198071866783523,0.9544159544159544,0.44990503323836656,0.4575962795316743,0.18250834788349782,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,2,0.20182990848,19603.59,3.06,6.75,0,0,0,10.06,10.046011,39.87516052804188,51.030501630845556,5.40234375,0.44268704460636216,0.9544592030360531,0.4778124250419765,0.574123838360283,0.22777040842924748,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,2,0.20065550336000001,19489.14,3.07,6.87,0,0,0,10.1,10.083222,40.268020885046504,51.32974533331301,9.37109375,0.43657923104563423,0.9591642924976258,0.4846902444813672,0.5689268007013318,0.21094643351906456,proxy
|
||||||
|
tinyproxy,connect-ka-1k,2,0.17473470464,16970.62,3.6,6.82,0,0,0,10.1,10.087401999999999,46.24152950409566,58.930269737264354,5.515625,0.42489495798319327,0.9591642924976258,0.459332393041843,0.48616808161494535,0.2109548065526849,proxy
|
||||||
|
squid,connect-ka-1k,2,0.37589352448,36505.51,1.74,2.13,0,0,0,10.04,10.029832,21.367753038872458,27.419108168927924,22.19921875,0.5477695820161573,0.952561669829222,0.5853600944510036,0.9685040705649953,0.3702925333509299,client
|
||||||
|
3proxy-devel-s0,connect-ka-1k,2,0.20191379456,19613.7,3.05,6.73,0,0,0,10.06,10.055277,39.858594196289474,50.95657547499531,22.19921875,0.4396014943960149,0.9553656220322887,0.4817260080169771,0.5695433280938303,0.2525862628201946,proxy
|
||||||
|
3proxy-devel-s1,connect-ka-1k,2,0.182452224,17719.33,3.43,6.68,0,0,0,10.08,10.073355999999999,44.19787176724138,56.36133880545274,9.19921875,0.4279661016949153,0.9581749049429658,0.46531859863625674,0.5023746417228246,0.19109643217720293,proxy
|
||||||
|
3proxy-devel-s3,connect-ka-50k-2000,2,4.3468088934399995,10557.62,156.98,320.92,0,0,0,10.17,10.14424,1.8717178968411678,95.37743015502349,294.0390625,0.43953163229639985,0.9667300380228137,0.46134492223238793,0.5402391800215935,0.12730022034635538,proxy
|
||||||
|
3proxy-devel-s,connect-ka-50k-2000,2,4.68906409984,11388.99,146.77,315.69,0,0,0,10.19,10.166564,1.7385132355683006,88.61023669976869,389.44921875,0.45698459407997233,0.9686311787072244,0.48257372654155495,0.5810760460495648,0.13392525803224617,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,2,4.3696259072,10612.93,159.5,322.59,0,0,0,10.13,10.112553,1.8546210069486109,94.50420277821831,181.34375,0.4400559245019224,0.9620132953466287,0.4602337840935136,0.5447433998711295,0.1300808103363486,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,2,3.4239781273600003,8315.83,205.91,375.73,0,0,0,10.17,10.158749,2.3761834034474756,121.09161050651299,172.7109375,0.43184784635465223,0.9667300380228137,0.4288325336988805,0.5239533497593212,0.09971583827030998,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,2,4.628666122239999,11242.13,142.14,316.2,0,0,0,10.21,10.188246999999999,1.7646552558098907,90.03050984956704,382.00390625,0.45953360768175583,0.9696106362773029,0.4823660714285714,0.5698453780158581,0.14062116272219025,proxy
|
||||||
|
tinyproxy,connect-ka-50k-2000,2,0.9177137152,2228.28,731.23,1140.0,1,4,0,10.17,10.087263,8.865509870065413,451.9196587273374,123.875,0.36144316452945013,0.9630681818181818,0.1937962435970404,0.549692208487481,0.037061126942639216,proxy
|
||||||
|
squid,connect-ka-50k-2000,2,6.67322155008,16208.14,117.76,128.59,1,0,0,10.14,10.128941,1.2156047778606647,62.03656119227663,225.32421875,0.21602222736744617,0.9638783269961977,0.2762043795620438,0.46991001752785133,0.12730606799819807,proxy
|
||||||
|
3proxy-devel-s0,connect-ka-50k-2000,2,4.59393728512,11157.87,147.25,322.22,0,0,0,10.19,10.161736000000001,1.77451268792997,90.44913900230783,382.6328125,0.4565179955226451,0.9677113010446344,0.4796875,0.5677385684886256,0.13110016753599596,proxy
|
||||||
|
3proxy-devel-s1,connect-ka-50k-2000,2,4.74266730496,11519.13,142.78,311.15,1,0,0,10.18,10.153392,1.7171771655757513,87.55934769146081,283.8359375,0.4572664359861592,0.9667616334283001,0.4762550881953867,0.5819335586000192,0.13769066566471044,proxy
|
||||||
|
3proxy-devel-s3,connect-close-1k,2,0.0390070272,3805.47,6.65,14.96,2,0,0,10.07,9.896476999999999,206.52688959593414,262.17130955480343,13.9375,0.5053516819571865,0.9572243346007605,0.42281728172817284,1.2729788932631512,0.0684276937508922,client
|
||||||
|
3proxy-devel-s,connect-close-1k,2,0.04269801472,4164.48,5.29,13.86,7,0,0,10.09,9.85948,189.04860221098355,240.1809093073078,11.8828125,0.5385057471264367,0.9563981042654028,0.4411111111111111,1.4453139722283368,0.07597581611815901,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,2,0.04018143232,3917.32,6.24,14.91,4,0,0,10.06,9.903819,200.29151613876567,254.40016184503338,9.9765625,0.5330882352941176,0.9553656220322887,0.41271676300578036,1.3079979077179131,0.0731460858170435,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,2,0.043201331200000005,4214.5,6.0,14.19,3,0,0,10.1,9.897120999999999,187.0312737029733,237.3566459860876,10.953125,0.5599851659558687,0.9582542694497154,0.428604118993135,1.4630333802168836,0.07886114476901437,client
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,2,0.03825205248,3731.04,6.28,15.82,6,0,0,10.09,9.879672000000001,211.02135641533036,267.87373563065813,22.484375,0.44795221843003413,0.9582146248812915,0.33185146443514646,1.2528398910109035,0.06841861368508263,client
|
||||||
|
tinyproxy,connect-close-1k,2,0.04185915392,4082.36,6.57,15.09,0,0,0,10.06,9.445046,192.2638000610596,244.24589686316403,5.43359375,0.6804418985270049,0.9340761374187558,0.43907420013614706,2.3151963662369273,0.07979567757178681,client
|
||||||
|
squid,connect-close-1k,2,0.05477761024,5340.78,5.48,10.46,0,0,0,10.1,9.999398999999999,147.50552213940466,187.238144673909,22.8359375,0.650164378263392,0.9582542694497154,0.46964928057553956,1.9213520885548336,0.09306991745175387,client
|
||||||
|
3proxy-devel-s0,connect-close-1k,2,0.04227858432,4120.49,5.77,13.99,3,0,0,10.08,9.858112,190.73486328125,242.38926561823692,11.8984375,0.5355841166314982,0.9563567362428842,0.4380867232901207,1.4339935516420355,0.07597512112865053,client
|
||||||
|
3proxy-devel-s1,connect-close-1k,2,0.04051697664,3949.4,6.2,14.36,2,0,0,10.08,9.900281999999999,199.02768342391306,252.76461295418642,13.765625,0.520694259012016,0.9581749049429658,0.43293907609908505,1.3438413074291025,0.0731382142491489,client
|
||||||
|
3proxy-devel-s3,socks-stream1-down,2,46.325891457081035,nan,nan,nan,0,0,0,9.96,9.218217000000001,0.17197748919040948,nan,8.60546875,0.22840880970056918,0.9104204753199269,0.2264851485148515,0.8827274057483323,0.3885852883800071,proxy
|
||||||
|
3proxy-devel-s,socks-stream1-down,2,47.027110425052,nan,nan,nan,0,0,0,9.91,8.902919,0.16856537030567917,nan,11.4375,0.24905755214878111,0.9393364928909953,0.19340432840948127,0.9370537649354916,0.392190494830395,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,2,47.27538635839602,nan,nan,nan,0,0,0,9.94,9.033750999999999,0.16818772513899916,nan,10.8046875,0.24642857142857144,0.9466666666666667,0.14006634721710284,0.9172171854117825,0.3673964938251599,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,2,10.646753524570732,nan,nan,nan,0,0,0,10.01,10.002056999999999,0.7520679021321408,nan,2.50390625,0.2390684410646388,0.9506172839506173,0.047635021804763505,0.9506947004900012,0.08745220605866004,client
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,2,22.1334669929232,nan,nan,nan,0,0,0,10.0,10.000881999999999,0.3614028341938845,nan,4.4609375,0.14628635978537136,0.9505703422053232,0.07443820224719101,0.5489529831780787,0.1938434283642727,proxy
|
||||||
|
dante,socks-stream1-down,2,11.255403465689072,nan,nan,nan,0,0,0,10.01,10.007966,0.7114002464584963,nan,17.24609375,0.08782267115600449,0.9506172839506173,0.2443812968225265,0.36699975073959795,0.08927367809307876,proxy
|
||||||
|
3proxy-devel-s0,socks-stream1-down,2,22.52441507438396,nan,nan,nan,0,0,0,10.01,10.003212,0.35547495465375395,nan,7.24609375,0.14901408450704226,0.9506172839506173,0.07780082987551867,0.5545937668783075,0.19382110019983345,proxy
|
||||||
|
3proxy-devel-s1,socks-stream1-down,2,47.311910597990824,nan,nan,nan,0,0,0,9.94,9.134464000000001,0.16805578571946966,nan,8.7421875,0.23529411764705882,0.906934306569343,0.22131916223819945,0.9213948428937545,0.39415165905280936,client
|
||||||
|
3proxy-devel-s3,socks-stream16,2,37.54713687338103,nan,nan,nan,0,0,1733,10.03,9.988076,0.2133885109881472,nan,73.0078125,0.1800232288037166,0.9516129032258065,0.35352160598843146,0.34502551468951453,0.9661758186853967,origin
|
||||||
|
3proxy-devel-s,socks-stream16,2,38.306456553814904,nan,nan,nan,0,0,1703,10.04,9.991670000000001,0.20930665989121938,nan,93.26953125,0.18112066961171822,0.952561669829222,0.3582191780821918,0.3460746803744333,0.9656490810966609,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,2,24.211233280958893,nan,nan,nan,0,0,1841,10.04,10.000466,0.33110055930593435,nan,36.44140625,0.1593165550681136,0.952561669829222,0.3178082191780822,0.22913825643139032,0.8051339295799728,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,2,8.7067603552576,nan,nan,nan,0,0,1084,10.05,10.000983,0.921867591303322,nan,31.0859375,0.0906992845603508,0.9535104364326376,0.2812383439015293,0.08370651051074751,0.6289527575740655,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,2,20.975009659481056,nan,nan,nan,0,0,1827,10.04,9.998661,0.38224258757123464,nan,72.74609375,0.1410845588235294,0.952561669829222,0.27101073676416143,0.19679081135539475,0.5677011410273438,proxy
|
||||||
|
dante,socks-stream16,2,14.505998930978754,nan,nan,nan,0,0,0,10.03,10.022415,0.5529545494832501,nan,56.87890625,0.19682203389830508,0.9525166191832859,0.53125,0.14648295176919257,0.7675205269420502,proxy
|
||||||
|
3proxy-devel-s0,socks-stream16,2,20.929402628851772,nan,nan,nan,0,0,1883,10.05,10.006026,0.383196972618182,nan,78.671875,0.14540466392318244,0.9535104364326376,0.26072234762979685,0.1959123254963033,0.5631600640672613,proxy
|
||||||
|
3proxy-devel-s1,socks-stream16,2,20.91369770349217,nan,nan,nan,0,0,1869,10.05,10.003998,0.3834748612849402,nan,66.6796875,0.1329923273657289,0.9535104364326376,0.26604477611940297,0.19686918156411037,0.5651514411751838,proxy
|
||||||
|
3proxy-devel-s3,socks-ka-1k,2,0.16517169152,16044.33,3.83,7.0,0,0,0,10.06,10.063925999999999,48.725056490842434,62.15823782013655,5.3671875,0.4167984536988227,0.9562737642585551,0.44766888677450045,0.44782782814414845,0.17189232987710443,proxy
|
||||||
|
3proxy-devel-s,socks-ka-1k,2,0.2004877312,19472.8,3.07,6.81,0,0,0,10.09,10.089246000000001,40.26181528259022,51.34755526605056,5.54296875,0.44325672545875644,0.9591254752851711,0.4815347721822542,0.5661238765560428,0.21099430067447625,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,2,0.16601055232,16127.17,3.83,6.88,0,0,0,10.06,10.061591,48.47884599821565,61.838813383246965,4.70703125,0.4191355873126525,0.9562737642585551,0.4517873941674506,0.4566512851686188,0.2071567101016297,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,2,0.20233322496,19650.43,3.04,6.75,0,0,0,10.09,10.088166000000001,39.89458479493807,50.886607088822096,4.8984375,0.44068400427502674,0.9591254752851711,0.4825124910778016,0.5726136427753334,0.22707955041523217,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,2,0.2021654528,19635.42,3.05,6.73,0,0,0,10.05,10.036256999999999,39.76940614059259,50.9541868624389,5.5078125,0.4389245014245014,0.9535104364326376,0.4837187352524776,0.5725613799082707,0.24129705102757557,proxy
|
||||||
|
dante,socks-ka-1k,2,0.28420603904,27601.84,1.2,4.4,0,0,0,10.06,10.060935,28.31748412941817,36.19486220047492,44.6328125,0.46792521994134895,0.9562737642585551,0.5175498967653132,0.7833537063240784,0.2658580187185052,proxy
|
||||||
|
3proxy-devel-s0,socks-ka-1k,2,0.20241711104,19662.01,3.05,6.7,0,0,0,10.11,10.08668,39.95709630695063,50.97847407459699,5.5859375,0.44116076197258325,0.959203036053131,0.4827831868914747,0.5707868149183478,0.21186494514496804,proxy
|
||||||
|
3proxy-devel-s1,socks-ka-1k,2,0.1820327936,17681.02,3.43,6.71,0,0,0,10.06,10.048494,44.21181393109159,56.43537140196458,5.2578125,0.42634836427939876,0.9553656220322887,0.4673202614379085,0.5013007790556981,0.20331410710526,proxy
|
||||||
|
3proxy-devel-s3,socks-ka-50k-2000,2,4.33112219648,10519.63,168.07,327.41,0,0,0,10.15,10.140691,1.8748027951276245,95.55189456342669,170.578125,0.4296060766649002,0.9657469077069457,0.4588397156615455,0.5059681487436836,0.12919026307440684,proxy
|
||||||
|
3proxy-devel-s,socks-ka-50k-2000,2,4.68428259328,11377.36,143.36,315.04,1,0,0,10.16,10.140665,1.7351643155902474,88.41317495540181,265.90625,0.4551866506107001,0.966698382492864,0.48363393453573816,0.5402524969530409,0.13396967317365394,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,2,4.33573593088,10530.56,165.26,321.56,1,0,0,10.12,10.098047000000001,1.867272391369278,95.17092208586072,168.01953125,0.4298570672313393,0.9619771863117871,0.4587830080367394,0.5060797821536711,0.1254143632992636,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,2,3.36064413696,8161.93,217.59,385.31,0,0,0,10.15,10.132843999999999,2.416203462513963,123.17213761300891,157.77734375,0.4294172062904718,0.964828897338403,0.42759250799451803,0.4841766186975388,0.09785637315182019,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,2,4.5493937766400006,11049.64,147.58,819.41,1,2,0,10.19,10.165403,1.7918870953441053,91.4065303193398,258.171875,0.45407901487942537,0.9677113010446344,0.47594424460431656,0.5265875431657105,0.13290892595886966,proxy
|
||||||
|
dante,socks-ka-50k-2000,2,6.03929444352,14668.44,185.18,196.77,0,0,0,10.18,10.089166,1.3485018947433987,68.76519859497434,782.77734375,0.4879766403297836,0.9658444022770398,0.5115812917594654,0.6748043904992749,0.164226206729975,proxy
|
||||||
|
3proxy-devel-s0,socks-ka-50k-2000,2,4.60232589312,11178.21,151.91,341.19,1,0,0,10.19,10.166181,1.771278303473988,90.27285613040397,258.984375,0.4459694232105629,0.9686311787072244,0.4743154559855171,0.5289716467273416,0.13683996797928155,proxy
|
||||||
|
3proxy-devel-s1,socks-ka-50k-2000,2,4.70953230336,11438.58,150.13,314.92,0,0,0,10.14,10.113971,1.7224640319830744,87.82946877896251,159.80859375,0.44932079414838033,0.9638783269961977,0.4752610077167499,0.5460713349522849,0.13682493628252596,proxy
|
||||||
|
3proxy-devel-s3,socks-close-1k,2,0.036909875200000004,3596.8,6.43,15.54,6,0,0,10.08,9.931706,218.4781161221591,277.6018286469665,6.6875,0.4438568658558082,0.9572649572649573,0.40705346985210467,0.5821492080918138,0.06460003426911265,proxy
|
||||||
|
3proxy-devel-s,socks-close-1k,2,0.0402653184,3925.49,5.7,14.26,7,0,0,10.09,9.916346,200.4702885945638,254.6050971486248,7.1328125,0.460967855881314,0.9582146248812915,0.4207068418667875,0.6598413980686508,0.07311796004135394,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,2,0.03758096384,3665.18,6.22,15.2,6,0,0,10.07,9.935191,214.36384746006556,272.4861998051737,8.87109375,0.46267376008237515,0.9554079696394687,0.39114131708460276,0.6038537286187339,0.06552980167614127,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,2,0.04018143232,3915.19,5.33,14.27,10,0,0,10.08,9.935413,200.6897100078288,255.0155589849976,9.05859375,0.4739032425871337,0.9581749049429658,0.4051222351571595,0.674987565923611,0.07311088397998922,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,2,0.036909875200000004,3600.32,6.51,16.22,4,0,0,10.08,9.900264,218.4781161221591,277.25059823417774,9.65625,0.37317317317317317,0.9572649572649573,0.3313486927258607,0.5963686916237756,0.0655461673742417,proxy
|
||||||
|
dante,socks-close-1k,2,0.03883925504,3787.16,6.36,17.8,4,0,0,10.11,10.075226,208.2429230856844,264.34136903205564,58.796875,0.4398164489939993,0.9601139601139601,0.41672270791302396,0.6239045780420446,0.06841787895162446,proxy
|
||||||
|
3proxy-devel-s0,socks-close-1k,2,0.04034920448,3932.97,5.43,14.13,9,0,0,10.08,9.904237,199.85524135914764,254.12832471952603,7.234375,0.4634189236721773,0.9572649572649573,0.422554347826087,0.6629639173206227,0.0731394581489493,proxy
|
||||||
|
3proxy-devel-s1,socks-close-1k,2,0.03825205248,3728.28,5.93,14.96,8,0,0,10.08,9.915602,210.81221731085532,267.9212184036361,6.44140625,0.45283681714386087,0.9563567362428842,0.41297935103244837,0.6141260772879163,0.06741361913388966,proxy
|
||||||
|
3proxy-devel-s3,relay-stream1-down,2,47.515875485021155,nan,nan,nan,0,0,0,9.92,8.856588,0.16699932645185206,nan,11.48046875,0.23696795791487327,0.8928892889288929,0.13513513513513514,0.9392728728296736,0.3455897089903411,client
|
||||||
|
3proxy-devel-s,relay-stream1-down,2,48.06208362326695,nan,nan,nan,0,0,0,9.93,8.901803,0.16526737686801388,nan,9.68359375,0.23799334284355683,0.8962093862815884,0.27710843373493976,0.9511202484198636,0.42464934039343527,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,2,48.05569851364588,nan,nan,nan,0,0,0,9.93,9.058762,0.16528973241898587,nan,8.01171875,0.2500625782227785,0.9484240687679083,0.23747560182173064,0.9452533400438073,0.4213000036250918,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,2,10.241677332125732,nan,nan,nan,0,0,0,10.0,10.001362,0.7810360586028274,nan,4.44921875,0.20724958494742668,0.998003992015968,0.10032362459546926,0.7280334901619149,0.08577389358177498,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,2,22.02643841063748,nan,nan,nan,0,0,0,10.01,10.003057,0.3635206666721208,nan,6.3828125,0.1497326203208556,0.9506172839506173,0.14221652786675207,0.5583675014885868,0.1947565877654288,proxy
|
||||||
|
nginx,relay-stream1-down,2,13.14172160542272,nan,nan,nan,0,0,0,10.01,10.001644,0.6092851612986062,nan,30.65625,0.13676936366253958,0.9506172839506173,0.06191117092866756,0.5184911147412186,0.10927526396986195,proxy
|
||||||
|
haproxy,relay-stream1-down,2,12.704837847236734,nan,nan,nan,0,0,0,10.01,10.001951,0.6302370850723529,nan,30.2578125,0.1363244176013805,0.9506172839506173,0.060503059143439834,0.5118303652365302,0.11498554328245959,proxy
|
||||||
|
haproxy-splice,relay-stream1-down,2,46.9117938796214,nan,nan,nan,0,0,0,9.95,9.208214,0.16966070214563725,nan,45.06640625,0.23556304138594802,0.9095063985374772,0.20484230646702772,0.9286627124166364,0.3825637733782722,client
|
||||||
|
haproxy-splice-response,relay-stream1-down,2,47.41127990327572,nan,nan,nan,0,0,0,9.94,9.137848,0.1677034737433216,nan,42.73828125,0.23529411764705882,0.9077625570776255,0.1331702202027263,0.9335926982776344,0.348486607437065,client
|
||||||
|
haproxy-splice-auto,relay-stream1-down,2,30.21036209305237,nan,nan,nan,0,0,0,9.98,9.630581,0.2642494236240291,nan,40.6640625,0.20199778024417314,0.9774730656219393,0.14028403186698996,0.7024742376501962,0.24456841526450593,proxy
|
||||||
|
3proxy-devel-s0,relay-stream1-down,2,21.43216432954579,nan,nan,nan,0,0,0,10.0,10.001417,0.37322883390977224,nan,5.7734375,0.15847482871611557,0.998003992015968,0.07746219107340464,0.5545237707913476,0.19666959183719615,proxy
|
||||||
|
3proxy-devel-s1,relay-stream1-down,2,45.61095190743546,nan,nan,nan,0,0,0,9.96,9.441464,0.1746747799720709,nan,8.64453125,0.23524720893141945,0.9669902912621359,0.2884731442365721,0.848178353912882,0.4379772500091815,proxy
|
||||||
|
3proxy-devel-s3,relay-stream16,2,37.747268305485086,nan,nan,nan,0,0,1724,10.04,9.988981,0.2124955505632861,nan,78.55859375,0.17746083703530513,0.9516587677725118,0.359106529209622,0.35156480510927923,0.9175985354230523,origin
|
||||||
|
3proxy-devel-s,relay-stream16,2,38.258134507424735,nan,nan,nan,0,0,1694,10.04,9.995517,0.2094875457233693,nan,94.75390625,0.18902158934313276,0.952561669829222,0.3523972602739726,0.36020182471392215,0.9860385010278905,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,2,24.33827958156991,nan,nan,nan,0,0,1725,10.04,9.997398,0.3294089968983164,nan,52.18359375,0.15334723187398658,0.952561669829222,0.3163159710244912,0.2273312765907411,0.8074170542096334,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,2,8.848130353756607,nan,nan,nan,0,0,972,10.05,10.017622,0.905943275190965,nan,18.796875,0.09888102306462662,0.9544159544159544,0.28350515463917525,0.08367902006843249,0.6486355405071952,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,2,20.947968682540424,nan,nan,nan,0,0,1823,10.04,9.996551,0.3826473963380823,nan,65.40234375,0.13534183082271148,0.952561669829222,0.2645522388059702,0.1967555443807103,0.5678853436608029,proxy
|
||||||
|
nginx,relay-stream16,2,13.550449432084593,nan,nan,nan,0,0,1802,10.04,10.031569,0.5910882096901766,nan,74.578125,0.11026878015161957,0.952561669829222,0.2974845060153117,0.12640227352703723,0.6026879637984844,proxy
|
||||||
|
haproxy,relay-stream16,2,8.64788894104723,nan,nan,nan,0,0,8,10.03,10.009495,0.9273133765761138,nan,50.2109375,0.1684572410829394,0.9516129032258065,0.700188560653677,0.09224110425016349,1.3256094559782416,origin
|
||||||
|
haproxy-splice,relay-stream16,2,22.9085741012739,nan,nan,nan,0,0,0,10.02,10.010742,0.34960091647211755,nan,52.55078125,0.3565185047424214,0.9506641366223909,0.7314112291350531,0.26325072219227785,1.205443575985577,origin
|
||||||
|
haproxy-splice-response,relay-stream16,2,9.372026451214081,nan,nan,nan,0,0,58,10.01,10.005052,0.8541481390188288,nan,45.3515625,0.17459634015069966,0.9506172839506173,0.6903618315722062,0.1026834002237213,1.364328984922676,origin
|
||||||
|
haproxy-splice-auto,relay-stream16,2,15.548183575496077,nan,nan,nan,0,0,22,10.03,10.010011,0.5156212032183863,nan,54.6640625,0.26299939771130293,0.9516129032258065,0.7131901840490797,0.17502524813664633,1.267630137200444,origin
|
||||||
|
3proxy-devel-s0,relay-stream16,2,20.517980289208445,nan,nan,nan,0,0,1926,10.03,9.995439000000001,0.3903110700434442,nan,59.421875,0.14802104781514527,0.9525166191832859,0.2601047904191617,0.20162290767689822,0.558619249924013,proxy
|
||||||
|
3proxy-devel-s1,relay-stream16,2,20.631823797545934,nan,nan,nan,0,0,1909,10.04,10.003175,0.38833718342678536,nan,58.1484375,0.13922294172062905,0.952561669829222,0.26262626262626265,0.20055137103549897,0.5600810979823052,proxy
|
||||||
|
3proxy-devel-s3,relay-ka-1k,2,0.1681915904,16334.93,3.79,7.19,0,0,0,10.03,10.023293,47.707498222217886,61.284843152350575,4.796875,0.4203843514070007,0.9525166191832859,0.4563585171281089,0.41860850976023467,0.19382701435730884,proxy
|
||||||
|
3proxy-devel-s,relay-ka-1k,2,0.20585644032,19997.9,3.0,6.75,0,0,0,10.11,10.104319,39.2895164583015,50.05644346741133,5.29296875,0.44719642242862057,0.9610266159695817,0.4881291547958215,0.5099680195187029,0.21474744530085013,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,2,0.16970153984,16480.62,3.76,7.15,0,0,0,10.01,10.007424,47.18872915089749,60.63689946147649,4.15625,0.41825683341928827,0.9515209125475285,0.4504739336492891,0.416705705998674,0.1748764908282581,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,2,0.20669530112,20077.24,2.99,6.68,0,0,0,10.11,10.102267999999999,39.13006225189606,49.8587089997189,4.53515625,0.44565217391304346,0.9610266159695817,0.4884825457136072,0.5091117475545615,0.21386899208004423,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,2,0.20694695936000002,20096.93,2.98,6.91,0,0,0,10.11,10.100256,39.08247806593914,49.812280131256095,5.2890625,0.4341248900615655,0.9601139601139601,0.4910207939508507,0.5090505471546831,0.22237444497422362,proxy
|
||||||
|
nginx,relay-ka-1k,2,0.46070235136000004,44749.63,1.4,1.82,0,0,0,10.02,10.011409,17.39952048505212,22.36282682200127,29.921875,0.46474871248446104,0.9524714828897338,0.5242768595041323,0.6897059908224594,0.34586825166572066,proxy
|
||||||
|
haproxy,relay-ka-1k,2,0.47974449152,46596.43,1.31,1.97,0,0,0,10.11,10.101228,16.858974189311397,21.48202606740809,29.375,0.5024530536288276,0.959203036053131,0.5599813650128116,0.7683103763891459,0.37225989566688483,proxy
|
||||||
|
haproxy-splice,relay-ka-1k,2,0.32707182592,31765.01,1.97,2.52,0,0,0,10.02,10.00958,24.5083781748926,31.508145893406873,35.44140625,0.4762700534759358,0.9515669515669516,0.525224602626123,0.6058084692550867,0.2754413964396074,proxy
|
||||||
|
haproxy-splice-response,relay-ka-1k,2,0.40793800704,39622.2,1.57,2.35,0,0,0,10.02,10.006771,19.650044520646976,25.270421249347432,35.421875,0.44477611940298506,0.9506641366223909,0.45620814013395156,0.7339228558868418,0.30674145328173186,proxy
|
||||||
|
haproxy-splice-auto,relay-ka-1k,2,0.47764733952,46390.54,1.32,1.98,0,0,0,10.1,10.098686,16.91624621654922,21.55604785869477,35.41796875,0.5040309035942224,0.9600760456273765,0.5626450116009281,0.7552226327675691,0.33156042671687225,proxy
|
||||||
|
3proxy-devel-s0,relay-ka-1k,2,0.20669530112,20076.38,2.98,6.98,0,0,0,10.1,10.10289,39.09135793710684,49.811112316660584,5.18359375,0.4483704974271012,0.9600760456273765,0.48908400569530136,0.5098523071644853,0.22519098995046322,proxy
|
||||||
|
3proxy-devel-s1,relay-ka-1k,2,0.18614321152000002,18076.12,3.37,6.91,0,0,0,10.11,10.104291,43.45041612828836,55.376020156652245,5.015625,0.4331725800895625,0.9610266159695817,0.4732059645852749,0.4615208335772256,0.22429679143585277,proxy
|
||||||
|
3proxy-devel-s3,relay-ka-50k-2000,2,4.75474690048,11548.53,49.0,566.14,0,401,0,10.34,10.296945,1.7397350843564203,88.98757272195256,78.5078125,0.48232123037894403,0.9819563152896487,0.5174097664543524,0.48679013738217664,0.1481303189894388,proxy
|
||||||
|
3proxy-devel-s,relay-ka-50k-2000,2,5.12560726016,12449.36,46.53,662.74,0,368,0,10.34,10.297929,1.6138575548493708,82.48442448367463,133.08203125,0.4955877718247715,0.9810246679316889,0.5270069900444821,0.5228851585384094,0.14812187861172357,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,2,4.72136024064,11467.45,52.94,595.95,0,486,0,10.31,10.276153,1.7469541783750755,89.2331660031158,167.91015625,0.48407542386309615,0.9809705042816366,0.5198899703766399,0.4834175116767313,0.15211168064991298,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,2,3.7494561177600003,9106.61,65.78,441.33,0,502,0,10.29,10.252582,2.1955184275947626,112.16114580948955,122.09765625,0.5,0.9781368821292775,0.48879581151832463,0.4605328106207952,0.10929822284693676,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,2,5.00556627968,12157.61,50.28,166.67,0,503,0,10.36,10.318249,1.6557567190039968,84.63015153371727,133.1484375,0.4892302819132087,0.9838556505223172,0.5227515488143559,0.5077283196280634,0.1462428100956909,proxy
|
||||||
|
nginx,relay-ka-50k-2000,2,6.21822345216,15103.0,39.5,68.99,0,459,0,10.18,10.149419,1.309698833220773,67.02748258470615,89.5390625,0.4877525478276417,0.967680608365019,0.4702048417132216,0.6564934919108749,0.1567884896441369,proxy
|
||||||
|
haproxy,relay-ka-50k-2000,2,4.67128025088,11262.56,176.16,980.58,0,0,0,10.11,10.079884,1.731431120724632,89.15972908141669,155.15234375,0.5243113329635792,0.9601139601139601,0.3836144578313253,0.8081004286617971,0.11679890126041535,proxy
|
||||||
|
haproxy-splice,relay-ka-50k-2000,2,8.41813590016,20356.44,93.12,1190.0,0,321,0,10.13,10.093404,0.9626834368219184,49.388614778555684,153.21875,0.5361979602073232,0.9620132953466287,0.573187414500684,0.7824314271622131,0.23262014231283312,proxy
|
||||||
|
haproxy-splice-response,relay-ka-50k-2000,2,9.96432412672,24301.02,81.48,1250.0,0,63,0,10.11,10.083693,0.8116957956346972,41.34867856003534,160.8984375,0.5364090204854536,0.9601139601139601,0.5154991457163778,0.8512152718805786,0.24604061781491915,proxy
|
||||||
|
haproxy-splice-auto,relay-ka-50k-2000,2,7.3014444032,17828.5,82.79,674.88,0,0,0,10.11,10.085289000000001,1.107726026983822,56.32437491643268,161.14453125,0.5102078352032371,0.9610266159695817,0.44764207980652965,0.8228658666929217,0.17869853355229307,proxy
|
||||||
|
3proxy-devel-s0,relay-ka-50k-2000,2,4.989795696640001,12119.32,49.54,175.14,0,506,0,10.35,10.310984999999999,1.6593865768042444,84.6847436547808,131.03515625,0.4894795127353267,0.9829059829059829,0.5219522591645354,0.504790388079345,0.14708785037932778,proxy
|
||||||
|
3proxy-devel-s1,relay-ka-50k-2000,2,5.12007077888,12435.72,45.87,290.32,0,460,0,10.34,10.301563999999999,1.6156026659087463,82.57334973087796,79.75,0.4851994851994852,0.9819563152896487,0.5241762943945228,0.5201769026224573,0.14815788014977202,proxy
|
||||||
|
3proxy-devel-s3,relay-close-1k,2,0.05234491392,5101.54,12.43,17.6,0,0,0,10.01,9.90049,152.9852549235026,195.83292575564903,6.859375,0.31505776385353434,0.9515209125475285,0.43713251922207147,0.2720074625635447,0.08738806949702373,proxy
|
||||||
|
3proxy-devel-s,relay-close-1k,2,0.05729419264,5587.84,11.24,16.97,0,0,0,10.04,9.889648,140.18872820964495,179.17692829353606,9.0390625,0.3432406519654842,0.9534662867996201,0.45668233713901946,0.3016402798741808,0.09694167323093669,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,2,0.05360320512,5225.66,12.14,16.98,0,0,0,10.02,9.908672000000001,149.54329656323358,191.17029801198154,8.16796875,0.34952363160844385,0.9524714828897338,0.428604489701458,0.27872141388856664,0.09121115472454075,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,2,0.05695864832,5557.07,11.29,17.06,0,0,0,10.02,9.882494,140.73367673623895,179.8309373822215,9.44921875,0.37312614259597804,0.9533777354900095,0.43817887681996764,0.2977506966080021,0.0969301619531806,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,2,0.05142216704,5016.49,12.46,20.16,0,0,0,10.02,9.865003999999999,155.8860791254588,199.3077932927557,13.0078125,0.2778584768624196,0.9524714828897338,0.3633324762149653,0.26834478667383826,0.08744215275638388,proxy
|
||||||
|
nginx,relay-close-1k,2,0.09009364992,8784.89,7.17,7.92,0,0,0,10.02,9.95522,88.97408426806912,113.94132362974756,29.7578125,0.4754416961130742,0.9506641366223909,0.5314099581200559,0.5058694318637862,0.1584919459724907,proxy
|
||||||
|
haproxy,relay-close-1k,2,0.09957277696,9705.36,6.46,7.23,0,0,0,10.03,9.956313,80.58427458765533,103.17125605603958,29.62109375,0.5064133016627078,0.9525166191832859,0.5395119767181553,0.4195520225182738,0.16340796643757274,proxy
|
||||||
|
haproxy-splice,relay-close-1k,2,0.10334765056,10077.68,6.21,6.97,0,0,0,10.02,9.960196999999999,77.56344683758624,99.2305178406964,35.7421875,0.4924731182795699,0.9524714828897338,0.5447172292854011,0.4841230717569967,0.1662520651179773,proxy
|
||||||
|
haproxy-splice-response,relay-close-1k,2,0.10418651136,10157.14,6.17,6.86,0,0,0,10.02,9.953429999999999,76.93894243470712,98.47181956660606,35.70703125,0.4936014625228519,0.9515669515669516,0.5456977262594739,0.49165404660505124,0.16818423608343344,proxy
|
||||||
|
haproxy-splice-auto,relay-close-1k,2,0.098566144,9611.91,6.53,7.24,0,0,0,10.01,9.952599,81.2449353806516,103.992436913679,35.5625,0.5059974747474747,0.9515209125475285,0.541993281075028,0.4165416550916888,0.1662165629327358,proxy
|
||||||
|
3proxy-devel-s0,relay-close-1k,2,0.057881395200000005,5640.22,11.16,16.36,0,0,0,10.03,9.905123,138.62831005151722,177.25232389637011,10.33984375,0.3466082317073171,0.9534220532319392,0.45748716804284756,0.29971541451298195,0.09789294245583754,proxy
|
||||||
|
3proxy-devel-s1,relay-close-1k,2,0.05343543296,5213.76,12.13,16.89,0,0,0,10.02,9.917363,150.01282025730964,191.74464665020955,7.10546875,0.31806615776081426,0.9524714828897338,0.4401535682023487,0.27781054030588503,0.08931930490242795,proxy
|
||||||
|
166
bench/data/skylake-auto-http.csv
Normal file
166
bench/data/skylake-auto-http.csv
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
direct,http-ka-1k,0,1.3600450150399999,133027.94,0.456,0.733,0,0,0,8.33,0.0,4.899837818826906,6.199803362779298,0.0,0.6059063136456212,0.8465447154471545,0.9591254752851711,1.789334140795339,0.8502841923673881,origin
|
||||||
|
3proxy-devel-s0,http-ka-1k,0,0.19067305984,19003.26,3.2,5.84,0,0,0,10.11,7.544352,42.41815811204218,52.67710135261874,9.77734375,0.18201183431952664,0.9610266159695817,0.28332280480101074,0.398624467081432,0.2557390151765256,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,0,0.18673041408000002,18612.93,3.28,5.82,0,0,0,10.09,7.5445720000000005,43.22809457564718,53.67592297052878,9.73046875,0.184975194897236,0.9600380589914367,0.27506345177664976,0.39960124433869515,0.21961962684773406,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,0,0.19201523712000002,19139.17,3.21,6.51,0,0,0,10.02,7.455821,41.74668698292103,52.296996837127736,9.6875,0.18536009445100354,0.9524714828897338,0.2810126582278481,0.4062353064248754,0.22627269494537144,proxy
|
||||||
|
3proxy-devel-s,http-ka-1k,0,0.19620954112,19555.42,3.12,6.4,0,0,0,10.11,7.521827,41.221237019526235,51.186763335898576,9.65625,0.18840236686390532,0.9610266159695817,0.29255989911727615,0.4119494176039981,0.25288014927588304,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-1k,0,0.18496880640000002,18433.96,3.22,6.05,0,0,0,10.02,7.445613000000001,43.337036963222786,54.29746557638223,9.65625,0.17668012348610782,0.9524714828897338,0.27148313176320815,0.39293665997265126,0.21867221847992455,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-1k,0,0.16953376768,16899.11,3.56,9.2,0,0,0,10.12,7.48545,47.75449817927387,59.293979786143254,10.0,0.16839867737364195,0.9610636277302944,0.25159033078880405,0.3605771007540076,0.19584606610870392,proxy
|
||||||
|
nginx,http-ka-1k,0,0.38579208192000003,37730.82,1.66,2.15,0,0,0,10.1,6.8264819999999995,20.943923887156174,26.50320400119658,31.453125,0.23371104815864022,0.9609895337773549,0.43245749613601236,0.5746338190027497,0.3403722744318059,proxy
|
||||||
|
haproxy,http-ka-1k,0,0.34829500416000003,34722.28,1.76,2.66,0,0,0,10.0,6.970126,22.96903459552625,28.782445011138805,29.5546875,0.21905211035133224,0.9514747859181731,0.36318407960199006,0.5461369508563274,0.3337317175031502,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,0,0.38310772736000004,38187.25,1.61,2.36,0,0,0,10.09,6.984500000000001,21.069791663102826,26.162398747108913,35.6640625,0.23307383816937957,0.9600380589914367,0.4015527950310559,0.5822208142405048,0.33653712352780385,proxy
|
||||||
|
haproxy-splice,http-ka-1k,0,0.38705037312,38580.09,1.59,2.39,0,0,0,10.11,6.985397,20.896504852334605,25.9471612111755,35.65625,0.23602923838717282,0.9601139601139601,0.4025569067664484,0.5879562133102925,0.37741918592634266,proxy
|
||||||
|
direct,http-ka-1m,0,65.45530159104,7801.54,1.38,2.75,0,0,0,6.14,0.0,0.07504357753463303,78.592,0.0,0.9422391252674115,0.5926640926640927,0.514375,3.537150340300975,0.47599390538266045,client
|
||||||
|
3proxy-devel-s0,http-ka-1m,0,15.71958030336,1878.43,8.02,19.54,0,0,0,10.02,6.796556000000001,0.5099372785599504,532.7803477428617,16.328125,0.3089794956398774,0.9524714828897338,0.13264346190028223,0.954219637052453,0.08651414587837984,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,0,28.00318676992,3333.09,4.57,9.67,0,0,0,10.02,6.11332,0.2862531348971502,300.17075581917857,16.46875,0.4801316717611098,0.9524714828897338,0.22111491747119277,1.6155562147095404,0.14928580410903053,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,0,27.917287424,3327.14,4.57,9.66,0,0,0,10.01,6.124368,0.2868473529815674,300.4652558907399,16.359375,0.476807157993878,0.9515209125475285,0.2196639701306783,1.6059390545304326,0.16732957707159057,client
|
||||||
|
3proxy-devel-s,http-ka-1m,0,25.42620639232,3033.02,4.92,12.44,0,0,0,10.02,6.163347,0.315265276947537,329.974313376803,16.5859375,0.44575471698113206,0.9524714828897338,0.20436817472698907,1.4984319610741466,0.17396946572152244,client
|
||||||
|
3proxy-devel-s0-b16384,http-ka-1m,0,9.706626088959998,1156.85,13.51,27.43,0,0,0,10.01,6.471756,0.8250034488407912,864.1229281767955,16.765625,0.2811254396248535,0.9524262607040913,0.09210939955988683,0.7069224174591403,0.057049900150641715,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-1m,0,27.31599200256,3258.22,4.65,10.12,0,0,0,10.01,6.116179000000001,0.2931616028899667,306.86695278969955,16.7421875,0.48105436573311366,0.9524262607040913,0.22897196261682243,1.6278279779609306,0.15497162192178293,client
|
||||||
|
nginx,http-ka-1m,0,5.880414208,700.8,22.13,36.6,0,0,0,10.02,6.220414,1.3631692796562946,1428.5714285714287,45.96484375,0.2562945368171021,0.9515669515669516,0.058341217281614635,0.5603622091305573,0.042766941323083306,proxy
|
||||||
|
haproxy,http-ka-1m,0,7.3014444032,873.29,20.38,25.65,0,0,0,10.09,5.305899,1.1055346797494328,1143.9909297052154,45.28515625,0.347979797979798,0.9591254752851711,0.06354726525450521,0.830455939035519,0.05418485264890643,proxy
|
||||||
|
haproxy-splice-response,http-ka-1m,0,26.11340115968,3108.63,4.83,8.1,0,0,0,10.0,5.860853,0.3063561100708811,321.58476974530487,51.3125,0.5038954511183714,0.999000999000999,0.21225024566000655,1.563442225121735,0.18859869250991046,client
|
||||||
|
haproxy-splice,http-ka-1m,0,28.43268349952,3391.14,4.51,6.59,0,0,0,9.99,5.8640229999999995,0.2810849704050946,294.2996022978347,53.203125,0.49796211939582835,0.9514285714285714,0.2209737827715356,1.6590545348119898,0.17206604242131368,client
|
||||||
|
direct,http-ka-50k-2000,0,35.47642986496,86201.04,20.37,429.08,0,0,0,8.7,0.0,0.19618659562117827,9.996920488860903,0.0,0.9080899952130206,0.9071949947862357,0.9393650793650794,2.966616170827844,0.728074214131675,origin
|
||||||
|
3proxy-devel-s0,http-ka-50k-2000,0,4.6456111104,11290.75,33.27,82.71,0,242,0,10.46,7.613935000000001,1.801270016180819,92.04019499146473,125.71875,0.19862851737999526,0.9952426260704091,0.24093345947650582,0.5222915311088295,0.15971151236559814,proxy
|
||||||
|
3proxy-devel-s1,http-ka-50k-2000,0,4.65752293376,11319.67,32.95,75.15,0,241,0,10.46,7.606716,1.7966631874949344,91.79948044653514,104.31640625,0.19620403321470936,0.9952426260704091,0.24348099277411248,0.517542173129173,0.16637657428046979,proxy
|
||||||
|
3proxy-devel-s3,http-ka-50k-2000,0,4.6674214912,11343.59,43.19,268.5,0,293,0,10.49,7.526193,1.7979948920024378,91.8395041192075,160.48828125,0.2031693472090823,0.997148288973384,0.2428526547282438,0.5223383412197288,0.1511801790832727,proxy
|
||||||
|
3proxy-devel-s,http-ka-50k-2000,0,4.73360760832,11504.56,35.09,89.4,0,237,0,10.47,7.625026,1.7694749318211271,90.37470544060906,131.14453125,0.2052132701421801,0.9961941008563273,0.2521113543947451,0.5385000485653003,0.16067349107655196,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-50k-2000,0,3.6190132633600003,8795.31,53.72,124.0,0,246,0,10.48,7.166804,2.3166535709836125,118.3966740476298,124.671875,0.20061219684483164,0.9971455756422455,0.20075282308657466,0.4452450617425647,0.12263819397881422,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-50k-2000,0,4.69745270784,11416.6,36.76,84.75,0,259,0,10.48,7.3577319999999995,1.7847971063140649,91.2494558119286,121.58203125,0.20524946795932844,0.9971455756422455,0.2397238782554126,0.5185120963436719,0.15116604685189897,proxy
|
||||||
|
nginx,http-ka-50k-2000,0,3.7091069132800003,9010.3,127.23,162.66,0,147,0,10.19,6.9890929999999996,2.1978336539215864,112.19130875180288,113.62109375,0.2043641482871891,0.9677113010446344,0.18332292317301688,0.43288599027217506,0.11598550614918801,proxy
|
||||||
|
haproxy,http-ka-50k-2000,0,3.0106714111999997,7220.91,258.44,682.35,0,0,0,10.16,6.037654,2.699730023596406,139.76201939610704,181.2734375,0.2437352245862884,0.9657794676806084,0.16448189762796506,0.48993647284779757,0.09696537868760313,proxy
|
||||||
|
haproxy-splice-response,http-ka-50k-2000,0,4.064280576,9834.07,194.35,490.51,0,0,0,10.14,6.205335000000001,1.9959251947078174,102.22083329132937,199.3515625,0.26570618800188944,0.9647954329210275,0.1931782945736434,0.5727612638538646,0.12265576435956994,proxy
|
||||||
|
haproxy-splice,http-ka-50k-2000,0,3.9361865318400002,9509.29,201.29,526.46,0,0,0,10.13,6.136373,2.0588455182309984,105.8416658830413,193.859375,0.2589707271010387,0.9638439581351094,0.18771437480511383,0.5556486832356339,0.1197958773106786,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,0,26.71469658112,64807.1,28.56,44.74,0,24,0,8.5,0.0,0.2545415396859025,13.0106886634043,0.0,0.7130012150668287,0.8407517309594461,0.9550063371356147,2.2385653797840916,0.7849626598999746,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,0,3.883925504,9439.43,45.07,127.14,0,259,0,10.47,7.255313999999999,2.156581013557978,110.22328901241197,150.87890625,0.17459190915542938,0.9961941008563273,0.25862068965517243,0.43763058058538495,0.17588290210665422,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,0,4.08667815936,9932.26,47.86,104.69,0,258,0,10.47,7.282763,2.049586405725607,104.55049279530272,154.9375,0.18598064668397452,0.9961941008563273,0.2740579258797882,0.4624079979730948,0.17779561503362767,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,0,3.8873648332800004,9447.78,38.69,82.72,0,213,0,10.48,7.347766999999999,2.156730937169569,110.14303881280938,129.578125,0.17541371158392435,0.9961977186311787,0.2548772813089994,0.4376479626348987,0.17296840850112818,proxy
|
||||||
|
3proxy-devel-s,http-ka-2k-50k-2000,0,4.02971951104,9793.86,45.48,104.51,0,233,0,10.48,7.263148,2.0805418285393857,106.40890260742425,155.04296875,0.17878285578972294,0.9971455756422455,0.26207767603410165,0.44906377607705494,0.17780129798021668,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-2k-50k-2000,0,3.47238039552,8439.27,57.29,130.84,0,292,0,10.52,7.084995999999999,2.42369759109865,123.88713552216308,130.07421875,0.19307746644690368,0.9971563981042654,0.23414940364092907,0.42527535787952386,0.16162955612171492,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-2k-50k-2000,0,3.99910109184,9719.37,47.64,106.46,0,283,0,10.49,7.1062829999999995,2.098471583307441,107.24655461497566,129.296875,0.19596338887585074,0.997148288973384,0.2716165413533835,0.4595346657899319,0.1806483974584205,proxy
|
||||||
|
nginx,http-ka-2k-50k-2000,0,3.49117087744,8480.89,133.75,160.25,0,136,0,10.17,6.983193,2.330450237361613,119.06573786805596,116.0703125,0.18763275902761387,0.9676498572787822,0.20903954802259886,0.4033909113876652,0.1388029814352534,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,0,2.60113956864,6279.71,291.98,795.78,0,0,0,10.17,6.036419,3.127859841928394,160.91262934717255,177.65234375,0.223687308688486,0.9685714285714285,0.16958698372966208,0.43667293010780855,0.1064765666896803,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,0,3.6314284031999997,8745.08,214.69,572.15,0,0,0,10.14,6.045192,2.2338317321227477,115.04555304689184,193.84765625,0.24289405684754523,0.9638783269961977,0.2221183800623053,0.5090130534434382,0.1435641748778478,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,0,3.48957704192,8446.63,214.31,611.94,0,0,0,10.16,6.044165,2.3292221098313663,119.41280866918186,194.22265625,0.24168043426953031,0.9648622981956315,0.22492211838006232,0.5127515770582728,0.14163180028115083,proxy
|
||||||
|
direct,http-close-1k,0,0.4764729344,46788.8,0.757,4.74,0,0,0,8.66,0.0,14.540175317038953,18.32618062080466,0.0,0.6859891465219536,0.8818737270875764,0.854052308685825,1.8744314553428238,0.5464578545569692,client
|
||||||
|
3proxy-devel-s0,http-close-1k,0,0.04479516672,4398.85,13.82,23.3,0,0,0,10.02,6.9927649999999995,178.94787734813903,227.4326440747214,33.40625,0.13361762615493958,0.9533777354900095,0.1580952380952381,0.26924498566987526,0.07890695958434675,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,0,0.04966055936,4873.5,12.18,21.84,0,0,0,10.07,7.041271,162.22128996977935,206.37360385285376,103.6640625,0.1470449172576832,0.9572243346007605,0.1680379746835443,0.29778221652775866,0.08262821267323352,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,0,0.0473956352,4657.87,12.92,22.98,0,0,0,10.03,6.982323,169.29829015141038,214.94085376307217,39.875,0.13985353177415544,0.9543292102759277,0.1623931623931624,0.27781524772257654,0.07986315605793808,proxy
|
||||||
|
3proxy-devel-s,http-close-1k,0,0.04848615424,4763.57,12.64,23.32,0,0,0,10.02,6.997204,165.32554758461288,209.99245536088523,98.53515625,0.14622641509433962,0.9524714828897338,0.16824794433902593,0.2882610779940948,0.08176018772535977,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-close-1k,0,0.04747952128,4662.41,12.74,25.2,0,0,0,10.08,6.98453,169.84164504196113,215.87818302529288,100.1875,0.1463299504366297,0.9563567362428842,0.16534684827367754,0.29301653885884005,0.08077762215339222,proxy
|
||||||
|
3proxy-devel-s-b16384,http-close-1k,0,0.04689231872,4602.57,13.01,25.31,0,0,0,10.02,6.966814,170.94484168856218,217.4573549199184,48.96875,0.14127096621781243,0.9533777354900095,0.16682554814108674,0.28255900719174465,0.08176462455871408,proxy
|
||||||
|
nginx,http-close-1k,0,0.12935233536,12704.95,4.79,6.87,0,0,0,10.09,5.446967,62.403202675350606,78.63644865640002,31.74609375,0.3000945179584121,0.9600380589914367,0.18022328548644337,0.6354576109133243,0.143539300195605,proxy
|
||||||
|
haproxy,http-close-1k,0,0.15443427328,15166.49,3.87,5.94,0,0,0,10.01,5.6752780000000005,51.8537746182866,65.94941462482623,31.234375,0.3436320754716981,0.9515209125475285,0.20348837209302326,0.7782053444283911,0.19299935475245691,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,0,0.16223567872,15930.85,3.85,5.31,0,0,0,10.11,5.734366,49.85339885660386,62.83562052505967,35.34375,0.35540316859777726,0.9601139601139601,0.2034548944337812,0.8086086389224086,0.2128643281750421,proxy
|
||||||
|
haproxy-splice,http-close-1k,0,0.153092096,15034.28,3.87,6.48,0,0,0,10.0,5.67574,52.256126926369866,66.43017524280229,35.66015625,0.3391141317084603,0.9514747859181731,0.20191082802547772,0.7544055462256464,0.17302639354987182,proxy
|
||||||
|
3proxy-devel-s0,http-ka-1k,1,0.18094227456,18033.48,3.33,8.28,0,0,0,10.11,7.470223,44.69933861319976,55.51254385820416,9.74609375,0.17515999051908035,0.9601139601139601,0.2703984819734345,0.3834250121874297,0.21669510127893213,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,1,0.16559112192,16509.84,3.65,6.6,0,0,0,10.1,7.5234820000000004,48.794886503055345,60.56789901352283,9.64453125,0.17228376148951213,0.9609895337773549,0.25616698292220114,0.3634120003449436,0.20724870276654742,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,1,0.19411238912,19350.44,3.12,5.78,0,0,0,10.09,7.48315,41.58415666611522,51.63026792476001,9.6640625,0.18600803592531318,0.9600380589914367,0.28512658227848103,0.40146279923359,0.238593486173301,proxy
|
||||||
|
3proxy-devel-s,http-ka-1k,1,0.17809014784,17756.28,3.47,6.44,0,0,0,10.11,7.518544,45.41520178458401,56.37494075333873,9.71875,0.17997165800661313,0.9610266159695817,0.263989883022447,0.3862506859635114,0.30612115613996727,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-1k,1,0.17205035008000003,17149.7,3.53,6.59,0,0,0,10.1,7.564489,46.96299656608056,58.31072109000635,9.67578125,0.18993621545003544,0.9609895337773549,0.28267766497461927,0.40144144726068937,0.23195395671347946,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-1k,1,0.18211667968,18154.57,3.36,6.59,0,0,0,10.1,7.540258000000001,44.3671607356201,55.0825966263273,9.6484375,0.18821022727272727,0.9609895337773549,0.2890995260663507,0.3967088393870003,0.23672772538703646,proxy
|
||||||
|
nginx,http-ka-1k,1,0.36305895424,35512.63,1.7,2.56,0,0,0,10.01,6.734351,22.05702381521849,28.154673507042887,31.4453125,0.2378917378917379,0.9524262607040913,0.443340577460416,0.5917041366240539,0.3498422749069793,proxy
|
||||||
|
haproxy,http-ka-1k,1,0.362807296,36168.18,1.69,2.61,0,0,0,10.09,7.066971,22.24872567061055,27.623477491930604,31.72265625,0.23695445920303607,0.9600380589914367,0.4014962593516209,0.5917575269885361,0.37365028249859283,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,1,0.34326183936,34213.33,1.65,3.01,0,0,0,10.11,7.033418,23.56218802264708,29.257027763790738,40.04296875,0.22298415701111374,0.9610266159695817,0.39445828144458284,0.5498751510887349,0.3346327499679283,proxy
|
||||||
|
haproxy-splice,http-ka-1k,1,0.34670116864,34562.84,1.76,2.83,0,0,0,10.09,7.027165999999999,23.282298215676416,28.905791185022846,37.7265625,0.2205188679245283,0.960952380952381,0.3779919179359652,0.5422840653672387,0.3498712669639821,proxy
|
||||||
|
direct,http-ka-1k,1,1.20787566592,118144.58,0.488,0.848,0,0,0,7.8,0.0,5.166094637105875,6.5366981126541255,0.0,0.5748248248248248,0.7624633431085044,0.9597846738442052,1.6446279216348743,0.8274955523605549,origin
|
||||||
|
3proxy-devel-s0,http-ka-1m,1,16.83627180032,2002.52,7.61,18.13,0,0,0,10.01,6.876953,0.47563974346433374,498.9532449406839,17.59765625,0.33427428840272877,0.9533333333333334,0.14740787008119924,1.0341252179241567,0.09316569715817984,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,1,26.1993005056,3117.52,4.89,10.29,0,0,0,10.03,6.190811,0.30626771879977865,321.14497950819674,16.36328125,0.4698539802166745,0.9525166191832859,0.2238154613466334,1.5736071107460858,0.19101386842238702,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,1,23.622320128,2811.56,5.47,12.76,0,0,0,10.03,6.226531,0.3396787426688454,356.17897727272725,16.61328125,0.43183962264150944,0.9525166191832859,0.19800436545057687,1.4404240817432268,0.14831048206321099,client
|
||||||
|
3proxy-devel-s,http-ka-1m,1,25.16850835456,2994.97,5.02,11.74,0,0,0,10.01,6.184619,0.3181753915324553,333.8113182379031,20.53515625,0.4504483246814535,0.9515209125475285,0.21673953778888194,1.5078963568180566,0.14639395758582657,client
|
||||||
|
3proxy-devel-s0-b16384,http-ka-1m,1,9.448928051200001,1126.55,13.83,28.64,0,0,0,10.01,6.461259999999999,0.8475035429000854,887.6474239602732,15.70703125,0.2805907172995781,0.9515209125475285,0.09438695515835685,0.7001550756817655,0.0579651172406187,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-1m,1,25.683904430080002,3058.7,4.99,10.86,0,0,0,10.01,6.132094,0.311790601066921,326.91051600261267,15.50390625,0.45495388980846535,0.9515209125475285,0.21439700841383608,1.5420632603300373,0.16160619905622092,client
|
||||||
|
nginx,http-ka-1m,1,5.562150420479999,662.88,23.84,32.51,0,0,0,10.01,6.244800000000001,1.4397309304175434,1508.6661642803315,43.54296875,0.24230860958740758,0.9524262607040913,0.05702583490863264,0.5318307562989794,0.059896642021744946,proxy
|
||||||
|
haproxy,http-ka-1m,1,7.8168404787200005,928.79,17.62,24.83,0,0,0,10.1,5.334113,1.0336657146831134,1076.6442809934974,45.24609375,0.35645569620253165,0.9591642924976258,0.0706847585989271,0.8648381401593038,0.05987183350663704,proxy
|
||||||
|
haproxy-splice-response,http-ka-1m,1,27.57369004032,3285.6,4.54,7.32,0,0,0,10.09,5.918747000000001,0.29274282797103357,304.0805255861612,51.328125,0.48733269598470363,0.9591254752851711,0.2085544801748361,1.6050015030888687,0.20346602162466015,client
|
||||||
|
haproxy-splice,http-ka-1m,1,27.31599200256,3257.74,4.7,7.38,0,0,0,10.0,5.876227,0.29286873415581083,306.8425897514575,51.296875,0.4888835763805881,0.9505703422053232,0.20863309352517986,1.6049162077875396,0.16826146433829575,client
|
||||||
|
direct,http-ka-1m,1,66.48609374208,7921.32,1.37,2.61,0,0,0,6.12,0.0,0.07363945938820063,77.17528373266079,0.0,0.9892794814260782,0.6232179226069247,0.5471884248602433,3.5371488184433546,0.47033761049733663,client
|
||||||
|
3proxy-devel-s0,http-ka-50k-2000,1,4.62312964096,11236.06,39.32,89.25,0,244,0,10.5,7.553409,1.8169509947498956,92.92775530794488,151.6328125,0.205937794533459,0.9962049335863378,0.24742268041237114,0.5232723284105552,0.1577637636870092,proxy
|
||||||
|
3proxy-devel-s1,http-ka-50k-2000,1,4.01696882688,9762.8,41.4,91.13,0,181,0,10.48,7.407117,2.0871458956558286,106.5657952269099,113.97265625,0.18353831598864712,0.9971455756422455,0.22791133312519513,0.46713218853692,0.14641344631364525,proxy
|
||||||
|
3proxy-devel-s3,http-ka-50k-2000,1,4.55409139712,11068.22,33.28,69.21,0,234,0,10.49,7.600071,1.842738598814044,94.20660793347163,127.2734375,0.19971637910659418,0.9962013295346629,0.24655388471177944,0.5213639616172745,0.15686188539257065,proxy
|
||||||
|
3proxy-devel-s,http-ka-50k-2000,1,4.32525017088,10512.14,42.64,86.69,0,159,0,10.47,7.434624,1.936535383870258,98.8575205363044,108.05859375,0.20382165605095542,0.9952471482889734,0.24773224898342197,0.5108253037577938,0.15968896684449163,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-50k-2000,1,3.0357533491199997,7376.85,49.2,104.6,0,173,0,10.48,7.067186,2.7617526972111692,141.13527708571814,87.13671875,0.1845899314582841,0.9961977186311787,0.18808777429467086,0.3986331292956964,0.11313580124344116,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-50k-2000,1,4.16460832768,10121.62,35.39,95.04,0,212,0,10.48,7.357576,2.013154501054969,102.86409768163169,83.3671875,0.19358669833729217,0.9961977186311787,0.22839116719242902,0.4909037614800135,0.14639574264759644,proxy
|
||||||
|
nginx,http-ka-50k-2000,1,3.73829926912,9081.08,135.73,171.07,0,145,0,10.17,6.984708,2.176390763363155,111.25697407285855,117.2421875,0.20398593200468934,0.9667300380228137,0.190625,0.43096534441746553,0.11882963076388463,proxy
|
||||||
|
haproxy,http-ka-50k-2000,1,3.08650442752,7456.36,254.76,669.35,0,0,0,10.18,6.069713,2.6385836117344197,135.55981676787047,178.984375,0.2557045401082098,0.9667616334283001,0.1685323383084577,0.5089641709559635,0.09792175014865741,proxy
|
||||||
|
haproxy-splice-response,http-ka-50k-2000,1,3.8250374758400003,9242.15,203.85,555.29,0,0,0,10.13,6.148757000000001,2.1186720525451364,108.7551666756133,195.4609375,0.25794304542245233,0.9638439581351094,0.19315707620528771,0.5489413658291393,0.11784879229808361,proxy
|
||||||
|
haproxy-splice,http-ka-50k-2000,1,3.88300275712,9391.36,205.75,522.53,0,0,0,10.15,6.137265,2.0911651389149557,107.32677036300768,193.11328125,0.2523607176581681,0.964828897338403,0.19285714285714287,0.5422818636061424,0.11884421660045762,proxy
|
||||||
|
direct,http-ka-50k-2000,1,35.04693313536,85199.39,21.08,39.51,0,6,0,8.51,0.0,0.19425380171514026,9.899815265491872,0.0,0.8712847555129435,0.8467661691542289,0.9543726235741445,2.8363218141408373,0.7718116757445137,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,1,3.9393742028800003,9574.19,44.69,238.28,0,260,0,10.48,7.293125,2.1282568164940057,108.78591596080385,156.18359375,0.18403023860146467,0.9971455756422455,0.27661567280674365,0.45667600025713834,0.18729124259334887,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,1,3.9703281664000003,9649.41,48.82,95.43,0,291,0,10.47,7.218205,2.1096492906768303,107.55449633266903,163.94921875,0.18793993430314407,0.9961941008563273,0.27639751552795033,0.44907908652621975,0.1768283738283491,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,1,3.96168790016,9628.47,46.68,155.64,0,274,0,10.49,7.288950000000001,2.118289025155433,108.32076991388034,155.375,0.18674840839424664,0.997148288973384,0.28517940717628704,0.45857653887623157,0.182475975244009,proxy
|
||||||
|
3proxy-devel-s,http-ka-2k-50k-2000,1,3.9565708492800002,9616.06,45.92,92.25,0,217,0,10.48,7.255141,2.1190066649572783,108.32601168019019,154.80859375,0.18336082960169692,0.9971455756422455,0.27267061389841074,0.44998209104177844,0.181585512545781,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-2k-50k-2000,1,3.35980527616,8164.71,51.65,110.04,0,193,0,10.48,7.120608,2.4953827114594778,127.46445468808913,101.7734375,0.19548872180451127,0.9961977186311787,0.23673469387755103,0.42621527143455123,0.15775418034568844,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-2k-50k-2000,1,3.9631978495999998,9632.21,48.71,122.16,0,204,0,10.48,7.14516,2.11546340055826,108.15831570256464,127.6328125,0.20730270906949352,0.9971455756422455,0.2828125,0.47284070718475163,0.18823353290155806,proxy
|
||||||
|
nginx,http-ka-2k-50k-2000,1,3.09631909888,7521.79,139.14,182.88,0,125,0,10.19,6.950093000000001,2.632803577302074,134.3813053053581,115.08984375,0.1791185481970304,0.9686311787072244,0.19013199245757384,0.37768964372339126,0.1273980834913824,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,1,2.87611813888,6919.1,266.59,1070.0,0,0,0,10.15,6.04155,2.8232498137792206,145.77678199549027,179.25390625,0.2432687765706188,0.9639126305792972,0.1940717628705148,0.48425987768228934,0.11789296046276437,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,1,3.5815161856,8688.67,221.48,575.49,0,0,0,10.19,6.072846,2.276130995240587,116.47178502440306,189.4140625,0.24493641073951955,0.9677113010446344,0.23177164132795533,0.5194463037925621,0.1445024347750442,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,1,3.20931364864,7729.01,240.96,599.05,0,0,0,10.13,6.004718,2.525150511055286,130.1387461459404,191.79296875,0.23205460108260767,0.9629277566539924,0.21211180124223603,0.47569296659648,0.12834146696046836,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,1,27.23009265664,66168.58,28.88,46.15,0,0,0,8.57,0.0,0.2517802670174969,12.866940520803306,0.0,0.7431614621157104,0.8493557978196233,0.9547325102880658,2.341317354972853,0.784913149107043,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,1,0.0473956352,4653.49,12.94,23.36,0,0,0,10.01,7.000635000000001,168.960706322594,214.63644745588266,40.9375,0.1467673430863615,0.9524262607040913,0.17166298516882297,0.2882793146611153,0.08271825980493554,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,1,0.04706009088,4620.48,12.88,24.86,0,0,0,10.03,6.9993620000000005,170.50540808475378,216.77112599956774,41.32421875,0.14241779039507926,0.9543292102759277,0.16782773907536416,0.28542081036894806,0.07986311985168808,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,1,0.04437573632,4360.47,13.81,26.31,0,0,0,10.04,6.9990559999999995,180.9998135485586,229.72725608639942,48.01953125,0.1382248520710059,0.9534662867996201,0.16635041113219481,0.2749441984021328,0.07985532179047579,proxy
|
||||||
|
3proxy-devel-s,http-close-1k,1,0.04798283776,4712.1,12.7,22.55,0,0,0,10.04,6.99228,167.39318420836975,212.65779886469542,44.1015625,0.14720452937013448,0.9543726235741445,0.17045454545454544,0.2911227022226755,0.0808134133153371,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-close-1k,1,0.04789895168,4706.52,12.66,23.78,0,0,0,10.02,6.967593,167.35230561104422,212.68466632705042,37.8046875,0.14474616292798112,0.9524714828897338,0.168777707409753,0.2873031460093916,0.08175373905180613,proxy
|
||||||
|
3proxy-devel-s-b16384,http-close-1k,1,0.04118806528,4043.81,15.02,26.45,0,0,0,10.03,6.915241,194.813714736348,247.78892237758782,58.3125,0.1285815770779067,0.9525166191832859,0.15031645569620253,0.25403024311366523,0.07225813705373899,proxy
|
||||||
|
nginx,http-close-1k,1,0.134217728,13182.59,4.6,6.41,0,0,0,10.02,5.394228,59.7238540649414,75.91254147915815,30.92578125,0.31642569329224934,0.9524714828897338,0.1881377551020408,0.6868222187939812,0.15114875525483798,proxy
|
||||||
|
haproxy,http-close-1k,1,0.13027508224,12795.78,4.46,6.56,0,0,0,10.12,5.753753,62.14542229253862,78.3075661203708,29.3984375,0.2986372180451128,0.9619771863117871,0.18283343969368218,0.6526015751479023,0.18348411589867125,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,1,0.1556086784,15279.37,3.88,6.33,0,0,0,10.1,5.731553,51.92512450513814,65.45053948093187,35.55859375,0.3403954802259887,0.9591642924976258,0.2036386849664858,0.7619786911440629,0.1587485394009491,proxy
|
||||||
|
haproxy-splice,http-close-1k,1,0.15451815936000002,15175.48,3.89,6.47,0,0,0,10.1,5.7296450000000005,52.29158846744367,65.8997931659957,37.13671875,0.3422232711824404,0.9609895337773549,0.20350877192982456,0.7677048880716496,0.2357558821374927,proxy
|
||||||
|
direct,http-close-1k,1,0.44224741376,43424.32,1.13,4.14,0,0,0,8.38,0.0,15.158935454257161,19.10716199362031,0.0,0.6660108214461387,0.8839662447257384,0.8777070063694268,1.7953562310887656,0.5742181809385384,client
|
||||||
|
3proxy-devel-s1,http-ka-1k,2,0.19813892096000002,19748.61,3.12,5.65,0,0,0,10.09,7.434399,40.739093363840226,50.589373724611306,9.69140625,0.18584280303030304,0.960952380952381,0.2814674256799494,0.40531085408075684,0.21771826678876172,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,2,0.19025362944,18963.28,3.22,5.63,0,0,0,10.1,7.498175000000001,42.46962343784446,52.7365573993045,9.65625,0.18516769012753898,0.9609895337773549,0.2857591952216284,0.3986259408971565,0.23384363810725675,proxy
|
||||||
|
3proxy-devel-s,http-ka-1k,2,0.17054040063999998,17002.81,3.63,6.66,0,0,0,10.1,7.500452999999999,47.3788027334143,58.81393832106587,9.62890625,0.1670616113744076,0.9609895337773549,0.255285579047018,0.3624732389505112,0.1948891063056541,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-1k,2,0.19134414847999998,19072.67,3.2,5.85,0,0,0,10.1,7.517931,42.22757823631357,52.4318515711386,9.6484375,0.18507109004739336,0.9609895337773549,0.2836901763224181,0.4043510183431332,0.28996586200173935,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-1k,2,0.18220056576,18158.97,3.4,6.25,0,0,0,10.1,7.501742,44.34673386603649,55.0717841622273,9.65625,0.1791292001893043,0.9600760456273765,0.2629724535554132,0.38625775620216607,0.21382327734008214,proxy
|
||||||
|
nginx,http-ka-1k,2,0.37320916992000003,36507.1,1.7,2.53,0,0,0,10.01,6.734161,21.457136226627473,27.37695412924329,31.46875,0.23834196891191708,0.9524262607040913,0.43831370117792934,0.5803666928314889,0.34415846569056374,proxy
|
||||||
|
haproxy,http-ka-1k,2,0.36540776448,36427.99,1.64,2.71,0,0,0,10.03,6.9398859999999996,21.959029829097076,27.48592819129987,29.5859375,0.22746578574799434,0.9525166191832859,0.38940520446096655,0.5651000949055185,0.31467750157082097,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,2,0.35433480192,35318.78,1.63,2.75,0,0,0,10.09,7.031314,22.780714613018613,28.28834486548317,35.66796875,0.22557099128796798,0.9600380589914367,0.3857098669965976,0.5508717355943078,0.355574924100843,proxy
|
||||||
|
haproxy-splice,http-ka-1k,2,0.34619785216000004,34511.32,1.75,2.93,0,0,0,10.11,7.073931,23.362363312011595,29.004050813031455,35.56640625,0.230371415138693,0.9601139601139601,0.37600994406463645,0.5546060812949691,0.32120734968674985,proxy
|
||||||
|
direct,http-ka-1k,2,1.32196073472,129296.99,0.47200000000000003,0.86,0,0,0,8.03,0.0,4.859448417248675,6.149176102295335,0.0,0.6276675872457946,0.7857142857142857,0.9582806573957017,1.8067076861587614,0.8343570564133044,origin
|
||||||
|
3proxy-devel-s0,http-ka-1k,2,0.18303942656,18243.87,3.32,6.32,0,0,0,10.09,7.544894,44.09978850842834,54.76433425240442,9.77734375,0.18057196880170173,0.9600380589914367,0.2744289340101523,0.39006883426336014,0.21961066649307268,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1m,2,27.0582939648,3223.46,4.71,10.19,0,0,0,10.02,6.1610759999999996,0.2962492761157808,310.4570100697134,16.45703125,0.46526960207205087,0.9515669515669516,0.2193528313627878,1.5640485670466608,0.16536212674764145,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,2,26.71469658112,3179.35,4.78,10.28,0,0,0,10.01,6.194116999999999,0.2997600955595157,314.40417111627613,18.42578125,0.474105461393597,0.9524262607040913,0.22482070470845025,1.5916750926834629,0.17303048415910738,client
|
||||||
|
3proxy-devel-s,http-ka-1m,2,26.45699854336,3151.21,4.83,10.32,0,0,0,10.01,6.190885,0.3026798367500305,317.21384205856253,16.47265625,0.4683663833805477,0.9524262607040913,0.21694279462331978,1.5792978549133032,0.1806396304724581,client
|
||||||
|
3proxy-devel-s0-b16384,http-ka-1m,2,9.363028705280001,1110.7,13.88,30.83,0,0,0,10.01,6.460198,0.8552788047615542,900.0989119683481,16.8359375,0.2767857142857143,0.9524262607040913,0.0908519333542911,0.6878733276553483,0.06369625951052194,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-1m,2,26.28519985152,3130.3,4.85,10.86,0,0,0,10.01,6.098104,0.30465813633663197,319.4001276324186,17.37109375,0.46142958244869076,0.9524262607040913,0.2204968944099379,1.560257570732352,0.1644803174787107,client
|
||||||
|
nginx,http-ka-1m,2,5.39563655168,643.04,23.78,36.08,0,0,0,10.0,6.270697,1.4826795547430076,1554.001554001554,45.83203125,0.24132192106514502,0.9514747859181731,0.055450535601764335,0.5251663216451863,0.04086269496519598,proxy
|
||||||
|
haproxy,http-ka-1m,2,6.74251145216,803.37,21.22,28.86,0,0,0,10.07,5.3018600000000005,1.1948070177054304,1241.2177985948479,50.69140625,0.3364321608040201,0.959047619047619,0.066898075102556,0.8019479265231353,0.04942877066833285,proxy
|
||||||
|
haproxy-splice-response,http-ka-1m,2,26.6287972352,3172.63,4.75,7.57,0,0,0,10.01,5.893488,0.30072706360970775,315.2755905511811,55.3046875,0.4909307875894988,0.9515209125475285,0.21361648969394129,1.606888289751184,0.15400565880387246,client
|
||||||
|
haproxy-splice,http-ka-1m,2,25.855703121919998,3081.3,4.84,8.17,0,0,0,10.03,5.871993,0.3103377217074169,325.35357467237577,55.3046875,0.5107985936715218,0.999003984063745,0.22028890347997374,1.5862748525762496,0.1587097381281359,client
|
||||||
|
direct,http-ka-1m,2,59.78594476032,7129.91,1.47,2.89,0,0,0,5.92,0.0,0.07921594312821313,82.85050522014163,0.0,0.9446424328819197,0.5736434108527132,0.5372622388525101,3.5355681561250414,0.48338939877080245,client
|
||||||
|
3proxy-devel-s0,http-ka-1m,2,15.4618822656,1847.52,8.22,19.42,0,0,0,10.01,6.880936999999999,0.5179188317722745,541.0225921521998,17.1640625,0.3326271186440678,0.9524262607040913,0.14705882352941177,1.0263587107187073,0.11976211117056235,client
|
||||||
|
3proxy-devel-s1,http-ka-50k-2000,2,4.17970782208,10158.41,50.46,108.33,0,193,0,10.5,7.388891,2.009709854747647,102.69350390235314,146.56640625,0.2056470588235294,0.9971509971509972,0.24545454545454545,0.5041926526735195,0.15208848721880974,proxy
|
||||||
|
3proxy-devel-s3,http-ka-50k-2000,2,4.13382213632,10046.72,46.1,107.63,0,282,0,10.5,7.4440800000000005,2.032017760560406,103.89353386434473,154.6015625,0.20334196281477995,0.9980988593155894,0.24702939337085678,0.4994919698849847,0.16542000165916643,proxy
|
||||||
|
3proxy-devel-s,http-ka-50k-2000,2,3.88468047872,9441.27,47.42,109.16,0,252,0,10.47,7.379384999999999,2.1561618892166616,110.23141226758754,152.75390625,0.19101654846335697,0.9971428571428571,0.23827392120075047,0.47565570067534585,0.1483002127752453,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-50k-2000,2,3.36190242816,8170.68,54.13,130.77,0,261,0,10.48,7.173007999999999,2.493826093753899,127.42261021812611,116.39453125,0.20807891028651948,0.9952516619183286,0.21654653713569413,0.4566243564329488,0.13583280320719932,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-50k-2000,2,3.97351583744,9657.17,51.51,109.9,0,267,0,10.49,7.210703,2.11198352877503,107.78320061649114,133.12109375,0.2154566744730679,0.997148288973384,0.2506998444790047,0.49942999001870153,0.1568454255214776,proxy
|
||||||
|
nginx,http-ka-50k-2000,2,3.51574949888,8540.72,127.95,158.3,0,137,0,10.21,7.010276,2.323259948583382,118.59543970914497,109.68359375,0.19896275341819897,0.9714557564224549,0.18634512997181335,0.42618444358715807,0.1169133824463788,proxy
|
||||||
|
haproxy,http-ka-50k-2000,2,2.97057386496,7164.81,269.53,606.54,0,0,0,10.15,6.087408,2.733478569841703,140.7025423493859,178.79296875,0.2627599243856333,0.9657469077069457,0.16984673131060368,0.5270186869188936,0.09886754127177476,proxy
|
||||||
|
haproxy-splice-response,http-ka-50k-2000,2,3.41860941824,8258.54,232.28,523.98,0,0,0,10.17,6.077370999999999,2.379915048671647,122.40623946848972,191.87109375,0.2448642266824085,0.9648956356736242,0.19340796019900497,0.5194272879135834,0.11312517005701858,proxy
|
||||||
|
haproxy-splice,http-ka-50k-2000,2,3.5265708032,8525.05,227.23,554.97,0,0,0,10.14,6.121425,2.3002515624070825,118.14188677486631,193.09765625,0.25675993416411946,0.9647954329210275,0.2042209807572936,0.5403361869013934,0.1169245749931741,proxy
|
||||||
|
direct,http-ka-50k-2000,2,32.21225472,78306.98,23.5,35.87,0,0,0,8.54,0.0,0.212093194325765,10.785197758093318,0.0,0.8879330943847072,0.854,0.9528630180322682,2.886357412992484,0.7558984735164546,origin
|
||||||
|
3proxy-devel-s0,http-ka-50k-2000,2,4.28439764992,10412.82,33.82,85.73,0,196,0,10.46,7.602391,1.9531333652365932,99.82535334930284,116.52734375,0.21133051245886225,0.9952426260704091,0.2642924086223055,0.5336748991247522,0.18054524581880213,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,2,3.5629773619200003,8659.46,51.11,114.09,0,243,0,10.49,7.2136439999999995,2.3553335167635647,120.26368586987675,146.0625,0.18370720188902007,0.9952561669829222,0.2738058070558851,0.44616597822788834,0.18054839952021276,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,2,3.65047054336,8871.94,40.24,96.33,0,177,0,10.47,7.339018,2.294498722975719,117.15602900367021,97.76171875,0.1834040546911834,0.9952471482889734,0.2638671262926982,0.44525902955096897,0.17968030183040234,proxy
|
||||||
|
3proxy-devel-s,http-ka-2k-50k-2000,2,4.0756051968,9905.32,48.85,104.79,0,262,0,10.5,7.325287,2.0610435982845785,105.32968190436065,164.3203125,0.19245283018867926,0.9971509971509972,0.28782172002510986,0.4747043139065115,0.18917677217610432,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-ka-2k-50k-2000,2,3.3063698431999997,8035.75,58.14,137.48,0,255,0,10.47,7.081339,2.533291917486601,129.3263173497369,128.09765625,0.19731890874882407,0.9961941008563273,0.2425571921027891,0.43285460059107844,0.15400352957537936,proxy
|
||||||
|
3proxy-devel-s-b16384,http-ka-2k-50k-2000,2,4.1219941990399995,10017.6,39.4,83.92,0,194,0,10.47,7.245339,2.0320261493698237,103.83402423785628,100.984375,0.20108057317359643,0.9961941008563273,0.28046120286693677,0.4785266314251407,0.17683241000755506,proxy
|
||||||
|
nginx,http-ka-2k-50k-2000,2,3.38882985984,8232.19,133.42,165.03,0,134,0,10.19,7.013745999999999,2.40555009757406,122.82435755267345,115.4453125,0.19344262295081968,0.9686311787072244,0.205771643663739,0.4062355736429531,0.14064436347468393,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,2,2.76857618432,6700.68,288.65,713.03,0,0,0,10.17,5.975408,2.938694642422604,150.58858369734213,179.09375,0.2528898325076669,0.9667300380228137,0.18909657320872275,0.4965969636961061,0.12073851241716514,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,2,3.48848652288,8420.46,228.3,607.47,0,0,0,10.13,6.033727,2.323070462462202,119.60281946231862,191.7109375,0.23936672967863895,0.9638439581351094,0.22645600991325898,0.5089676342147512,0.1396899176472891,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,2,3.53890205696,8522.5,225.26,640.36,0,0,0,10.12,6.033841,2.287715192365243,117.85805790417628,192.0078125,0.24481621112158342,0.9638095238095238,0.23362175525339926,0.5184777904235277,0.14449636268340846,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,2,25.855703121919998,62840.85,30.33,57.14,0,0,0,8.48,0.0,0.2623792502571182,13.403618028498494,0.0,0.7350448050375393,0.8354679802955665,0.9438985736925515,2.300623977975007,0.7783557218691486,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,2,4.06872653824,9888.48,47.54,100.38,0,260,0,10.48,7.309182000000001,2.0605955994345715,105.34780860474467,157.76953125,0.19230769230769232,0.9961977186311787,0.28535747736497036,0.47568578053017907,0.18635369622290168,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,2,0.04840226816,4752.6,12.62,22.47,0,0,0,10.03,7.032209,165.77735517425802,210.76742035807345,59.5,0.14717694306638318,0.9534220532319392,0.17399557102182853,0.2958623284091615,0.08552836332178998,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,2,0.03850371072,3782.61,16.11,28.64,0,0,0,10.03,6.937920999999999,208.39549877025462,264.81149012567323,27.1796875,0.12239583333333333,0.9534220532319392,0.15006305170239598,0.23879290230679132,0.07035243845661805,proxy
|
||||||
|
3proxy-devel-s,http-close-1k,2,0.050834964479999994,4993.86,11.93,21.33,0,0,0,10.05,7.004148,158.15885940400682,200.9879407235566,72.6328125,0.14575950862272619,0.956232159847764,0.17094017094017094,0.2911419525488284,0.08272130507374653,proxy
|
||||||
|
3proxy-devel-s0-b16384,http-close-1k,2,0.0486539264,4780.64,12.54,22.11,0,0,0,10.05,6.982146,165.24873930832436,209.90851748193325,58.8359375,0.14687795648060548,0.9544159544159544,0.17146472635242013,0.2930261296446704,0.08271280925860805,proxy
|
||||||
|
3proxy-devel-s-b16384,http-close-1k,2,0.049828331520000005,4894.99,12.26,21.11,0,0,0,10.07,7.026606,161.67509034025147,205.50601008142692,100.41015625,0.14938737040527805,0.9572243346007605,0.17080152671755724,0.29493340571358656,0.08556076658848757,proxy
|
||||||
|
nginx,http-close-1k,2,0.138412032,13594.95,4.53,6.29,0,0,0,10.03,5.4263,57.97183874881628,73.68335990244117,31.09765625,0.3264346190028222,0.9525166191832859,0.18674314850223073,0.698254459980216,0.1435490440571471,proxy
|
||||||
|
haproxy,http-close-1k,2,0.15007219712,14733.72,3.96,6.38,0,0,0,10.02,5.6787149999999995,53.414290946845306,67.9547781975029,29.1484375,0.32878002826189356,0.9515669515669516,0.19596541786743515,0.7401639685873668,0.23388081652563267,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,2,0.15594422272,15315.06,3.9,5.44,0,0,0,10.1,5.728457000000001,51.81339750243746,65.30116119688623,35.43359375,0.339662447257384,0.9600760456273765,0.2037808394745274,0.752515241424721,0.20152076219733925,proxy
|
||||||
|
haproxy-splice,http-close-1k,2,0.15376318464,15095.21,3.9,6.15,0,0,0,10.1,5.741422,52.54833931098268,66.24992620676537,35.56640625,0.33490677366060895,0.9600760456273765,0.21350832266325223,0.7525410839531217,0.17016126985865324,proxy
|
||||||
|
direct,http-close-1k,2,0.5066719232,49753.56,0.8160000000000001,4.45,0,0,0,8.45,0.0,13.341966843762934,16.815585759487373,0.0,0.7523364485981309,0.8675564681724846,0.88416,2.0709840515399507,0.5691458630529433,client
|
||||||
|
3proxy-devel-s0,http-close-1k,2,0.048150609920000004,4725.22,12.69,22.99,0,0,0,10.0,6.990435000000001,166.14535129028744,211.36286777138992,59.796875,0.1461629279811098,0.9514747859181731,0.1694110196326789,0.2901814177811197,0.08461228154359426,proxy
|
||||||
|
27
bench/data/skylake-env.txt
Normal file
27
bench/data/skylake-env.txt
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
bench/bench.py --reps 3 --duration 10 --out bench/results-final --proxy none --proxy 3proxy:bench/bin/3proxy-0.9.4:-ocTCP_NODELAY -osTCP_NODELAY --proxy 3proxy:bench/bin/3proxy-0.9.4:-s0 -ocTCP_NODELAY -osTCP_NODELAY --proxy 3proxy:bench/bin/3proxy-1.0.1:-ocTCP_NODELAY -osTCP_NODELAY --proxy 3proxy:bench/bin/3proxy-devel --proxy 3proxy:bench/bin/3proxy-devel:-s --proxy nginx --proxy haproxy
|
||||||
|
Linux almalinux10-standard-4-8-60gb.novalocal 6.12.0-211.56.1.el10_2.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Sep 18 09:20:51 EDT 2026 x86_64 GNU/Linux
|
||||||
|
Architecture: x86_64
|
||||||
|
CPU op-mode(s): 32-bit, 64-bit
|
||||||
|
Address sizes: 46 bits physical, 48 bits virtual
|
||||||
|
Byte Order: Little Endian
|
||||||
|
CPU(s): 8
|
||||||
|
On-line CPU(s) list: 0-7
|
||||||
|
Vendor ID: GenuineIntel
|
||||||
|
BIOS Vendor ID: Red Hat
|
||||||
|
Model name: Intel Xeon Processor (Skylake, IBRS, no TSX)
|
||||||
|
BIOS Model name: RHEL 7.6.0 PC (i440FX + PIIX, 1996) CPU @ 2.0GHz
|
||||||
|
BIOS CPU family: 1
|
||||||
|
CPU family: 6
|
||||||
|
Model: 85
|
||||||
|
Thread(s) per core: 1
|
||||||
|
Core(s) per socket: 8
|
||||||
|
Socket(s): 1
|
||||||
|
Stepping: 4
|
||||||
|
BogoMIPS: 3999.99
|
||||||
|
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault pti ibrs ibpb tpr_shadow flexpriority ept vpid ept_ad fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat vnmi
|
||||||
|
Virtualization: VT-x
|
||||||
|
8
|
||||||
|
iperf 3.17.1 (cJSON 1.7.15)
|
||||||
|
wrk 4.2.0 [epoll] Copyright (C) 2012 Will Glozer
|
||||||
|
nginx version: nginx/1.26.3
|
||||||
|
HAProxy version 3.0.5-8e879a5 2024/09/19 - https://haproxy.org/
|
||||||
64
bench/data/skylake-grace.csv
Normal file
64
bench/data/skylake-grace.csv
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
3proxy-devel-s1,stream1,0,19.97818097659635,nan,nan,nan,0,0,0,10.01,6.861308999999999,0.4007611092279849,nan,6.9453125,0.10687405920722529,0.999001996007984,0.289850136239782,0.2807591563595339,0.5242162822200562,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1,0,19.742163074564107,nan,nan,nan,0,0,0,10.0,6.837938,0.4051529417738929,nan,8.8515625,0.134173461823573,0.999000999000999,0.2792207792207792,0.32267898307021686,0.5111302154541534,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1,0,19.375433324241943,nan,nan,nan,0,0,2,9.98,6.822737,0.4119802044274638,nan,6.1640625,0.12711022840119166,0.9950149551345963,0.27138945927446956,0.305718684848744,0.48520207742470634,proxy
|
||||||
|
3proxy-devel-s1,stream16,0,19.07237094981249,nan,nan,nan,0,0,737,10.03,7.114903,0.419590553247087,nan,92.02734375,0.13854853911404336,0.9534220532319392,0.2676422764227642,0.3478905881721866,0.478675171157012,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream16,0,18.38128508005787,nan,nan,nan,0,0,790,10.04,7.060224,0.43567032626593255,nan,88.56640625,0.13476011288805267,0.9534662867996201,0.2601362309438858,0.3345677319979222,0.4625239250503418,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream16,0,19.060620747099044,nan,nan,nan,0,0,789,10.02,7.075574,0.42047022860496003,nan,91.07421875,0.13620324629498942,0.9506641366223909,0.2648106183230819,0.34126793268195404,0.4663859683132522,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,0,31.66700660730227,nan,nan,nan,0,0,0,9.94,5.2211929999999995,0.25108657904005205,nan,11.546875,0.2703318976437801,0.9920159680638723,0.25466045272969373,0.7053331267720395,0.5550846795632212,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1-down,0,31.0956698919565,nan,nan,nan,0,0,0,9.97,5.212859,0.25647142107458115,nan,11.44140625,0.26698661278100533,0.9950099800399201,0.25041404438555814,0.7033195700284811,0.544839358048385,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1-down,0,33.71480123207125,nan,nan,nan,0,0,1,9.94,5.195236,0.23583615540539488,nan,11.1796875,0.2753916119252148,0.9920159680638723,0.22188552188552188,0.7253811359746524,0.5162068295111297,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,0,0.15451815936000002,15399.39,3.96,8.69,0,0,0,10.09,7.776215,52.2398146174759,64.87244110688201,9.78125,0.1592099000475964,0.9591254752851711,0.2376237623762376,0.3481992665319233,0.20246800509354868,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1k,0,0.16466837503999998,16415.68,3.75,7.87,0,0,0,10.09,7.776965,49.01973434813583,60.85828885068911,10.00390625,0.16654804270462634,0.9591254752851711,0.24552429667519182,0.357738394789852,0.1949042324703459,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1k,0,0.16626221056,16575.77,3.73,7.47,0,0,0,10.01,7.715996,48.1648834875205,60.342281191413434,9.78125,0.16305641513925256,0.9506172839506173,0.2418321588725176,0.3605801106300779,0.21391633135363147,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1m,0,25.254407700479998,3005.89,5.06,11.06,0,0,0,10.01,6.266191,0.3170931623095558,332.53604411667,16.46875,0.4434229137199434,0.9524262607040913,0.21149068322981365,1.4774624737810826,0.1378426872301122,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1m,0,24.223615549439998,2885.08,5.14,12.67,0,0,0,10.0,6.233359,0.3302562321331484,346.0806367883717,17.50390625,0.4256724870221803,0.9523809523809523,0.20180629087511678,1.4175919220088566,0.13499720413833763,client
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1m,0,25.254407700479998,3014.66,5.02,11.44,0,0,0,10.01,6.255949,0.3170931623095558,331.6326530612245,17.46484375,0.44651711924439197,0.9524262607040913,0.21437422552664187,1.4944802132500334,0.14068083362794956,client
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,0,3.42011936768,8312.18,56.32,111.11,0,284,0,10.48,7.5281590000000005,2.451376428328346,125.20459242798944,165.171875,0.1605493724840161,0.9952516619183286,0.24205225055083412,0.39386428848897437,0.16060536692720764,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-2k-50k-2000,0,3.42305538048,8319.32,45.56,113.83,0,217,0,10.48,7.629284,2.449273841086483,125.11938872970391,125.30078125,0.15825633736081499,0.9961977186311787,0.23985009369144286,0.3910123546197932,0.1511076269531801,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-2k-50k-2000,0,3.5676749824000002,8670.95,54.74,113.31,0,259,0,10.48,7.529979,2.349989850914061,120.0320696369259,159.28515625,0.16120607787274455,0.9971455756422455,0.2426239799121155,0.40150098349800273,0.15682424252147653,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,0,0.04630511616,4549.5,13.26,22.61,0,0,0,10.04,7.111331,173.45815465070197,220.25272025272025,29.078125,0.1330166270783848,0.952561669829222,0.15428571428571428,0.27116146869492636,0.07605984001254153,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-close-1k,0,0.04630511616,4548.5,13.3,22.68,0,0,0,10.0,7.09639,172.7670863054801,219.62093426745437,38.34375,0.13094106463878327,0.9523809523809523,0.15509554140127388,0.2663805749345092,0.07700873767334432,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-close-1k,0,0.04756340736,4670.38,12.87,22.43,0,0,0,10.03,7.048138,168.70111805211087,214.49498513718697,32.921875,0.13409144752428334,0.9525166191832859,0.15504121750158528,0.27019824457001107,0.07508142397062999,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1,1,19.99295619731226,nan,nan,nan,0,0,0,10.0,6.855381,0.4000668333088625,nan,5.28125,0.12481278082875687,0.999000999000999,0.29162393162393163,0.3097336734549248,0.5112158147262651,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1,1,20.14584580051949,nan,nan,nan,0,0,0,10.0,7.010956,0.3970045131625506,nan,8.57421875,0.12242481648117452,0.9505703422053232,0.258777633289987,0.3282867357387694,0.4743337416206333,proxy
|
||||||
|
3proxy-devel-s1,stream1,1,20.474172528356966,nan,nan,nan,0,0,0,10.0,6.778047,0.390660003136281,nan,6.38671875,0.11747919143876338,0.9514747859181731,0.2685546875,0.29210043371873357,0.4972598249075507,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream16,1,18.975432855429553,nan,nan,nan,0,0,812,10.03,7.076132,0.42163660338551706,nan,95.66796875,0.1452253093625963,0.9534220532319392,0.2654120700843608,0.3488170225093332,0.4701379714617092,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream16,1,19.517510165584948,nan,nan,nan,0,0,751,10.0,7.044628,0.40944066563538106,nan,94.0703125,0.12996219281663515,0.9505703422053232,0.2726681832954176,0.3383966463207904,0.4804372963625567,proxy
|
||||||
|
3proxy-devel-s1,stream16,1,20.272088287169534,nan,nan,nan,0,0,797,10.03,7.094227,0.39486685422891055,nan,92.5625,0.13072360616844603,0.9534220532319392,0.27817357512953367,0.34601203580503664,0.4901158479265062,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1-down,1,33.146384491720774,nan,nan,nan,0,0,0,9.99,5.2020599999999995,0.2410867628065474,nan,8.7109375,0.26037644787644787,0.950523311132255,0.21854093660401402,0.7098944309800352,0.4886354267033914,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1-down,1,32.081131147072185,nan,nan,nan,0,0,12,9.51,5.056833,0.23712356279842442,nan,11.4609375,0.2700176812326345,0.9491017964071856,0.20873949579831932,0.7073315408797886,0.49316526599576865,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,1,34.28650940946106,nan,nan,nan,0,0,0,9.94,5.237946,0.2319035816003651,nan,11.5234375,0.2851020922611545,0.9900398406374502,0.26218097447795824,0.7610998115670152,0.5808791672733641,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1k,1,0.16659775488,16603.91,3.68,8.28,0,0,0,9.99,7.676701,47.971834949136145,60.11662263730841,9.77734375,0.16,0.950523311132255,0.23419955085017646,0.3539424542889111,0.19492107104172984,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1k,1,0.16609443840000002,16557.69,3.71,7.7,0,0,0,10.1,7.7634620000000005,48.64702321062184,60.39477854251254,9.7734375,0.16333333333333333,0.9591642924976258,0.23876765083440307,0.3577171268923177,0.22152121096792818,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,1,0.15552479232,15505.73,3.77,7.87,0,0,0,10.09,7.751042,51.90169284001652,64.42879309353988,9.7734375,0.15521749465177087,0.9591254752851711,0.22998078155028828,0.3377447182770327,0.2072568861432294,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1m,1,26.45699854336,3156.07,4.82,10.14,0,0,0,10.02,6.215743,0.30298221420932125,317.09864236210007,16.71484375,0.464841906559698,0.9524714828897338,0.22366790582403964,1.5575072708769517,0.14737441184684066,client
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1m,1,25.42620639232,3033.7,4.95,11.84,0,0,0,10.02,6.2447669999999995,0.315265276947537,329.80053979329864,18.42578125,0.4574192026421326,0.9524714828897338,0.22549627791563276,1.5155528412891814,0.1606707414015199,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,1,26.45699854336,3149.09,4.79,10.54,0,0,0,10.01,6.227593,0.3026798367500305,317.5660670664002,16.90234375,0.46795475966069744,0.9515209125475285,0.20769471379418206,1.5697733659790591,0.17772010664454696,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-2k-50k-2000,1,3.07232768,7467.03,47.91,130.57,0,216,0,10.46,7.496495,2.723667808767065,139.14015111205703,106.796875,0.1536094674556213,0.9952426260704091,0.22362204724409449,0.37199722421966114,0.15022302961775982,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-2k-50k-2000,1,3.21602453504,7816.11,51.48,110.75,0,251,0,10.47,7.509432,2.6044577423896493,133.15528424265548,139.578125,0.15935499170026085,0.9961941008563273,0.2390075376884422,0.3891170585063435,0.15878126499734133,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,1,3.25998084096,7923.01,48.98,106.66,0,214,0,10.49,7.583868,2.574248257707159,131.44210407608355,111.8359375,0.16398865784499056,0.9962013295346629,0.23697426239799121,0.39481452313856286,0.1587568436740403,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-close-1k,1,0.04647288832,4564.5,13.15,23.5,0,0,0,10.02,7.044042,172.48766516950585,219.15051835002842,47.19140625,0.14025112532575218,0.9533777354900095,0.15705638738451735,0.27875641354338576,0.07891269755815927,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-close-1k,1,0.04303355904,4223.78,14.13,27.6,0,0,0,10.01,7.05328,186.0873276262488,236.7269717393875,29.8203125,0.12918546663500355,0.9524262607040913,0.14977692797960485,0.26068673498760464,0.07415754218791192,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,1,0.044459622399999996,4369.31,13.7,26.47,0,0,0,10.0,7.053941,179.9385502653302,228.6341396497325,38.00390625,0.1351671804600427,0.9523809523809523,0.1571927596062242,0.2711485212952833,0.07795499229443685,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1,2,20.28888112115602,nan,nan,nan,0,0,0,9.99,7.048534,0.3938021595572431,nan,9.9296875,0.10874760994263863,0.950523311132255,0.27243278263686427,0.30260944257927985,0.4811976862890873,proxy
|
||||||
|
3proxy-devel-s1,stream1,2,19.751917241354487,nan,nan,nan,0,0,0,9.99,6.803585,0.4045458478218898,nan,7.0546875,0.12070192079677496,0.9514285714285714,0.27694805194805194,0.31590932242319975,0.5172489454629472,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1,2,18.56857777823545,nan,nan,nan,0,0,0,10.02,6.863988,0.43159651773112206,nan,6.4296875,0.11463536463536464,0.99800796812749,0.2815368922135328,0.2837351861572906,0.4881634434741356,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream16,2,18.356289403194534,nan,nan,nan,0,0,819,10.01,7.046023,0.43612473949559133,nan,88.609375,0.1394804586941259,0.9515209125475285,0.2617733030204612,0.3346282978502008,0.4644939923306271,proxy
|
||||||
|
3proxy-devel-s1,stream16,2,19.52173190454759,nan,nan,nan,0,0,778,10.04,7.1317129999999995,0.41004197407900084,nan,95.8125,0.14091122592766558,0.9534662867996201,0.27331606217616583,0.351709879439914,0.48249808570645575,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream16,2,17.991826575351094,nan,nan,nan,0,0,805,10.03,7.05978,0.4444402138974637,nan,98.61328125,0.1346153846153846,0.9543292102759277,0.2543089430894309,0.3279460105547571,0.45118747246594837,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",stream1-down,2,32.479373745819316,nan,nan,nan,0,0,0,9.96,5.294425,0.2452991462691265,nan,11.203125,0.26223186309954205,0.9476688867745005,0.24338790931989923,0.6765313854263647,0.5248896381071574,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,2,32.719063000395955,nan,nan,nan,0,0,0,9.75,5.086837999999999,0.23836739123229145,nan,11.53515625,0.2766011094301563,0.9720837487537388,0.25662251655629137,0.7513326449945147,0.5690856078536491,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",stream1-down,2,32.98512396725947,nan,nan,nan,0,0,0,10.0,5.225493,0.2425078680261535,nan,8.703125,0.27904616945712835,0.998003992015968,0.26521164021164023,0.7181410840158545,0.5708571027876761,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1k,2,0.16240345088,16184.42,3.79,7.56,0,0,0,10.08,7.782796,49.654117300490704,61.66570823800027,9.78515625,0.16413301662707838,0.9590865842055185,0.23820224719101124,0.35676927176573736,0.19204548474399577,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,2,0.15393095680000002,15342.97,4.01,7.95,0,0,0,10.09,7.765093,52.43909456424557,65.11189695671253,9.7734375,0.15656925635542884,0.9591254752851711,0.23054755043227665,0.33870425564453704,0.1873068963380125,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1k,2,0.13203668992,13164.31,4.96,9.9,0,0,0,10.09,7.739739,61.13452257013382,75.88862648355119,9.76953125,0.1380952380952381,0.9591254752851711,0.21201525746980293,0.3015955114340705,0.1806356178435725,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-1m,2,26.37109919744,3142.42,4.84,10.54,0,0,0,10.0,6.260394,0.30336240215487903,317.8235443681668,18.13671875,0.46650943396226413,0.9514747859181731,0.22177293934681183,1.5660514739099147,0.1625786413950211,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,2,25.512105738240002,3044.75,4.95,11.23,0,0,0,10.03,6.228746999999999,0.314517354323005,328.9495260896658,17.359375,0.44748642907717723,0.9525166191832859,0.20964230171073095,1.4955008017047875,0.15877434737893567,client
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-1m,2,25.16850835456,2998.89,5.05,11.39,0,0,0,10.02,6.216146,0.3184932490664537,333.77748167888075,18.15234375,0.44142654700047235,0.9524714828897338,0.20547093565433633,1.4765259499745038,0.15209934533166888,client
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-ka-2k-50k-2000,2,3.5145750937600004,8541.84,55.44,118.95,0,287,0,10.48,7.500329,2.385494626330644,121.88455857553237,154.98828125,0.1587942084025635,0.9961977186311787,0.23433070866141734,0.3948493263496859,0.1492666713497686,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,2,3.51700779008,8547.68,47.16,101.22,0,211,0,10.48,7.620989,2.383844591885107,121.64405186122363,107.41015625,0.1662719090478446,0.9961977186311787,0.24913711954816442,0.41006738189510833,0.17303984661685748,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-ka-2k-50k-2000,2,3.48026568704,8458.33,61.86,131.22,0,283,0,10.47,7.525542,2.4067128067811026,122.88588162110773,157.34375,0.16682442025556082,0.9961941008563273,0.24420788979336255,0.41005602454767365,0.15591885497518831,proxy
|
||||||
|
"3proxy-devel-s1-g65536,2,10",http-close-1k,2,0.04789895168,4701.59,12.79,21.86,0,0,0,10.01,7.07599,167.1852873419713,212.6800662898908,49.9921875,0.13834836260085429,0.9533333333333334,0.1636479186526851,0.28255178423902294,0.080808899908129,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,2,0.04555014144,4475.12,13.18,27.68,0,0,0,10.03,7.041878,176.157521059939,223.83896092302885,45.98828125,0.1335543452521904,0.9534220532319392,0.15416401780038144,0.26639459936300575,0.07605417678567374,proxy
|
||||||
|
"3proxy-devel-s1-g8000,3,10",http-close-1k,2,0.0486539264,4776.74,12.5,21.84,0,0,0,10.01,7.051387,164.59103288321657,209.33101905100483,49.10546875,0.1382751247327156,0.9515209125475285,0.16045845272206305,0.2844787127348353,0.07986418432914309,proxy
|
||||||
|
64
bench/data/skylake-haproxy-splice.csv
Normal file
64
bench/data/skylake-haproxy-splice.csv
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
haproxy,stream1,0,8.636023560599849,nan,nan,nan,0,0,0,10.01,6.456637,0.9269245337210678,nan,29.3984375,0.07061340941512126,0.9515209125475285,0.24744645799011533,0.15128875361032273,0.43167728422806495,proxy
|
||||||
|
haproxy-splice-auto,stream1,0,30.611932766052398,nan,nan,nan,0,0,0,9.93,5.2854019999999995,0.25943390074416994,nan,44.5,0.1944509757818011,0.9421252371916509,0.3456072351421189,0.5290081009456566,0.7130405540273751,proxy
|
||||||
|
haproxy-splice,stream1,0,32.295125067580315,nan,nan,nan,0,0,0,10.0,5.2640080000000005,0.24764329171806024,nan,41.53125,0.19405204460966544,0.998003992015968,0.3641304347826087,0.49750945375038863,0.7417937263750758,proxy
|
||||||
|
haproxy,stream16,0,8.975699379090585,nan,nan,nan,0,0,3,10.0,6.335483,0.8908785169432152,nan,55.21484375,0.08196721311475409,0.9505703422053232,0.35294117647058826,0.16825135888154763,0.6038510349593467,proxy
|
||||||
|
haproxy-splice-auto,stream16,0,30.70114078562312,nan,nan,nan,0,0,2,10.02,4.988116,0.26092213690457905,nan,116.16796875,0.23837620958225159,0.9506641366223909,0.6298920377867746,0.5768980619413072,1.2478655398254854,origin
|
||||||
|
haproxy-splice,stream16,0,29.456167449165562,nan,nan,nan,0,0,4,10.03,5.074315,0.2722999713491997,nan,65.875,0.2509478672985782,0.9507109004739337,0.590633423180593,0.5901256910688761,1.1679225384141474,origin
|
||||||
|
haproxy,stream1-down,0,9.71949743551696,nan,nan,nan,0,0,0,10.0,6.511801999999999,0.8230021500345193,nan,31.82421875,0.21313868613138687,0.9514747859181731,0.09317751105495894,0.478663320593844,0.16547365860611024,proxy
|
||||||
|
haproxy-splice-auto,stream1-down,0,31.00868765885829,nan,nan,nan,0,0,0,10.01,5.240513,0.258223041719991,nan,43.22265625,0.2701674277016743,0.9980059820538385,0.24851876234364714,0.6953832692567568,0.5182059322959283,proxy
|
||||||
|
haproxy-splice,stream1-down,0,33.757359052958186,nan,nan,nan,0,0,0,9.97,5.335453,0.236248915975285,nan,45.9296875,0.28209673335021523,0.9950099800399201,0.26517150395778366,0.7461118994574448,0.5789178306200043,proxy
|
||||||
|
haproxy,http-ka-1k,0,0.38411436032,38288.69,1.6,2.44,0,0,0,10.1,6.9868310000000005,21.035402043466096,26.11931613940991,29.515625,0.22426120114394663,0.9600760456273765,0.3888716195212931,0.5774480768673774,0.3174880340636772,proxy
|
||||||
|
haproxy-splice-auto,http-ka-1k,0,0.37337694208,37215.98,1.59,2.7,0,0,0,10.02,6.934507,21.46892080519125,26.88842912000773,35.7578125,0.22675250357653792,0.9524714828897338,0.39981331673926573,0.5860667227322501,0.35081340003140254,proxy
|
||||||
|
haproxy-splice,http-ka-1k,0,0.33839644672,33732.09,1.63,2.86,0,0,0,10.1,7.012256,23.877319275416767,29.646502153040526,37.640625,0.20993818354731336,0.9600760456273765,0.3632982021078735,0.5327315573575286,0.3107425066142848,proxy
|
||||||
|
haproxy,http-ka-1m,0,7.64504178688,915.04,18.09,27.05,0,0,0,10.1,5.303821,1.0568941577097002,1092.8370482579528,45.69140625,0.3432569974554707,0.9591642924976258,0.06386342080303509,0.8391557223251773,0.04848889431509182,proxy
|
||||||
|
haproxy-splice-auto,http-ka-1m,0,25.42620639232,3031.45,5.02,7.67,0,0,0,10.1,5.868972,0.31778236498703827,329.86054410660046,56.6484375,0.47657004830917876,0.957345971563981,0.18699186991869918,1.5361296511527163,0.13559013225354133,client
|
||||||
|
haproxy-splice,http-ka-1m,0,27.23009265664,3249.18,4.64,7.3,0,0,0,10.0,5.868414,0.2937926102887945,307.48416456552485,57.0859375,0.48881942774705456,0.9514747859181731,0.20784069695084006,1.6306896191455449,0.14737385727345867,client
|
||||||
|
haproxy,http-ka-50k-2000,0,2.8534688972800004,6906.74,276.3,681.8,0,0,0,10.2,6.084704,2.859677218762861,146.49279025679326,178.5078125,0.23274021352313168,0.9714285714285714,0.15208529319535904,0.4699910580882655,0.08936918162684704,proxy
|
||||||
|
haproxy-splice-auto,http-ka-50k-2000,0,3.24857233408,7771.56,246.18,603.78,0,0,0,10.12,6.03259,2.4921716887959637,129.2679499789237,184.7890625,0.25380228136882127,0.9628924833491912,0.16338028169014085,0.5252002261718258,0.10173884560652446,proxy
|
||||||
|
haproxy-splice,http-ka-50k-2000,0,3.58302613504,8678.56,208.1,547.39,0,0,0,10.15,6.076625,2.266240795899009,116.16462186412745,195.13671875,0.23034908572785562,0.964828897338403,0.1783479349186483,0.503275064933598,0.10838375617258414,proxy
|
||||||
|
haproxy,http-close-1k,0,0.16433283072,16140.4,3.76,5.86,0,0,0,10.01,5.7080839999999995,48.7303721655261,61.96722732253292,31.26953125,0.33586517920721576,0.9515209125475285,0.20309977397481432,0.7744119890475171,0.19014590192179193,proxy
|
||||||
|
haproxy-splice-auto,http-close-1k,0,0.1627389952,15977.37,3.83,5.24,0,0,0,10.09,5.748422,49.60089614710857,62.52672413258888,35.50390625,0.3480427046263345,0.9600380589914367,0.20148052784036047,0.7972497298403712,0.20249463581851396,proxy
|
||||||
|
haproxy-splice,http-close-1k,0,0.1577058304,15487.67,3.91,5.72,0,0,0,10.1,5.771373,51.23463082820811,64.56850974600921,38.03515625,0.3353024574669187,0.9600760456273765,0.19872,0.758164543686981,0.1948691154509875,proxy
|
||||||
|
haproxy-splice-auto,stream1,1,27.72697911951139,nan,nan,nan,0,0,0,10.0,5.298265000000001,0.28841974759379113,nan,41.41015625,0.1533713200379867,0.9505703422053232,0.3315059658174782,0.4329284133394816,0.6826743269197528,proxy
|
||||||
|
haproxy-splice,stream1,1,25.259917191538477,nan,nan,nan,0,0,0,10.0,5.304781,0.3166249390458997,nan,40.5703125,0.13542713567839196,0.998003992015968,0.3241869918699187,0.3736710258412311,0.6569701634810317,proxy
|
||||||
|
haproxy,stream1,1,8.97739337317577,nan,nan,nan,0,0,0,10.01,6.459627,0.8915507734976943,nan,30.5546875,0.07047935453251068,0.9506172839506173,0.2743479696269396,0.15889727704554032,0.4535318084754292,proxy
|
||||||
|
haproxy-splice-auto,stream16,1,24.50452714128379,nan,nan,nan,0,0,3,10.01,5.107268,0.32669244403773184,nan,106.9140625,0.18821022727272727,0.9506172839506173,0.5097184986595175,0.45240115885144244,1.017156339826392,origin
|
||||||
|
haproxy-splice,stream16,1,32.36733783383577,nan,nan,nan,0,0,4,10.01,5.100031,0.24728732533485034,nan,61.6328125,0.2641019589332075,0.9506172839506173,0.6491582491582492,0.6177741317623673,1.2802634652904543,origin
|
||||||
|
haproxy,stream16,1,8.456644318404319,nan,nan,nan,0,0,26,10.03,6.2616879999999995,0.9483557708320423,nan,44.66015625,0.08347166231918425,0.9507109004739337,0.3497726477789437,0.16730166589010056,0.6173393459154463,proxy
|
||||||
|
haproxy-splice-auto,stream1-down,1,32.654824884137405,nan,nan,nan,0,0,0,10.01,5.360761,0.2452055175332874,nan,44.07421875,0.28249873545776427,0.9980059820538385,0.22348993288590605,0.7503397345799475,0.520184755689371,proxy
|
||||||
|
haproxy-splice,stream1-down,1,33.6711816615982,nan,nan,nan,0,0,0,9.88,5.429733,0.23471624511127306,nan,48.19921875,0.2860394537177542,0.987012987012987,0.25493476078956173,0.7552797811001567,0.5947510707364736,proxy
|
||||||
|
haproxy,stream1-down,1,9.193921085142536,nan,nan,nan,0,0,0,10.02,6.505828,0.8718214219273887,nan,34.24609375,0.21614052953156823,0.9990029910269193,0.08519134775374376,0.4615832075876959,0.14676573421621225,proxy
|
||||||
|
haproxy-splice-auto,http-ka-1k,1,0.38302384127999994,38180.75,1.59,2.68,0,0,0,10.09,6.987365,21.074406159743898,26.165791015979543,37.48828125,0.23172183853298403,0.9600380589914367,0.39881693648816935,0.593606479932167,0.36409712451339626,proxy
|
||||||
|
haproxy-splice,http-ka-1k,1,0.38134611968,38013.2,1.61,2.48,0,0,0,10.12,7.003999,21.230057373583918,26.36110018520496,40.32421875,0.22574493444576876,0.9601518026565465,0.39486054528361014,0.5803486312482636,0.39833478017772117,proxy
|
||||||
|
haproxy,http-ka-1k,1,0.36859543551999996,36741.31,1.63,2.57,0,0,0,10.1,7.011394999999999,21.921052789492773,27.21616370657203,36.09375,0.23055028462998103,0.9600760456273765,0.39416745061147695,0.5803059171812233,0.37743602204595855,proxy
|
||||||
|
haproxy-splice-auto,http-ka-1m,1,22.67742732288,2707.56,5.45,8.93,0,0,0,10.0,5.837529,0.35277370250586304,369.1671588895452,52.64453125,0.45167557066537156,0.9505703422053232,0.16556499842618821,1.4441986379884721,0.19100520442700733,client
|
||||||
|
haproxy-splice,http-ka-1m,1,26.54289788928,3163.17,4.76,7.99,0,0,0,10.01,5.864967,0.30170029035278123,316.28171506208724,52.71484375,0.48157070585401107,0.9515209125475285,0.20536828963795256,1.6011162092391507,0.2024190894499686,client
|
||||||
|
haproxy,http-ka-1m,1,7.21638391808,859.52,19.33,26.96,0,0,0,10.08,5.265218,1.1174571768273547,1161.1565487847022,50.41015625,0.3324892377817169,0.9590865842055185,0.07151858853182104,0.8115160024471539,0.05322013952053731,proxy
|
||||||
|
haproxy-splice-auto,http-ka-50k-2000,1,3.1873354956799997,7677.61,251.41,585.69,0,0,0,10.14,6.021116,2.5450725256235853,131.16535371958554,183.2890625,0.2536214675848967,0.9638783269961977,0.17430620517617712,0.5241598614639942,0.10361413296906273,proxy
|
||||||
|
haproxy-splice,http-ka-50k-2000,1,3.7184182681599998,8996.51,210.85,602.01,0,0,0,10.15,6.061004,2.1837242113211897,111.96170137663255,192.88671875,0.24253908100426338,0.9639126305792972,0.19096573208722742,0.5232345742100818,0.11598547197242452,proxy
|
||||||
|
haproxy,http-ka-50k-2000,1,3.12484036608,7518.29,252.7,648.02,0,0,0,10.15,6.005745,2.5985327404696354,133.9863241545001,179.36328125,0.248039914468995,0.9639126305792972,0.16108852048795747,0.5089801023366467,0.0960256982062013,proxy
|
||||||
|
haproxy-splice-auto,http-close-1k,1,0.15384707072,15109.44,3.98,5.91,0,0,0,10.1,5.770323,52.51968699947178,66.18437262457078,41.54296875,0.34202417634510546,0.9609895337773549,0.20878768441308532,0.7762975883879896,0.16921538087178775,proxy
|
||||||
|
haproxy-splice,http-close-1k,1,0.15929966592,15642.48,3.86,5.76,0,0,0,10.01,5.679019,50.27003637296769,63.939599115959986,38.8671875,0.33823878471398056,0.9515209125475285,0.20263326910725754,0.7762450148988013,0.23575367001202807,proxy
|
||||||
|
haproxy,http-close-1k,1,0.15627976704,15346.24,3.91,5.74,0,0,0,10.1,5.724976,51.702150272158484,65.16255153325548,32.55859375,0.3458985301090564,0.9600760456273765,0.20880179890780598,0.7876778009132015,0.19011328892797952,proxy
|
||||||
|
haproxy-splice,stream1,2,32.45617312914042,nan,nan,nan,0,0,0,9.85,5.248609,0.24269970330969026,nan,44.18359375,0.19387027797576623,0.9363117870722434,0.3499357326478149,0.5747021134715621,0.7445076104861466,proxy
|
||||||
|
haproxy,stream1,2,9.28810840332464,nan,nan,nan,0,0,0,10.02,6.456582,0.8626134955555618,nan,29.859375,0.0957472083630316,0.9515669515669516,0.2776138970829236,0.15319241362388406,0.46971923546880867,proxy
|
||||||
|
haproxy-splice-auto,stream1,2,31.85471336838318,nan,nan,nan,0,0,0,9.88,5.301953,0.248049972913184,nan,44.15625,0.15957955088389872,0.9382716049382716,0.34575835475578404,0.48624400940567974,0.7312259723779009,proxy
|
||||||
|
haproxy-splice,stream16,2,31.514131973225886,nan,nan,nan,0,0,7,10.02,5.157584,0.25422265927672116,nan,57.03515625,0.2527810650887574,0.9515669515669516,0.6095684175309468,0.6025479138310235,1.190953924333449,origin
|
||||||
|
haproxy,stream16,2,9.350857051229056,nan,nan,nan,0,0,1,10.02,6.433688,0.8569758780687742,nan,70.76171875,0.08295697646779178,0.9506641366223909,0.3730769230769231,0.17868690758330755,0.6363144611780939,proxy
|
||||||
|
haproxy-splice-auto,stream16,2,30.307529254304857,nan,nan,nan,0,0,9,10.02,4.946842,0.26433245922672766,nan,98.953125,0.23379081874112637,0.9515669515669516,0.6213823629553966,0.5607323347821974,1.2278466149840286,origin
|
||||||
|
haproxy-splice,stream1-down,2,33.000699897631,nan,nan,nan,0,0,0,9.96,5.289995,0.24142349566564897,nan,44.18359375,0.27838179519595446,0.9920318725099602,0.2844006568144499,0.7453594176547956,0.617017741879391,proxy
|
||||||
|
haproxy,stream1-down,2,9.332150181039376,nan,nan,nan,0,0,0,10.02,6.583239,0.858891908445779,nan,31.47265625,0.20446956075006423,0.99800796812749,0.09235880398671097,0.44451786978406393,0.1697062158911314,proxy
|
||||||
|
haproxy-splice-auto,stream1-down,2,23.774348262310063,nan,nan,nan,0,0,0,10.0,5.300676999999999,0.3364612986430228,nan,40.53125,0.24302384576357178,0.998003992015968,0.17775537634408603,0.6164387492428759,0.38736611953700967,proxy
|
||||||
|
haproxy-splice,http-ka-1k,2,0.38696648704000003,38569.82,1.59,2.48,0,0,0,10.11,7.004851,20.901034768842806,25.953489088496006,40.4765625,0.22875505831944776,0.9601139601139601,0.40641544690127684,0.5850673135537179,0.37169449371051916,proxy
|
||||||
|
haproxy,http-ka-1k,2,0.37396414464,37275.14,1.6,2.51,0,0,0,10.1,7.001749,21.606349474435007,26.82752557247549,33.2734375,0.21854146806482364,0.9600760456273765,0.38234379857009637,0.5622510786690808,0.3374843664678539,proxy
|
||||||
|
haproxy-splice-auto,http-ka-1k,2,0.35785801728,35673.23,1.66,2.88,0,0,0,10.09,6.999706,22.55643190937427,28.004518469382376,39.62109375,0.21902497027348394,0.9600380589914367,0.38287309959664906,0.5536707074905639,0.32416551347995487,proxy
|
||||||
|
haproxy-splice,http-ka-1m,2,26.71469658112,3188.33,4.76,7.88,0,0,0,10.02,5.856622,0.3000595561944403,314.1262775095617,52.75,0.4805101058710298,0.9506641366223909,0.20299812617114305,1.4984939928822527,0.18160881999388917,client
|
||||||
|
haproxy,http-ka-1m,2,6.82631364608,813.17,19.58,27.04,0,0,0,10.09,5.114019,1.1824830235621144,1228.5401193230246,43.87109375,0.30809859154929575,0.9591254752851711,0.08501896333754741,0.7553756037312992,0.039911132866994076,proxy
|
||||||
|
haproxy-splice-auto,http-ka-1m,2,24.223615549439998,2891.26,5.31,7.76,0,0,0,10.01,5.819121,0.3305864883652816,345.9836858841421,53.85546875,0.47541777670138047,0.9515209125475285,0.19135609145004698,1.5260201984587785,0.13972952745627013,client
|
||||||
|
haproxy-splice,http-ka-50k-2000,2,3.8916430233600003,9416.49,198.46,531.3,0,0,0,10.15,6.0941860000000005,2.086522312364942,107.07089886810763,196.22265625,0.24123957091775924,0.964828897338403,0.1859594383775351,0.5346888517433345,0.11599435072099394,proxy
|
||||||
|
haproxy,http-ka-50k-2000,2,3.11569678336,7541.37,251.49,698.44,0,0,0,10.17,6.088383,2.6112938985115397,133.79114373668008,182.0,0.2491069302214813,0.9658119658119658,0.16033887668653907,0.513701830080388,0.09601239403300997,proxy
|
||||||
|
haproxy-splice-auto,http-ka-50k-2000,2,2.7044033331199997,6528.24,264.27,695.02,0,0,0,10.15,5.990472,3.002510720408027,154.4454419574248,184.8828125,0.22211675367821548,0.964828897338403,0.14858934169278998,0.4480748449726689,0.08841104873739809,proxy
|
||||||
|
haproxy-splice,http-close-1k,2,0.15409872896000001,15129.27,3.97,6.08,0,0,0,10.01,5.701479,51.966684307166915,66.11624834874505,37.29296875,0.3454415954415954,0.9515209125475285,0.20836033700583279,0.7914972973071054,0.18823474885391117,proxy
|
||||||
|
haproxy,http-close-1k,2,0.15468593152000001,15192.54,3.98,5.51,0,0,0,10.1,5.72345,52.234873078650345,65.82591977058689,35.4609375,0.3456702253855279,0.9600760456273765,0.20811855670103094,0.7867352605196705,0.20723811513137558,proxy
|
||||||
|
haproxy-splice-auto,http-close-1k,2,0.15208546303999998,14935.9,4.04,6.46,0,0,0,10.03,5.685684,52.75980912054433,67.09389131190967,39.921875,0.32976699952448885,0.9525166191832859,0.19832851173256189,0.7592032193502162,0.1958527694972338,proxy
|
||||||
|
169
bench/data/skylake-main.csv
Normal file
169
bench/data/skylake-main.csv
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
direct,stream1,0,43.94218560876057,nan,nan,nan,0,0,0,6.14,0.0,0.11176599723683582,nan,0.0,0.2714785214785215,0.6375908618899273,0.34114848793747876,0.7093557466411603,0.7677126968039654,none
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream1,0,28.29906719758348,nan,nan,nan,0,0,0,9.99,5.642289,0.2823608023087004,nan,8.28515625,0.18638613861386139,0.996011964107677,0.34114848793747876,0.4875220793405474,0.7017296502032296,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream1,0,5.5253553114021905,nan,nan,nan,0,0,0,10.0,6.226614,1.4476205398649034,nan,3.0234375,0.051818634778276036,0.999000999000999,0.29378925331472433,0.10590895116421987,0.4492709035255843,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream1,0,19.14664078851784,nan,nan,nan,0,0,0,10.0,6.844423,0.41773771497678447,nan,5.03515625,0.1300148588410104,0.999000999000999,0.2714236940935473,0.31270573943067576,0.4901693435525649,proxy
|
||||||
|
3proxy-devel,stream1,0,19.8696182749667,nan,nan,nan,0,0,0,10.01,7.011065,0.4029305056944686,nan,7.8046875,0.10659655831739961,0.9515209125475285,0.26653696498054474,0.2978079331340094,0.47533737667963033,proxy
|
||||||
|
3proxy-devel-s,stream1,0,32.832108216195635,nan,nan,nan,0,0,0,10.0,5.25863,0.24361752944078474,nan,7.15234375,0.17372775131611934,0.999000999000999,0.37533875338753386,0.507535555131982,0.7727085060025145,proxy
|
||||||
|
nginx,stream1,0,9.562232619939449,nan,nan,nan,0,0,0,10.0,6.469755,0.8363088264713298,nan,34.30078125,0.06774423579748039,0.9514747859181731,0.27742998352553544,0.15795959930948786,0.46692001711780395,proxy
|
||||||
|
haproxy,stream1,0,9.72057688006905,nan,nan,nan,0,0,0,10.02,6.535721,0.8242036096593605,nan,29.609375,0.0635260528194147,0.9515669515669516,0.26005888125613347,0.14178342556893786,0.4591503253841818,proxy
|
||||||
|
direct,stream16,0,147.7220505652621,nan,nan,nan,0,0,3766,8.74,0.0,0.04732058850676409,nan,0.0,0.9378121878121878,0.8855116514690983,0.9720930232558139,3.0634424105815397,2.510424936668355,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream16,0,27.99043137406809,nan,nan,nan,0,0,783,10.02,5.605625,0.28591396835589206,nan,71.03125,0.18067724366564053,0.9515669515669516,0.3380417335473515,0.5046938551122888,0.7208465723862956,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream16,0,5.732471205111505,nan,nan,nan,0,0,197,10.04,6.289962,1.397156791495668,nan,93.3125,0.04843304843304843,0.9534662867996201,0.2989859339221459,0.10929789097392564,0.46724437122251294,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream16,0,18.886082493858858,nan,nan,nan,0,0,818,10.05,7.086829,0.4244418214174509,nan,98.0,0.13839285714285715,0.95260663507109,0.262987012987013,0.3383729659173314,0.4698905401852417,proxy
|
||||||
|
3proxy-devel,stream16,0,18.75490180600116,nan,nan,nan,0,0,806,10.03,7.100816999999999,0.42647019861696284,nan,97.57421875,0.1466261965911744,0.9534220532319392,0.2682452156989945,0.353601950334539,0.47673192496314026,proxy
|
||||||
|
3proxy-devel-s,stream16,0,30.455126533025485,nan,nan,nan,0,0,755,10.02,5.1583939999999995,0.2626929332675569,nan,87.84765625,0.20339382512373322,0.9515669515669516,0.3482858058314643,0.5749151856694169,0.7593291404137741,proxy
|
||||||
|
nginx,stream16,0,9.96210022136924,nan,nan,nan,0,0,634,10.1,6.678844,0.8035212542948832,nan,111.4765625,0.07841743662639185,0.9591642924976258,0.2879084967320261,0.1834119622066088,0.4690910571132587,proxy
|
||||||
|
haproxy,stream16,0,9.197518509317366,nan,nan,nan,0,0,3,10.02,6.322018,0.8709473557445826,nan,59.1640625,0.08803986710963455,0.9506641366223909,0.3649737302977233,0.18629361152888832,0.6316235684873117,proxy
|
||||||
|
direct,stream1-down,0,45.647288189692524,nan,nan,nan,0,0,0,6.19,0.0,0.10847239527586117,nan,0.0,0.27171152869476894,0.6447916666666667,0.3575717144763175,0.7333099099289225,0.7417750103981438,none
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,0,34.870015744513765,nan,nan,nan,0,0,0,9.99,5.292173999999999,0.22916950215942986,nan,10.63671875,0.2690550613128156,0.9496197718631179,0.25235109717868337,0.7136899543083228,0.5505873541310307,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,0,5.602349221864972,nan,nan,nan,0,0,0,10.0,6.135136,1.4278164710203243,nan,1.99609375,0.23190279214064116,0.998003992015968,0.06281156530408774,0.4386119914214682,0.10084248890934187,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,0,19.678813251012862,nan,nan,nan,0,0,0,10.01,6.833243,0.40689128603143715,nan,7.9375,0.20449601160261058,0.9515209125475285,0.141994917407878,0.4852622577380805,0.2909466155722971,proxy
|
||||||
|
3proxy-devel,stream1-down,0,20.287587429291236,nan,nan,nan,0,0,0,10.01,6.877286,0.3946823184622709,nan,8.859375,0.21173469387755103,0.999001996007984,0.1775731667214732,0.4925085135378208,0.33840632309755886,proxy
|
||||||
|
3proxy-devel-s,stream1-down,0,31.955023215450773,nan,nan,nan,0,0,0,9.98,5.232906,0.24982481542978685,nan,11.48828125,0.26596000963623223,0.9477682811016145,0.23147561747941736,0.7288831597684343,0.5113277193991893,proxy
|
||||||
|
nginx,stream1-down,0,9.79548777575188,nan,nan,nan,0,0,0,9.99,6.544494,0.8157989806714065,nan,32.234375,0.21067487811136773,0.999,0.09574468085106383,0.4574657832607243,0.1686745348268016,proxy
|
||||||
|
haproxy,stream1-down,0,9.319587948765866,nan,nan,nan,0,0,0,10.01,6.52505,0.8591737833882246,nan,30.12109375,0.21124694376528116,0.9515209125475285,0.09274447949526814,0.4500690759527404,0.15784557865976825,proxy
|
||||||
|
direct,http-ka-1k,0,1.22188464128,119514.52,0.49,0.8200000000000001,0,0,0,7.71,0.0,5.047939708562534,6.387627058684149,0.0,0.5640961442163245,0.750730282375852,0.9591125198098257,1.6139796321059274,0.8291503007549478,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,0,0.142606336,14217.61,4.2,8.74,0,0,0,10.1,7.8545300000000005,56.659474092371326,70.3357312478673,5.3125,0.1492040864813495,0.9591642924976258,0.22826430603857098,0.3225315295098274,0.17208480681672234,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,0,0.20946354175999998,20876.06,2.94,5.91,0,0,0,10.1,7.4359470000000005,38.57473206128605,47.90044296053193,5.375,0.19053254437869824,0.9609895337773549,0.28996517885406775,0.41955115652675273,0.22437098434992847,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,0,0.06157238272,6141.27,10.34,11.36,0,0,0,4.47,3.14774,58.077986298854725,72.69356491193834,9.6953125,0.07090348589044344,0.42329545454545453,0.103207367418228,0.14557638541524176,0.09318412301266239,none
|
||||||
|
3proxy-devel,http-ka-1k,0,0.19226689536000002,19169.41,3.16,5.9,0,0,0,10.1,7.510120000000001,42.02491533901887,52.16699636897045,9.88671875,0.18420430361787657,0.9600760456273765,0.27784810126582277,0.40053296910233444,0.27846989769837954,proxy
|
||||||
|
3proxy-devel-s,http-ka-1k,0,0.15032385536,14984.94,4.11,8.55,0,0,0,10.0,7.84878,53.2184328351702,66.66177813627,9.6875,0.15639810426540285,0.949667616334283,0.23356510745891276,0.33585181945622733,0.1786828625382035,proxy
|
||||||
|
nginx,http-ka-1k,0,0.37044092928,36230.03,1.72,2.39,0,0,0,10.02,6.753332,21.63907755976138,27.642675656513546,31.453125,0.23075100687040986,0.9515669515669516,0.426969791342261,0.5755808388889219,0.32324231089215627,proxy
|
||||||
|
haproxy,http-ka-1k,0,0.35995516928,35876.98,1.65,2.79,0,0,0,10.1,7.017473000000001,22.447239794227745,27.873987498102636,29.55078125,0.22531884742560226,0.9600760456273765,0.3981366459627329,0.5622085505479247,0.31845939009516416,proxy
|
||||||
|
direct,http-ka-1m,0,67.51688589312,8043.82,1.35,2.58,0,0,0,6.18,0.0,0.07322612609572082,76.67018175051176,0.0,0.9465685110425077,0.5982575024201355,0.5430899404575368,3.560523412785333,0.4551360718861913,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,0,24.99670966272,2979.22,5.03,12.1,0,0,0,10.0,6.173425,0.3200421218609891,335.1992759695639,16.78515625,0.44590780809031044,0.9523809523809523,0.20799500312304808,1.4870074439093754,0.15591340186519673,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,0,5.835954585600001,695.5,22.47,50.95,0,0,0,10.0,6.227775,1.3708125864686647,1436.7816091954023,14.21484375,0.2531615366261036,0.9514747859181731,0.05625790139064475,0.5526401143338306,0.04562272677057892,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,0,12.36950581248,1475.55,10.74,11.9,0,0,0,8.15,5.242551000000001,0.5271027071608438,551.5327874399404,9.34765625,0.2432049160954857,0.7703213610586012,0.11586508432229857,0.7430855753377406,0.07796468499366345,none
|
||||||
|
3proxy-devel,http-ka-1m,0,18.29656068096,2175.51,7.03,14.86,0,0,0,10.02,6.95438,0.43811512665009844,459.84396512161544,16.9375,0.3576299083000235,0.9524714828897338,0.1453287197231834,1.114991713418537,0.10837593685332784,client
|
||||||
|
3proxy-devel-s,http-ka-1m,0,23.45052143616,2790.01,5.36,13.66,0,0,0,10.01,6.273167,0.3414849440256755,358.3959899749373,17.57421875,0.4259346900141978,0.9524262607040913,0.19731920199501246,1.4203952920899983,0.16542876082448071,client
|
||||||
|
nginx,http-ka-1m,0,6.0280537088,718.42,22.02,30.01,0,0,0,10.01,6.239152,1.3284553168976567,1392.21140472879,44.73828125,0.2618595825426945,0.9515209125475285,0.060825716987078476,0.5707924206056916,0.040878219423396464,proxy
|
||||||
|
haproxy,http-ka-1m,0,6.72002998272,800.5,20.03,31.46,0,0,0,10.08,5.202046,1.1999946459667454,1246.7532467532467,45.22265625,0.31741643629052524,0.9590865842055185,0.06862745098039216,0.7667876855487537,0.04183266925588077,proxy
|
||||||
|
direct,http-ka-50k-2000,0,35.991825940480005,87401.38,20.85,32.92,0,0,0,8.61,0.0,0.19137678681239303,9.758607635968799,0.0,0.8615125240847784,0.8482758620689655,0.9534957291996203,2.8137727978226663,0.7692009026679565,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,0,3.8871970611199997,9447.4,59.62,121.52,0,281,0,10.47,7.33171,2.1547659838955173,110.16066412045075,91.94140625,0.19929577464788734,0.9961941008563273,0.2252027448533999,0.4481119733502381,0.1359548037023942,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,0,2.80498274304,6817.05,64.89,170.52,0,246,0,10.47,6.92724,2.9861146279004243,152.45722606479796,171.80078125,0.19711992445703494,0.9943019943019943,0.17001885606536768,0.39576669135250814,0.10457313967013684,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,0,4.13407379456,10047.51,47.31,95.57,0,325,0,10.48,7.348655999999999,2.0280237887945907,103.67102256427505,133.34375,0.18839896250884225,0.9971455756422455,0.2352205192367845,0.47094639884576445,0.1511659166447872,proxy
|
||||||
|
3proxy-devel,http-ka-50k-2000,0,4.334813184,10535.29,36.58,89.02,0,217,0,10.48,7.494909000000001,1.9341087249032414,98.85020609513388,104.4765625,0.1919811320754717,0.9952516619183286,0.2352386934673367,0.48617878992348906,0.1502187969426634,proxy
|
||||||
|
3proxy-devel-s,http-ka-50k-2000,0,3.69744674816,8986.28,56.49,131.1,0,278,0,10.49,7.663372,2.2696743378863267,115.96285651116516,163.875,0.18351440717997167,0.997148288973384,0.21916952856696847,0.43191933814893463,0.13690098735210118,proxy
|
||||||
|
nginx,http-ka-50k-2000,0,3.5584475136,8644.47,127.17,159.61,0,137,0,10.2,6.9846140000000005,2.293134848501591,117.12694493885284,111.48046875,0.1927796130250118,0.9686609686609686,0.1699181875393329,0.4119689291215604,0.10648114028799606,proxy
|
||||||
|
haproxy,http-ka-50k-2000,0,3.01134249984,7277.23,261.46,803.19,0,0,0,10.18,6.057987,2.704441623771693,138.83017169664652,177.1640625,0.24276908487434803,0.967680608365019,0.16573208722741434,0.49376391215017,0.09697167338018714,proxy
|
||||||
|
direct,http-close-1k,0,0.53108277248,52147.64,0.733,3.79,0,0,0,8.55,0.0,12.879348294540259,16.233242262629176,0.0,0.7378545006165228,0.9038054968287527,0.8912415784408084,2.041091324801681,0.5730997647090921,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,0,0.04286578688,4205.68,14.45,27.55,0,0,0,10.03,7.027548,187.18891181124633,238.17439209726444,24.2578125,0.13195925136223643,0.9516129032258065,0.14860583016476553,0.2568869570846952,0.0741601460789961,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,0,0.042781900799999995,4198.03,14.4,26.5,0,0,0,9.99,6.893052,186.80796903722427,237.61952333380904,14.6015625,0.1328439497987213,0.9532442748091603,0.15257469802924348,0.26163964201916406,0.0770072155740437,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,0,0.04051697664,3981.6,15.33,26.5,0,0,0,10.02,7.319014,197.84299483210404,251.44291091593476,22.5859375,0.1254725897920605,0.9524714828897338,0.1512179689971528,0.24451500342681542,0.07130340729423489,proxy
|
||||||
|
3proxy-devel,http-close-1k,0,0.048234496,4737.08,12.57,23.9,0,0,0,10.02,7.008174,166.18811565896738,211.0895761355018,53.35546875,0.14417613636363635,0.9533777354900095,0.16883116883116883,0.29112139474568055,0.08271276801194205,proxy
|
||||||
|
3proxy-devel-s,http-close-1k,0,0.04286578688,4208.46,14.35,25.42,0,0,0,10.01,7.117795,186.81565376177224,237.55280269590392,34.671875,0.1333175467677007,0.9515209125475285,0.15182250396196514,0.2635367130382308,0.07225341515917486,proxy
|
||||||
|
nginx,http-close-1k,0,0.1308622848,12847.5,4.6,6.91,0,0,0,10.01,5.414315,61.19410196940104,77.84249531467498,31.26171875,0.2969047619047619,0.9515209125475285,0.17742966751918157,0.6478938205044057,0.13689735065744207,proxy
|
||||||
|
haproxy,http-close-1k,0,0.16097738752000001,15806.42,3.86,5.66,0,0,0,10.02,5.679621999999999,49.795813707090275,63.34675711386611,29.22265625,0.3452914798206278,0.9515669515669516,0.20858505564387916,0.7857354029966487,0.1882130006120697,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream1,1,29.197936831775145,nan,nan,nan,0,0,0,9.99,5.64714,0.2736513633341382,nan,10.65625,0.17688846791380536,0.9496197718631179,0.3423772609819121,0.5023860496182423,0.7197181448896807,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream1,1,5.54073610574154,nan,nan,nan,0,0,0,10.0,6.130356,1.4435121055096212,nan,2.44921875,0.05010686297791499,0.9505703422053232,0.29360852197070575,0.10466706550123972,0.44310229377669036,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream1,1,18.746271170960057,nan,nan,nan,0,0,1,10.0,6.923991,0.4266378787899969,nan,8.3515625,0.11147213196700825,0.9970089730807578,0.26810109289617484,0.2806287257999571,0.48901023992781184,proxy
|
||||||
|
3proxy-devel,stream1,1,19.81979353775472,nan,nan,nan,0,0,0,9.99,7.0106139999999995,0.40314001569442237,nan,10.01953125,0.12717852096090437,0.9514285714285714,0.2719869706840391,0.3254262212161135,0.49544393857855856,proxy
|
||||||
|
3proxy-devel-s,stream1,1,31.449077260376534,nan,nan,nan,0,0,1,9.99,5.090237999999999,0.25408424631525656,nan,8.16015625,0.17983446200150488,0.996011964107677,0.37170830519918974,0.5165425469182663,0.7767505112411156,proxy
|
||||||
|
nginx,stream1,1,9.75871712437566,nan,nan,nan,0,0,0,9.96,6.438269,0.8162760444640786,nan,32.1171875,0.0738541914034671,0.9485714285714286,0.2553261225827598,0.1684169055869681,0.4430885623004122,proxy
|
||||||
|
haproxy,stream1,1,9.705190165858776,nan,nan,nan,0,0,0,10.01,6.665984999999999,0.8247415118717535,nan,33.25,0.06956315289648624,0.9515209125475285,0.2513911620294599,0.16841994688587877,0.451663677897488,proxy
|
||||||
|
direct,stream1,1,44.389174005677766,nan,nan,nan,0,0,0,6.11,0.0,0.11010085402569145,nan,0.0,0.27168207948012996,0.63579604578564,0.341156462585034,0.7055619791558234,0.7569537921450805,none
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream16,1,28.313349968601848,nan,nan,nan,0,0,715,10.03,5.574904,0.28275288543033045,nan,79.04296875,0.17958412098298676,0.9534220532319392,0.33697047496790755,0.5009326678550153,0.7237895955738057,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream16,1,5.220472839007376,nan,nan,nan,0,0,218,10.04,6.353164,1.5318292389511048,nan,90.90234375,0.04395343311950582,0.9543726235741445,0.279445727482679,0.1007633566748517,0.43027320887726855,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream16,1,19.45533354602417,nan,nan,nan,0,0,800,10.05,7.085894000000001,0.41200968849744224,nan,96.3671875,0.13925541941564562,0.9535104364326376,0.27069133398247325,0.35168473303999015,0.48249681827517704,proxy
|
||||||
|
3proxy-devel,stream16,1,18.39162729099409,nan,nan,nan,0,0,760,10.04,7.069515,0.435301424655335,nan,91.24609375,0.1399157697707066,0.9534662867996201,0.26216742375081115,0.33556020635175227,0.4635384590647387,proxy
|
||||||
|
3proxy-devel-s,stream16,1,31.17476043469111,nan,nan,nan,0,0,736,10.03,5.186141,0.25696391875121727,nan,78.16015625,0.19976415094339622,0.9516129032258065,0.3471153846153846,0.5627102631145084,0.7579234983022293,proxy
|
||||||
|
nginx,stream16,1,9.8879687300405,nan,nan,nan,0,0,793,10.06,6.656875,0.8088578126481994,nan,106.50390625,0.07914691943127962,0.9562737642585551,0.2852950766221063,0.1853321555368441,0.4710581767296116,proxy
|
||||||
|
haproxy,stream16,1,9.06324421500613,nan,nan,nan,0,0,0,10.0,6.360863,0.8822353120157729,nan,43.74609375,0.08736942070275404,0.949667616334283,0.3759239704329461,0.18528769253357383,0.6447168750791342,proxy
|
||||||
|
direct,stream16,1,150.5436199716137,nan,nan,nan,0,0,2979,8.73,0.0,0.04636292994657669,nan,0.0,0.9280095351609058,0.8643564356435643,0.9206500956022945,3.132650750865739,2.3573073422163286,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,1,34.421534596346625,nan,nan,nan,0,0,0,10.01,5.279381,0.2326204958142834,nan,9.14453125,0.28669201520912546,0.999001996007984,0.262532981530343,0.7363497102351947,0.5701253817662152,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,1,5.68308757694169,nan,nan,nan,0,0,0,9.98,6.1640939999999995,1.404718423398181,nan,3.4765625,0.23745473357475427,0.998,0.06478405315614617,0.4556058002831393,0.10783116416423337,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,1,18.76186496047368,nan,nan,nan,0,0,0,10.0,6.9654750000000005,0.426351778259922,nan,8.29296875,0.21130346232179226,0.999000999000999,0.16032064128256512,0.47446544493197773,0.3234040436283094,proxy
|
||||||
|
3proxy-devel,stream1-down,1,19.407222444299062,nan,nan,nan,0,0,0,10.01,6.874936,0.41258685397600503,nan,8.10546875,0.2106789079487799,0.9515209125475285,0.1537488136665612,0.5109912024594101,0.30616434104576695,proxy
|
||||||
|
3proxy-devel-s,stream1-down,1,30.315632395779144,nan,nan,nan,0,0,0,10.0,5.31313,0.26386141615423453,nan,11.015625,0.2855336368234699,0.9970089730807578,0.26199868507560814,0.7239105366514909,0.5307853186414291,proxy
|
||||||
|
nginx,stream1-down,1,8.99227992603171,nan,nan,nan,0,0,0,10.01,6.4409849999999995,0.8904488871792143,nan,33.703125,0.1990661096092406,0.9506172839506173,0.08106396453451552,0.43483866547690797,0.13787238607400534,proxy
|
||||||
|
haproxy,stream1-down,1,7.972846936017637,nan,nan,nan,0,0,0,9.98,6.4551240000000005,1.0012934447861737,nan,31.41015625,0.1769738450256661,0.9477682811016145,0.08895899053627761,0.4100967688119522,0.14928029456271036,proxy
|
||||||
|
direct,stream1-down,1,43.03125206765854,nan,nan,nan,0,0,0,5.99,0.0,0.11135061313932085,nan,0.0,0.2553462321792261,0.6233090530697191,0.35671342685370744,0.6913574830367858,0.7337909946328378,none
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,1,0.1543503872,15382.41,3.97,8.24,0,0,0,10.1,7.841647,52.34842715056046,65.00611443650641,5.45703125,0.16579819990525818,0.9600760456273765,0.24175126903553298,0.3548422914975592,0.20343066587099787,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,1,0.15778971647999998,15732.7,4.15,7.16,0,0,0,10.02,7.39028,50.801789741576954,63.65946632782719,5.3125,0.1624762808349146,0.9515669515669516,0.2529467983434215,0.3576936548081277,0.23861608017200606,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,1,0.06132072448,6115.4,10.37,11.47,0,0,0,4.43,3.1102,57.79449003665783,72.32534979020751,9.6328125,0.06727099236641221,0.4179245283018868,0.10871632329635499,0.1512653710931258,0.08365170503307336,none
|
||||||
|
3proxy-devel,http-ka-1k,1,0.18186502144,18127.79,3.38,6.93,0,0,0,10.1,7.545032,44.42855440822474,55.164126932109895,9.64453125,0.17972459639126306,0.9600760456273765,0.27223461906279883,0.3957398792392991,0.2129571928034147,proxy
|
||||||
|
3proxy-devel-s,http-ka-1k,1,0.13136560128,13091.9,4.44,12.45,0,0,0,10.07,7.858653,61.32503426699194,76.16382407442423,9.6328125,0.13705463182897862,0.959047619047619,0.20592923175007968,0.29398122075887145,0.1644634519513459,proxy
|
||||||
|
nginx,http-ka-1k,1,0.37681627136,36852.74,1.7,2.38,0,0,0,10.09,6.851237,21.421580259436915,27.108352811584858,33.3046875,0.22628951747088186,0.9600380589914367,0.42213883677298314,0.5698967203608523,0.32218882343684097,proxy
|
||||||
|
haproxy,http-ka-1k,1,0.38428213248000004,38308.04,1.58,2.52,0,0,0,10.11,6.98455,21.047036321473886,26.130985766237526,35.27734375,0.22018129770992367,0.9610266159695817,0.3912231559290383,0.5708629736448012,0.3803347283370004,proxy
|
||||||
|
direct,http-ka-1k,1,1.2993114931199998,127083.66,0.446,0.9,0,0,0,8.05,0.0,4.956471203480091,6.271780803987762,0.0,0.5751699823721984,0.7884427032321254,0.9597336715282181,1.6598135341106777,0.8250448349215003,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,1,26.6287972352,3170.38,4.82,10.1,0,0,0,10.01,6.1380669999999995,0.30072706360970775,315.44448996312985,14.65234375,0.47986814221803625,0.9524262607040913,0.22940627914205783,1.611560807138693,0.15495728739800543,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,1,5.84509816832,696.55,22.4,50.84,0,0,0,10.0,6.226949,1.3686682019062415,1434.5144168698896,14.84375,0.2573266619013581,0.9505703422053232,0.06021437578814628,0.5603873643301619,0.047520125478480744,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,1,12.4554051584,1488.76,10.67,11.65,0,0,0,7.89,5.007377,0.5067679388769741,529.1040772532189,14.453125,0.24579682690030782,0.7353215284249767,0.11694809255784866,0.7601212220516859,0.07890382086512121,none
|
||||||
|
3proxy-devel,http-ka-1m,1,17.95296329728,2135.69,7.15,15.42,0,0,0,10.02,6.958351,0.4465001051505787,468.5527238718728,16.7734375,0.3585394581861013,0.9524714828897338,0.14647887323943662,1.1235757517264,0.12169227662114614,client
|
||||||
|
3proxy-devel-s,http-ka-1m,1,23.88001816576,2841.95,5.32,12.15,0,0,0,10.02,6.296048,0.3356781366060106,352.0607146621693,18.421875,0.4209658421672556,0.9524714828897338,0.19906396255850234,1.3956319115522724,0.15210879832264515,client
|
||||||
|
nginx,http-ka-1m,1,5.697961984,678.94,23.17,31.9,0,0,0,10.01,6.2512799999999995,1.4054147820723684,1472.7085478887745,45.2265625,0.24433849821215733,0.9524262607040913,0.05767412543334384,0.537569986659097,0.03613231195441436,proxy
|
||||||
|
haproxy,http-ka-1m,1,7.8168404787200005,932.13,19.22,25.69,0,0,0,10.08,5.341355,1.0316188518817608,1070.7456978967496,45.265625,0.3439797211660329,0.9590865842055185,0.06424050632911392,0.8458070930285073,0.04468246285480473,proxy
|
||||||
|
direct,http-ka-1m,1,65.11170420736,7759.81,1.35,2.54,0,0,0,5.78,0.0,0.0710164179588056,74.36474750723706,0.0,0.9477434679334917,0.5611650485436893,0.5395436073773054,3.565522936440097,0.3801393834013302,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,1,3.9781295718400003,9668.41,47.93,107.82,0,249,0,10.46,7.426947,2.103501117518794,107.46943388472208,90.640625,0.19607379375591297,0.9942965779467681,0.22061596480201132,0.4671315845709273,0.14356348171893302,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,1,2.88953991168,7022.56,75.15,168.82,0,260,0,10.39,6.890688,2.8765825197297037,147.04841700043875,184.97265625,0.2051948051948052,0.9885823025689819,0.1771356783919598,0.4109788110193551,0.11309148962381269,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,1,4.24404844544,10314.75,37.17,79.09,0,213,0,10.5,7.425437,1.9792422513520895,101.22238075039525,136.828125,0.18817966903073285,0.9962049335863378,0.23074504872681548,0.484267061635251,0.15109501793648356,proxy
|
||||||
|
3proxy-devel,http-ka-50k-2000,1,4.28968247296,10425.55,43.96,89.49,0,290,0,10.47,7.431873,1.9525920747743197,99.65069907773135,154.01953125,0.19166074389954987,0.9961941008563273,0.23486986516149264,0.49093727956987104,0.14736809129390788,proxy
|
||||||
|
3proxy-devel-s,http-ka-50k-2000,1,3.7090230271999998,9014.32,44.25,99.94,0,227,0,10.49,7.671449,2.262590428384386,115.61139582300105,151.26953125,0.16959619952494062,0.9962013295346629,0.20578071002199183,0.4262453302210737,0.1283609164204057,proxy
|
||||||
|
nginx,http-ka-50k-2000,1,3.8542298316799997,9362.93,114.16,140.83,0,148,0,10.16,6.996789000000001,2.1088519250179565,107.82128833704765,112.546875,0.20461502236873086,0.9676190476190476,0.17531645569620252,0.4423896322732737,0.11408052048570191,proxy
|
||||||
|
haproxy,http-ka-50k-2000,1,2.92519149568,7083.85,267.2,699.76,0,0,0,10.22,6.18439,2.795030688443657,143.2737060505804,181.3828125,0.24078039495598383,0.9714828897338403,0.15698587127158556,0.4975794705248003,0.09412579090413156,proxy
|
||||||
|
direct,http-ka-50k-2000,1,32.12635537408,77949.47,22.83,253.1,0,0,0,8.68,0.0,0.21614652266476883,11.028187946749608,0.0,0.8535534816941852,0.8732394366197183,0.9489698890649763,2.7479492355354154,0.7406260418585973,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,1,0.04722786304,4635.03,13.53,22.13,0,0,0,10.01,7.054996,169.56092197560503,215.81648053124056,22.484375,0.14018470281790196,0.9515209125475285,0.15318471337579617,0.27684962035949096,0.0779553615801043,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,1,0.04840226816,4752.74,13.05,21.72,0,0,0,10.02,6.926434,165.6120736636157,210.53958648512355,15.8828125,0.1408284023668639,0.9524714828897338,0.15801210576616756,0.28065207052631486,0.07985926045370434,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,1,0.0406847488,3994.83,15.24,26.67,0,0,0,10.0,7.331008,196.63387967139175,249.9687539057618,23.88671875,0.12150639507342492,0.9514747859181731,0.14584654407102093,0.24070421729799868,0.07035422611007631,proxy
|
||||||
|
3proxy-devel,http-close-1k,1,0.04857004032,4770.82,12.53,23.84,0,0,0,10.03,6.992661,165.20472182305159,210.0435583849891,58.0546875,0.13873788702434411,0.9543292102759277,0.157475294867708,0.27874189040152336,0.07795755793030464,proxy
|
||||||
|
3proxy-devel-s,http-close-1k,1,0.04437573632,4357.14,13.83,24.3,0,0,0,10.02,7.1140419999999995,180.6392561510515,229.69007885567578,42.3984375,0.13633136094674556,0.9524714828897338,0.15423675023801967,0.26923580671822467,0.07412890809039178,proxy
|
||||||
|
nginx,http-close-1k,1,0.13111394304,12877.89,4.72,6.45,0,0,0,9.99,5.414659,60.95461561675263,77.43765842163603,31.125,0.29959514170040485,0.9496197718631179,0.1822534312160868,0.6545699582024739,0.16352007152430625,proxy
|
||||||
|
haproxy,http-close-1k,1,0.15091105791999998,14821.45,4.0,6.14,0,0,0,10.04,5.688575,53.22340264990967,67.62536624793722,29.26953125,0.3219016083254494,0.952561669829222,0.19182891796999682,0.7296755721909792,0.1825184532448331,proxy
|
||||||
|
direct,http-close-1k,1,0.4957667328,48677.01,0.771,4.53,0,0,0,8.6,0.0,13.87749428273054,17.492225112733323,0.0,0.7192467595989239,0.8695652173913043,0.87146529562982,1.9742833278308116,0.5751161170829755,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream1,2,5.2332908750732585,nan,nan,nan,0,0,0,9.98,6.122593,1.525267576559996,nan,1.8125,0.04260890264222804,0.9486692015209125,0.29589490968801313,0.0884953417978474,0.473542543900258,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream1,2,19.341902517040023,nan,nan,nan,0,0,0,10.0,6.742953999999999,0.41353749132749024,nan,5.359375,0.12767014406358668,0.998003992015968,0.2851763094830537,0.29972885580120884,0.5341388304202673,proxy
|
||||||
|
3proxy-devel,stream1,2,20.304971867303262,nan,nan,nan,0,0,0,10.02,6.725144,0.3946931280687556,nan,5.8828125,0.12396694214876033,0.9515669515669516,0.2688939344794032,0.3045047155583558,0.49449600638530344,proxy
|
||||||
|
3proxy-devel-s,stream1,2,31.048725596793666,nan,nan,nan,0,0,0,9.98,5.2500789999999995,0.2571005538398097,nan,7.94140625,0.1964729259811227,0.998998998998999,0.3573859768550034,0.48747074787814915,0.7007486845439365,proxy
|
||||||
|
nginx,stream1,2,9.764799238472945,nan,nan,nan,0,0,0,10.02,6.635033,0.820312185628863,nan,36.8359375,0.06830080913850547,0.9515669515669516,0.27189242374549033,0.15796012252227382,0.48308451627315624,proxy
|
||||||
|
haproxy,stream1,2,9.25175358380877,nan,nan,nan,0,0,0,10.01,6.426913000000001,0.8654047599697726,nan,29.515625,0.07548065511511987,0.9506172839506173,0.27123647097408987,0.16651177811617382,0.4715793459434357,proxy
|
||||||
|
direct,stream1,2,44.86820902742214,nan,nan,nan,0,0,0,6.4,0.0,0.11409506729600898,nan,0.0,0.27506876719179796,0.6708595387840671,0.34313055365686945,0.7173018870274938,0.7447722624832959,none
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream1,2,30.314863444991524,nan,nan,nan,0,0,0,9.98,5.659764,0.26327450882190734,nan,10.125,0.176109537299339,0.9495718363463368,0.34419354838709676,0.4786358136310057,0.7151016072164642,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream16,2,5.584721557635198,nan,nan,nan,0,0,192,10.05,6.303241,1.4342308419046128,nan,92.55078125,0.04938271604938271,0.9535104364326376,0.2946194225721785,0.10930335475181782,0.4596076379008132,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream16,2,18.88211540354059,nan,nan,nan,0,0,830,10.05,7.102328,0.42420934577265995,nan,91.62109375,0.14465996728207525,0.9544159544159544,0.2680077871512005,0.3431706867766449,0.4749079929623601,proxy
|
||||||
|
3proxy-devel,stream16,2,18.933899805662048,nan,nan,nan,0,0,782,10.05,7.063448,0.42325861852591706,nan,91.12109375,0.14064697609001406,0.9535104364326376,0.2669477781381771,0.3431366081170437,0.47484368993419285,proxy
|
||||||
|
3proxy-devel-s,stream16,2,32.04857042305418,nan,nan,nan,0,0,739,10.02,5.177363,0.24975915918702893,nan,90.00390625,0.20089601509078048,0.9515669515669516,0.3553559974342527,0.5732179897999251,0.7826352396066084,proxy
|
||||||
|
nginx,stream16,2,9.842346910241341,nan,nan,nan,0,0,735,10.07,6.6343890000000005,0.8134854137383131,nan,102.75,0.0755883052056097,0.956315289648623,0.2804560260586319,0.18060985937425528,0.46538880798689947,proxy
|
||||||
|
haproxy,stream16,2,9.34405922985948,nan,nan,nan,0,0,0,10.01,6.374752,0.8567064441556639,nan,73.91015625,0.08592451934488488,0.9506172839506173,0.38666666666666666,0.17967752023981196,0.6621181680636408,proxy
|
||||||
|
direct,stream16,2,155.4265189491131,nan,nan,nan,0,0,1628,8.99,0.0,0.046253784447393496,nan,0.0,0.9818678589170392,0.9108409321175278,0.9660791486531427,3.2390959837193067,2.4937244359650834,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream16,2,28.58071441605949,nan,nan,nan,0,0,768,10.03,5.608255,0.2802623320701637,nan,86.23828125,0.18632075471698112,0.9516129032258065,0.338050820199421,0.5189085529627563,0.7283341465979575,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,2,5.538202205406668,nan,nan,nan,0,0,0,10.0,6.147093,1.4443592691018894,nan,2.828125,0.23238341968911916,0.999000999000999,0.060132890365448506,0.44856270979307344,0.09783169922215046,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,2,18.766204715865502,nan,nan,nan,0,0,0,10.0,6.793089,0.4262517337056116,nan,6.515625,0.20747520976353928,0.998003992015968,0.17022674991784423,0.46757087818658555,0.31350096864291566,proxy
|
||||||
|
3proxy-devel,stream1-down,2,16.947169569957758,nan,nan,nan,0,0,0,9.99,6.718148,0.47153300193758585,nan,5.828125,0.19190633749045558,0.998001998001998,0.15262636273538158,0.43857089251787307,0.2884982736212551,proxy
|
||||||
|
3proxy-devel-s,stream1-down,2,32.06821899943276,nan,nan,nan,0,0,0,9.99,5.256309,0.24919211586772827,nan,10.71875,0.27856420626895856,0.9970059880239521,0.2637290365011509,0.7383214412946932,0.5717778826855451,proxy
|
||||||
|
nginx,stream1-down,2,9.731295486532868,nan,nan,nan,0,0,0,10.0,6.509569,0.8220001649787211,nan,32.0078125,0.2014887063655031,0.998003992015968,0.09314703925482369,0.45555368966541926,0.15872726169228166,proxy
|
||||||
|
haproxy,stream1-down,2,9.51980461846781,nan,nan,nan,0,0,0,10.01,6.500072,0.8411004565938953,nan,31.67578125,0.21156812339331618,0.9980059820538385,0.0990691489361702,0.4645744810619603,0.17571034610865963,proxy
|
||||||
|
direct,stream1-down,2,43.08145136317145,nan,nan,nan,0,0,0,6.01,0.0,0.11159080343833658,nan,0.0,0.25057471264367814,0.6253902185223725,0.35557038025350235,0.6853975344586273,0.7338633116744461,none
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,stream1-down,2,32.79585310487371,nan,nan,nan,0,0,0,10.0,5.229983,0.24390725453885723,nan,9.10546875,0.2811630847029077,0.998003992015968,0.2751721876024926,0.737283758067936,0.5937444079458339,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,2,0.19310575616,19245.58,3.16,5.83,0,0,0,10.12,7.467772,41.925213214731755,52.064844397112765,5.328125,0.18834399431414356,0.9610636277302944,0.27850947638933504,0.41288227734956645,0.24244064661567213,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,2,0.06190792704,6167.93,10.28,11.29,0,0,0,4.41,3.031855,56.9878554925686,71.34421561807387,9.7734375,0.06806282722513089,0.4160377358490566,0.10178117048346055,0.14747456737509307,0.08747202217081224,none
|
||||||
|
3proxy-devel,http-ka-1k,2,0.17414750208000002,17360.46,3.59,6.16,0,0,0,10.11,7.5113199999999996,46.443387952154076,57.65808924171913,9.64453125,0.1690844233055886,0.9601139601139601,0.2596491228070175,0.37481763577097954,0.21103923831677388,proxy
|
||||||
|
3proxy-devel-s,http-ka-1k,2,0.13874757631999998,13830.61,4.32,10.06,0,0,0,10.1,7.905252,58.23525148550862,72.30192136987085,9.77734375,0.14448940728398,0.9591642924976258,0.21398914084956883,0.31394659783486856,0.20249958826286457,proxy
|
||||||
|
nginx,http-ka-1k,2,0.37354471424,36534.88,1.67,2.59,0,0,0,10.11,6.817792,21.652026361704888,27.397854241247455,31.984375,0.23551847437425508,0.9610266159695817,0.425645872715816,0.591746976997383,0.3498530274178688,proxy
|
||||||
|
haproxy,http-ka-1k,2,0.37463523328,37343.11,1.6,2.56,0,0,0,10.1,7.0220910000000005,21.567645758403774,26.77936980983996,32.0625,0.22820390662220105,0.9609895337773549,0.4024352169840774,0.5850687732766127,0.3241671225153865,proxy
|
||||||
|
direct,http-ka-1k,2,1.34393888768,131447.97,0.464,0.8280000000000001,0,0,0,8.27,0.0,4.92284289162954,6.229215548182267,0.0,0.5882798686537004,0.827,0.9594423320659062,1.7134239544062406,0.8396328062725547,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1k,2,0.14663286784000001,14614.1,4.07,8.41,0,0,0,10.07,7.836468999999999,54.939933445142664,68.22816800254755,5.46875,0.15499643959173987,0.959047619047619,0.22573435504469988,0.33298171555015793,0.18823815787075818,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,2,5.7926693683199995,690.24,22.59,50.97,0,0,0,10.01,6.263898,1.382436919979518,1449.0445859872611,14.0703125,0.25708164722685073,0.9515209125475285,0.05943724312361682,0.5565685981319265,0.049436068741999364,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,2,12.28360646656,1464.4,10.76,13.16,0,0,0,8.28,5.305255,0.5392553089381932,564.7251398172145,16.0859375,0.24982256919801277,0.7774647887323943,0.11619166927654244,0.7639679990621957,0.09127157422851138,none
|
||||||
|
3proxy-devel,http-ka-1m,2,18.4683593728,2200.14,6.99,14.63,0,0,0,10.03,6.945708000000001,0.43447281039038366,455.32958053386596,16.44921875,0.3606403013182674,0.9525166191832859,0.15324349733625822,1.125470054947697,0.13974994262108514,client
|
||||||
|
3proxy-devel-s,http-ka-1m,2,25.08260900864,2993.0,5.07,11.01,0,0,0,10.02,6.269207000000001,0.3195839793714758,334.45709135818953,16.375,0.45086024039594624,0.9515669515669516,0.2076059850374065,1.5060664790437657,0.15585024003804937,client
|
||||||
|
nginx,http-ka-1m,2,5.770691215359999,687.66,22.14,33.24,0,0,0,10.0,6.2515019999999994,1.386315729163638,1453.0659691950013,44.62109375,0.248565965583174,0.9514747859181731,0.058341217281614635,0.5469670989643747,0.03612232881070914,proxy
|
||||||
|
haproxy,http-ka-1m,2,7.55914244096,897.6,19.52,26.08,0,0,0,10.09,5.342491,1.0678459974852474,1113.0722559293988,45.265625,0.35175751400916966,0.9582146248812915,0.07000946073793755,0.8571238353168774,0.049433855788615914,proxy
|
||||||
|
direct,http-ka-1m,2,68.2899800064,8135.22,1.36,2.52,0,0,0,6.22,0.0,0.07286574105796573,76.37712124561016,0.0,0.9457917261055635,0.6027131782945736,0.5558685446009389,3.5569066191599092,0.4276846374703534,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-1m,2,27.23009265664,3246.22,4.69,10.01,0,0,0,10.0,6.150595,0.2937926102887945,307.5787401574803,14.9140625,0.4767962308598351,0.9523809523809523,0.2260761845772685,1.60782723791093,0.15016149713022064,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,2,3.04607133696,7401.59,55.49,127.73,0,156,0,10.43,6.952964000000001,2.739266115916829,139.966182667275,186.984375,0.21029029974038235,0.9895635673624289,0.17494463777285668,0.42908503204486165,0.11313894277477532,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,2,4.24404844544,10314.79,44.85,83.59,0,340,0,10.48,7.356861,1.975472266111419,100.9643638185339,163.07421875,0.19290780141843972,0.9961977186311787,0.23137626262626262,0.4899881292691311,0.15401082853641726,proxy
|
||||||
|
3proxy-devel,http-ka-50k-2000,2,4.44545892352,10804.25,44.97,91.56,0,259,0,10.47,7.481303,1.8841699235335014,96.33078168703076,153.4453125,0.19966840360018948,0.9961941008563273,0.2383192223267482,0.5032929194218212,0.1597193318527747,proxy
|
||||||
|
3proxy-devel-s,http-ka-50k-2000,2,3.75155326976,9117.77,53.89,123.67,0,273,0,10.48,7.666092,2.234807664222865,114.1587329252086,160.36328125,0.17714014702395067,0.9961977186311787,0.21087366436203644,0.43956600531979256,0.12835740140699384,proxy
|
||||||
|
nginx,http-ka-50k-2000,2,3.7748736,9170.06,128.05,170.86,0,149,0,10.16,6.959331000000001,2.1531846788194446,110.05676155812644,117.90625,0.19673295454545456,0.9676190476190476,0.18250710451531418,0.4328918916871282,0.12265368734492328,proxy
|
||||||
|
haproxy,http-ka-50k-2000,2,3.1594853171199997,7574.99,250.12,655.86,0,0,0,10.12,5.9886479999999995,2.5624426725868865,132.74742572309307,178.28125,0.24488338886244645,0.9628924833491912,0.16421645292461684,0.5042265728118315,0.09697061395084475,proxy
|
||||||
|
direct,http-ka-50k-2000,2,35.30463117312,85685.01,21.27,36.67,0,0,0,8.62,0.0,0.19532848158602004,9.979369794693568,0.0,0.8780429594272077,0.8509378084896347,0.9493670886075949,2.881269048940997,0.7601708550679486,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-ka-50k-2000,2,3.7587674726399998,9135.22,60.3,138.02,0,213,0,10.47,7.323282,2.2283900403440096,113.84023224712138,89.19140625,0.19254365266635207,0.9952471482889734,0.21062558943728388,0.44430267293857023,0.1321569527241605,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,2,0.049492787200000006,4857.78,12.72,22.24,0,0,0,10.02,6.936956,161.96299407441737,205.96517914037287,17.265625,0.14106211474632527,0.9524714828897338,0.16012759170653906,0.2816279185193257,0.08177031679065315,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,2,0.04076863488,3999.48,15.26,26.26,0,0,0,10.01,7.335698,196.42551249437372,249.87518721917124,22.41015625,0.12088172552737615,0.9515209125475285,0.14326647564469913,0.240705565907949,0.07032923750437718,proxy
|
||||||
|
3proxy-devel,http-close-1k,2,0.04898947072,4813.56,12.47,22.45,0,0,0,10.03,7.012631,163.79029783484052,207.97909841164517,57.1015625,0.13994307400379508,0.9525166191832859,0.1618349792927684,0.2854371070108317,0.08176458934385525,proxy
|
||||||
|
3proxy-devel-s,http-close-1k,2,0.0457179136,4486.2,13.4,23.73,0,0,0,10.02,7.100395,175.33608532826835,223.09798944626277,43.3046875,0.13423616060822047,0.9524714828897338,0.15428571428571428,0.2702042939891719,0.07511191663704278,proxy
|
||||||
|
nginx,http-close-1k,2,0.13925089280000003,13675.06,4.51,6.4,0,0,0,10.02,5.443326000000001,57.56516054452183,73.18355780186391,31.19921875,0.3175355450236967,0.9515669515669516,0.1783644558918223,0.6915439272144824,0.1549395985775604,proxy
|
||||||
|
haproxy,http-close-1k,2,0.15376318464,15099.95,3.88,5.8,0,0,0,10.11,5.723803,52.600367369706426,66.29160437485247,31.42578125,0.32397048321828137,0.9610266159695817,0.1992950977250881,0.7411587259582854,0.1711375145721106,proxy
|
||||||
|
direct,http-close-1k,2,0.5313344307200001,52176.86,0.801,4.19,0,0,0,8.55,0.0,12.873248192727246,16.224493862207556,0.0,0.7426470588235294,0.8841778697001034,0.9006750241080038,2.0493023589890185,0.581545963141801,origin
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,http-close-1k,2,0.04479516672,4395.49,14.03,24.39,0,0,0,10.08,7.067226000000001,180.0194215238764,228.91402098378526,17.19921875,0.13733396584440227,0.9581749049429658,0.15014344915524386,0.27021049078751624,0.07510797345845058,proxy
|
||||||
|
148
bench/data/skylake-splice-direction.csv
Normal file
148
bench/data/skylake-splice-direction.csv
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
direct,stream1,0,43.836690240908,nan,nan,nan,0,0,0,6.05,0.0,0.11039375517569716,nan,0.0,0.27106776694173546,0.6282450674974039,0.3602865916069601,0.716014382210462,0.7563867443709865,none
|
||||||
|
3proxy-devel-s0,stream1,0,20.19585192748124,nan,nan,nan,0,0,0,10.01,7.102659,0.396438137560605,nan,9.87109375,0.12115913065201099,0.9980059820538385,0.27517924206213723,0.31464197628592916,0.4881052169317087,proxy
|
||||||
|
3proxy-devel-s1,stream1,0,20.28743240845509,nan,nan,nan,0,0,0,10.0,6.808442,0.39422690934903476,nan,7.00390625,0.12185870080606923,0.9505703422053232,0.270772238514174,0.3159040978930273,0.4954169361886507,proxy
|
||||||
|
3proxy-devel-s3,stream1,0,31.923388114459133,nan,nan,nan,0,0,0,9.99,5.274278,0.2502853688134804,nan,11.47265625,0.18870163778779966,0.9487179487179487,0.35872709739633557,0.5518938993659982,0.7661305966579064,proxy
|
||||||
|
haproxy,stream1,0,9.78116014326784,nan,nan,nan,0,0,0,10.01,6.489873,0.8182817878261277,nan,30.38671875,0.07142857142857142,0.9515209125475285,0.2633311389071758,0.16747538220395852,0.4553238964454953,proxy
|
||||||
|
haproxy-splice-response,stream1,0,9.56238803996089,nan,nan,nan,0,0,0,10.0,6.512339,0.8362446600225792,nan,36.5234375,0.06449309852451214,0.9514747859181731,0.24842871319880913,0.13893536707943008,0.4374489805681654,proxy
|
||||||
|
haproxy-splice,stream1,0,30.741158587381538,nan,nan,nan,0,0,0,9.99,5.286203,0.2598952181734058,nan,41.00390625,0.16369570675370324,0.9970059880239521,0.3567073170731707,0.46150417754058043,0.7326897263930425,proxy
|
||||||
|
direct,stream16,0,147.11615398017736,nan,nan,nan,0,0,4088,8.67,0.0,0.04712223697447121,nan,0.0,0.936986301369863,0.8846938775510204,0.9791252485089463,3.0461399696228404,2.527151531273022,origin
|
||||||
|
3proxy-devel-s0,stream16,0,18.968952312308485,nan,nan,nan,0,0,809,10.05,7.079188,0.4219542417470352,nan,97.94140625,0.15060804490177737,0.9544159544159544,0.2633624878522838,0.36124893880672737,0.4702103752593548,proxy
|
||||||
|
3proxy-devel-s1,stream16,0,18.65596755181685,nan,nan,nan,0,0,773,10.04,7.096519000000001,0.42930710995516325,nan,91.234375,0.13832785345232504,0.9534662867996201,0.2606021366137909,0.338468160087356,0.46835476751489613,proxy
|
||||||
|
3proxy-devel-s3,stream16,0,32.542164253674024,nan,nan,nan,0,0,755,10.03,5.166716,0.24605331541839898,nan,82.23046875,0.195440512942294,0.9525166191832859,0.3543205910697077,0.5694400958941302,0.7760906807349006,proxy
|
||||||
|
haproxy,stream16,0,8.9037702042322,nan,nan,nan,0,0,9,10.0,6.3312100000000004,0.8982415827319071,nan,53.74609375,0.08063748810656518,0.9505703422053232,0.3518324607329843,0.17015010563383554,0.6078941523415237,proxy
|
||||||
|
haproxy-splice-response,stream16,0,9.022532412025374,nan,nan,nan,0,0,10,10.01,6.321186999999999,0.88700495078703,nan,61.41015625,0.08210726150925486,0.9515209125475285,0.3695427982124441,0.16827594204343965,0.6469358221195294,proxy
|
||||||
|
haproxy-splice,stream16,0,32.03535608059839,nan,nan,nan,0,0,7,10.0,5.156018,0.24964724405036534,nan,58.48046875,0.2452561669829222,0.9505703422053232,0.5767676767676768,0.5901881230845435,1.166587714161185,origin
|
||||||
|
direct,stream1-down,0,43.52498712684525,nan,nan,nan,0,0,0,6.15,0.0,0.11302670577213765,nan,0.0,0.24923625254582485,0.6419624217118998,0.35376415722851434,0.6852284631871587,0.734344902356756,none
|
||||||
|
3proxy-devel-s0,stream1-down,0,20.13096689197303,nan,nan,nan,0,0,0,10.01,6.74482,0.39775337627243446,nan,6.32421875,0.21485072722633325,0.999001996007984,0.14590984974958263,0.47759441577207123,0.2955370607274329,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,0,33.28045322524086,nan,nan,nan,0,0,0,9.99,5.221013,0.24011534009151095,nan,8.671875,0.27279635258358664,0.9970059880239521,0.2521537442014579,0.7152801331286519,0.5410802431560445,proxy
|
||||||
|
3proxy-devel-s3,stream1-down,0,32.083116813971,nan,nan,nan,0,0,0,9.77,5.073230000000001,0.24359131038889575,nan,11.52734375,0.27095959595959596,0.9682854311199207,0.26363031914893614,0.7373431195496298,0.5930561278162897,proxy
|
||||||
|
haproxy,stream1-down,0,9.19744187775164,nan,nan,nan,0,0,0,9.94,6.411222,0.8644959889723903,nan,31.078125,0.21411073003429693,0.9448669201520913,0.08692893401015228,0.4824344120942362,0.15975992222257768,proxy
|
||||||
|
haproxy-splice-response,stream1-down,0,32.770997951518986,nan,nan,nan,0,0,0,10.0,5.380629,0.24409219710809374,nan,44.19140625,0.2849557522123894,0.9970089730807578,0.23089812332439677,0.7493016136173929,0.5381518371773574,proxy
|
||||||
|
haproxy-splice,stream1-down,0,31.796517433265464,nan,nan,nan,0,0,0,10.0,5.413102,0.2515726859164172,nan,44.1484375,0.25723938223938225,0.949667616334283,0.24204834605597964,0.7127209688654196,0.5382227022493651,proxy
|
||||||
|
direct,http-ka-1k,0,1.392508928,136195.96,0.46900000000000003,0.78,0,0,0,8.47,0.0,4.866037024072854,6.157568320292422,0.0,0.5939792562610675,0.8660531697341514,0.9587955625990491,1.759657967564108,0.8498758942805595,origin
|
||||||
|
3proxy-devel-s0,http-ka-1k,0,0.20023607296,19958.38,3.1,5.48,0,0,0,10.1,7.498736,40.35236948346512,50.1051712505457,9.703125,0.1822953948938201,0.9609895337773549,0.28926409684612936,0.4138579032297467,0.22532956427785908,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,0,0.17037262847999998,16986.52,3.65,7.22,0,0,0,10.09,7.741980000000001,47.378502474343,58.81324318022849,9.77734375,0.165358077563645,0.9591254752851711,0.24720179085385352,0.3643727705701595,0.20147473142818612,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,0,0.15149826047999998,15102.91,4.06,8.45,0,0,0,10.11,7.917393000000001,53.38675159948609,66.2776976530746,9.78125,0.15505350772889417,0.959203036053131,0.22986310092327283,0.33774170750721577,0.17303432001634952,proxy
|
||||||
|
haproxy,http-ka-1k,0,0.36993761280000004,36876.93,1.64,2.57,0,0,0,10.11,7.015325,21.863145893122873,27.146113755910523,29.5234375,0.21902497027348394,0.9601139601139601,0.38116032439176545,0.5632256593193199,0.307940754112563,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,0,0.37102813184,36987.28,1.65,2.57,0,0,0,10.0,6.935885,21.561707357138822,27.015490682357264,42.046875,0.2171115347950429,0.9514747859181731,0.3799126637554585,0.5641234130939057,0.3136928630017471,proxy
|
||||||
|
haproxy-splice,http-ka-1k,0,0.34804334592,34693.79,1.69,2.69,0,0,0,10.1,6.998108,23.21549914606682,28.823789614874215,40.03515625,0.21245247148288973,0.9600760456273765,0.366219169528567,0.5365608422416794,0.31847918246728263,proxy
|
||||||
|
direct,http-ka-1m,0,67.17328850944,8004.06,1.35,2.6,0,0,0,6.33,0.0,0.07538710866132965,78.95721591617811,0.0,0.9470057034220533,0.6121856866537717,0.5572687224669604,3.5502195053538923,0.5190191123657836,client
|
||||||
|
3proxy-devel-s0,http-ka-1m,0,18.4683593728,2196.62,6.98,15.02,0,0,0,10.03,6.973659,0.43447281039038366,456.01273016594683,18.03125,0.3596325953838907,0.9525166191832859,0.15689332501559575,1.1284430046449632,0.11029944665204378,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,0,24.653112279040002,2940.66,5.21,11.1,0,0,0,10.01,6.252597000000001,0.3248271418780815,339.90967435227003,16.9375,0.43906471421823334,0.9515209125475285,0.20336343818125194,1.4661536660440022,0.16923496619929956,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,0,24.481313587200003,2915.59,5.05,13.69,0,0,0,10.0,6.271345,0.32677985074227317,342.5596053713346,18.390625,0.43183962264150944,0.9514747859181731,0.1972534332084894,1.4413350093943296,0.16543211700047256,client
|
||||||
|
haproxy,http-ka-1m,0,7.988639170560001,946.53,17.96,24.76,0,0,0,10.09,5.339542,1.010434922351632,1055.439330543933,45.23046875,0.34366268732537464,0.9591254752851711,0.06826801517067003,0.8543363707968451,0.05419317037556818,proxy
|
||||||
|
haproxy-splice-response,http-ka-1m,0,27.4877906944,3271.35,4.64,7.65,0,0,0,10.0,5.856335,0.29103830456733704,305.5300947143294,51.3515625,0.47378593863251994,0.9505703422053232,0.20130881894671238,1.565048674942876,0.14446337793813396,client
|
||||||
|
haproxy-splice,http-ka-1m,0,24.395414241279997,2905.08,4.89,9.01,0,0,0,10.0,5.887141000000001,0.3279304840195347,344.1274648129667,53.25390625,0.4667515923566879,0.998003992015968,0.185502471169687,1.4324541954566299,0.1537169087196079,client
|
||||||
|
direct,http-ka-2k-50k-2000,0,26.37109919744,64034.14,28.83,46.05,0,0,0,8.51,0.0,0.258161404233802,13.192080411233265,0.0,0.7577505407354002,0.8351324828263003,0.954718176060798,2.370401588162736,0.7771550852587394,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,0,4.01034182656,9746.67,49.28,102.12,0,282,0,10.46,7.275017999999999,2.0866051728009234,106.62806581173928,158.6015625,0.1803123521060104,0.9961904761904762,0.2629757785467128,0.4538097519546965,0.17112897268812544,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,0,3.47389034496,8442.98,62.41,115.86,0,269,0,10.48,7.521523,2.4134325403113834,123.26511409080216,166.1484375,0.1670220326936745,0.9971455756422455,0.24459755715627937,0.4100610566772289,0.15592897056767693,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,0,3.10806315008,7553.8,63.05,134.6,0,252,0,10.5,7.702789,2.702647788795343,138.09429867824028,156.35546875,0.14983404457088667,0.9971509971509972,0.221767851525637,0.3644034356153315,0.14167377096983388,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,0,3.0126846771199998,7220.78,262.14,641.96,0,0,0,10.12,5.959411,2.6873041382277805,139.23284354190744,180.2890625,0.2386255924170616,0.9628924833491912,0.188125,0.48617909871796255,0.1226585616283394,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,0,3.69459462144,8895.4,212.21,590.16,0,0,0,10.12,6.055417,2.1913094208004105,112.95399245485189,193.5703125,0.2412811387900356,0.9628924833491912,0.22530383296977252,0.5251672031551009,0.15304671256401103,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,0,3.74333243392,9047.57,211.81,512.3,0,0,0,10.14,6.039669,2.167053058524421,111.39429626049127,194.2109375,0.2444813671967719,0.9638783269961977,0.22486689633573442,0.5337162981944547,0.14451089856316726,proxy
|
||||||
|
direct,http-close-1k,0,0.42437967872000004,41674.69,1.23,4.16,0,0,0,8.31,0.0,15.66521757133018,19.932120456208104,0.0,0.7293601651186791,0.8925886143931256,0.9306163691478613,1.8888012492576298,0.5955632120433562,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,0,0.05058330624,4970.97,12.01,21.05,0,0,0,10.07,7.047454999999999,159.26202929039698,202.3266560848687,96.4453125,0.14089184060721063,0.9581351094196003,0.16634860050890585,0.2911371314734927,0.08272168387286188,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,0,0.046389002240000005,4553.85,13.1,25.17,0,0,0,10.02,7.060357,172.79957776474907,219.70311574977526,32.70703125,0.1344876660341556,0.9524714828897338,0.15325914149443562,0.27210027759618666,0.07605559897795683,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,0,0.043201331200000005,4244.27,14.16,26.27,0,0,0,10.02,7.121382,185.54983787166262,235.80354411314804,36.38671875,0.13412604042806184,0.9515669515669516,0.15323604060913706,0.26069517940464176,0.07321112581200954,proxy
|
||||||
|
haproxy,http-close-1k,0,0.16156459008000001,15863.7,3.85,5.75,0,0,0,10.1,5.672904,50.01095844082619,63.03910921369634,29.16796875,0.3402233309574721,0.9600760456273765,0.21189945911549474,0.7695833448813446,0.19297524400233407,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,0,0.1556086784,15279.5,3.88,6.07,0,0,0,10.02,5.684828,51.513836390245956,65.48206431881009,35.47265625,0.319022770398482,0.9515669515669516,0.19692603266090297,0.72682738025748,0.17206422119404569,proxy
|
||||||
|
haproxy-splice,http-close-1k,0,0.15804137472,15517.31,3.87,5.59,0,0,0,10.07,5.737175,50.97399345122579,64.25103203618986,35.76171875,0.3325426944971537,0.959047619047619,0.2037037037037037,0.7563857876568768,0.18825061740562968,proxy
|
||||||
|
3proxy-devel-s0,stream1,1,19.03073365477215,nan,nan,nan,0,0,0,10.02,6.8042549999999995,0.421141972891027,nan,6.015625,0.10961298377028714,0.9970149253731343,0.28254185172531604,0.27539749837283634,0.5115315206684911,proxy
|
||||||
|
3proxy-devel-s1,stream1,1,19.53113154586653,nan,nan,nan,0,0,0,9.99,6.796412,0.4090861102193498,nan,6.02734375,0.12839690850162055,0.998001998001998,0.2811327192084613,0.31667574421913675,0.5011468813782385,proxy
|
||||||
|
3proxy-devel-s3,stream1,1,30.481930557323206,nan,nan,nan,0,0,0,9.99,5.168436,0.26212801185557927,nan,8.83984375,0.2026355047240179,0.998001998001998,0.36302065695902475,0.5474108125276388,0.7513007753978594,proxy
|
||||||
|
haproxy,stream1,1,9.52286579106004,nan,nan,nan,0,0,0,10.03,6.4630540000000005,0.8422058898133117,nan,30.8671875,0.07110582639714626,0.9507109004739337,0.25626461744069495,0.15700407099760288,0.4317086700256053,proxy
|
||||||
|
haproxy-splice-response,stream1,1,9.923060135713985,nan,nan,nan,0,0,0,10.0,6.603758,0.8060127758673513,nan,37.6015625,0.07158145065398336,0.9514747859181731,0.2477933965348153,0.16177087908697213,0.4517058171837601,proxy
|
||||||
|
haproxy-splice,stream1,1,32.40787644894179,nan,nan,nan,0,0,0,9.96,5.296882999999999,0.24579902808102863,nan,41.5390625,0.16979785969084424,0.9467680608365019,0.3493195074530136,0.4815135065525603,0.7018422967071395,proxy
|
||||||
|
direct,stream1,1,45.54215223999863,nan,nan,nan,0,0,0,6.45,0.0,0.11328436365147103,nan,0.0,0.26806701675418854,0.673277661795407,0.3343568747867622,0.7042953191432199,0.7456932823524565,none
|
||||||
|
3proxy-devel-s0,stream16,1,19.20837020301076,nan,nan,nan,0,0,756,10.03,7.100923,0.416693405947613,nan,93.85546875,0.13563327032136105,0.9525166191832859,0.26590909090909093,0.34599426697939994,0.47396307125763265,proxy
|
||||||
|
3proxy-devel-s1,stream16,1,19.04389393623892,nan,nan,nan,0,0,755,10.04,7.092061,0.42021165027538987,nan,96.03125,0.14279015240328252,0.9534662867996201,0.26926829268292685,0.34870123765856625,0.48039766805254897,proxy
|
||||||
|
3proxy-devel-s3,stream16,1,32.312037265531885,nan,nan,nan,0,0,740,10.02,5.193673,0.24764983803427731,nan,87.2890625,0.1979586992641823,0.9524714828897338,0.3504657886283328,0.5731720292292737,0.7655755400196378,proxy
|
||||||
|
haproxy,stream16,1,8.838810636282199,nan,nan,nan,0,0,1,10.01,6.335017,0.9054936419749885,nan,58.34375,0.07725219871642501,0.9506172839506173,0.3335637746284134,0.1635108949612568,0.5870389091305132,proxy
|
||||||
|
haproxy-splice-response,stream16,1,9.118261772261963,nan,nan,nan,0,0,11,10.0,6.335927000000001,0.8768713472766558,nan,55.9140625,0.083828069342199,0.9505703422053232,0.3649025069637883,0.17299556528563237,0.6285330698378542,proxy
|
||||||
|
haproxy-splice,stream16,1,33.777623619706226,nan,nan,nan,0,0,16,10.02,5.168037,0.23721268874895274,nan,58.0546875,0.24017155110793423,0.9506641366223909,0.5829111786558595,0.5940301178690139,1.171049308674524,origin
|
||||||
|
direct,stream16,1,158.7835683300083,nan,nan,nan,0,0,5769,8.81,0.0,0.044363415077372834,nan,0.0,0.942964824120603,0.8989795918367347,0.9910269192422732,3.0087516672094026,2.55830370641458,origin
|
||||||
|
3proxy-devel-s0,stream1-down,1,19.454098434850913,nan,nan,nan,0,0,0,9.99,6.960294,0.41076832193753404,nan,9.72265625,0.21548223350253806,0.998001998001998,0.1614824619457313,0.49753788320264997,0.3163528134938561,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,1,25.497514699593314,nan,nan,nan,0,0,0,10.02,5.16952,0.31435029217244614,nan,7.640625,0.23147477673183683,0.9515669515669516,0.1636828644501279,0.6308930452730215,0.35931608674704296,proxy
|
||||||
|
3proxy-devel-s3,stream1-down,1,29.79568789634541,nan,nan,nan,0,0,0,9.99,5.234784,0.2681982496100678,nan,8.86328125,0.2642369020501139,0.9970059880239521,0.21746403479424556,0.683366034132144,0.4762199709838256,proxy
|
||||||
|
haproxy,stream1-down,1,9.54585509813062,nan,nan,nan,0,0,0,9.99,6.513092,0.8371334420752972,nan,32.5234375,0.19990248659190638,0.950523311132255,0.08719086873811034,0.4643805955456297,0.1512008990238311,proxy
|
||||||
|
haproxy-splice-response,stream1-down,1,32.11154304363737,nan,nan,nan,0,0,0,10.01,5.422752,0.24935429702294853,nan,44.171875,0.2785515320334262,0.999001996007984,0.24917053749170537,0.7193251456146256,0.5400793949046443,proxy
|
||||||
|
haproxy-splice,stream1-down,1,32.641387823250035,nan,nan,nan,0,0,0,9.99,5.382465,0.24481699628101664,nan,44.14453125,0.2725659229208925,0.999,0.23877618889258398,0.7073367470044389,0.5191708103795882,proxy
|
||||||
|
direct,stream1-down,1,47.363695320783485,nan,nan,nan,0,0,0,6.27,0.0,0.10589250484995372,nan,0.0,0.25694621463165945,0.6544885177453027,0.35456971314209473,0.7103559838142272,0.7357656907725375,none
|
||||||
|
3proxy-devel-s0,http-ka-1k,1,0.1954545664,19480.77,3.11,8.24,0,0,0,10.11,7.478095000000001,41.38046068183342,51.38500635324015,9.6796875,0.17119694802098234,0.9601139601139601,0.26912,0.38913905482058053,0.2280820848385461,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,1,0.17012097024,16958.97,3.64,7.07,0,0,0,10.08,7.756333000000001,47.40156365569526,58.85100420364316,9.73828125,0.16345467523197715,0.96,0.23809523809523808,0.3606032261900403,0.22629640338001347,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,1,0.14814281728,14764.85,4.17,8.87,0,0,0,10.09,7.92054,54.48796065990409,67.66226537824481,9.78125,0.14910820451843043,0.9591254752851711,0.22264752791068582,0.32440564939346167,0.18538346354658058,proxy
|
||||||
|
haproxy,http-ka-1k,1,0.37211865088,37092.77,1.61,2.56,0,0,0,10.1,6.972002000000001,21.7135044988799,26.959573985345738,29.5078125,0.2174637163930526,0.9600760456273765,0.399439601494396,0.5574736779075283,0.3251224826925694,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,1,0.38872809472000003,38750.12,1.57,2.38,0,0,0,10.0,6.907742,20.579937773117177,25.792074611313435,35.62890625,0.22426120114394663,0.9505703422053232,0.38711694809255787,0.5812984006239967,0.3669708020229753,proxy
|
||||||
|
haproxy-splice,http-ka-1k,1,0.38520487936000003,38394.93,1.59,2.53,0,0,0,10.1,7.005531,20.97585060039879,26.04441991856606,35.5703125,0.2233890214797136,0.9600760456273765,0.38848920863309355,0.5774664003819621,0.3240608870042164,proxy
|
||||||
|
direct,http-ka-1k,1,1.28790298624,125969.8,0.465,0.88,0,0,0,8.03,0.0,4.987953338593231,6.31142438552035,0.0,0.5554994954591322,0.7911330049261084,0.9590865842055185,1.6123151826434574,0.8341077538159659,origin
|
||||||
|
3proxy-devel-s0,http-ka-1m,1,17.52346656768,2085.75,7.32,16.05,0,0,0,10.01,6.934069,0.45698720450494806,479.45205479452056,16.9609375,0.34888103651354535,0.9524262607040913,0.1506720850265708,1.088391926396938,0.10743430971326655,client
|
||||||
|
3proxy-devel-s1,http-ka-1m,1,24.56721293312,2930.8,5.13,11.94,0,0,0,10.01,6.23446,0.3259629011154175,341.06783876793077,19.4140625,0.436819687647894,0.9524262607040913,0.20317361543248288,1.4698893663336614,0.18540268510764865,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,1,23.79411881984,2832.29,5.36,11.91,0,0,0,10.02,6.27973,0.3368899710341911,353.4391534391534,16.56640625,0.4226317032837231,0.9524714828897338,0.1976925475522295,1.4079643136156588,0.20250309964218255,client
|
||||||
|
haproxy,http-ka-1m,1,7.7309411328,924.9,19.11,25.34,0,0,0,9.98,5.255472,1.0327332549624975,1078.8022916441466,45.5703125,0.3698153599143698,0.997002997002997,0.07263681592039802,0.8620304812457132,0.052901907749902596,proxy
|
||||||
|
haproxy-splice-response,http-ka-1m,1,28.43268349952,3386.59,4.5,6.96,0,0,0,10.02,5.860171,0.2819290694153201,295.7235191689048,51.3125,0.4864670658682635,0.9515669515669516,0.2144646211646838,1.6278445938678148,0.15585741558312555,client
|
||||||
|
haproxy-splice,http-ka-1m,1,25.94160246784,3092.2,4.96,7.82,0,0,0,9.99,5.880381,0.3080765735234646,322.93518668175204,51.27734375,0.4692159692159692,0.9514285714285714,0.1922835633626098,1.5441547102811608,0.18822358401489703,client
|
||||||
|
direct,http-ka-1m,1,67.25918785536,8019.97,1.34,2.69,0,0,0,6.01,0.0,0.0714846573874716,74.8471300297645,0.0,0.9455410225921522,0.5840621963070942,0.5243597751405371,3.5555038895581252,0.5123529448958959,client
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,1,4.0487616511999995,9840.18,52.78,99.11,0,264,0,10.46,7.268441,2.066804796355408,105.52865213882163,164.71484375,0.1847903340440654,0.9961904761904762,0.2703808624488511,0.46332691475186094,0.17968308350711779,proxy
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,1,3.58604603392,8715.53,46.43,101.61,0,223,0,10.46,7.629646,2.3334892862077186,119.1126901703562,120.65625,0.16477003319108582,0.9952426260704091,0.2452948557089084,0.407206812619395,0.16061743088064853,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,1,3.13717161984,7624.66,54.67,127.7,0,314,0,10.46,7.749003999999999,2.6673708084949395,136.13587557753627,146.4140625,0.15384615384615385,0.9952426260704091,0.22693032015065914,0.368184802773134,0.14735635026813118,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,1,2.99674632192,7178.41,263.32,842.86,0,0,0,10.16,5.9884260000000005,2.7122749565243254,140.41488729494037,181.42578125,0.23980075901328274,0.9639468690702088,0.19041653617287818,0.4880450758033609,0.12545220455379108,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,1,3.6067658956799997,8706.37,218.42,646.15,0,0,0,10.13,6.007440000000001,2.2468882745360763,115.56671039872226,191.1015625,0.24056043695084303,0.9629277566539924,0.22575615840349236,0.5232291269459143,0.14354447940572476,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,1,3.70088607744,8930.12,216.19,525.91,0,0,0,10.16,6.085102,2.196230802549413,113.06854223933583,197.984375,0.24319848592382304,0.9648622981956315,0.21962616822429906,0.5213552104500473,0.14261711709342764,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,1,26.6287972352,64680.84,27.9,62.88,0,147,0,8.68,0.0,0.260770320892334,13.327989853530305,0.0,0.7359537014709429,0.8830111902339777,0.9430018999366688,2.330217501136078,0.7878960348622462,origin
|
||||||
|
3proxy-devel-s0,http-close-1k,1,0.050331648,4939.81,12.14,20.84,0,0,0,10.07,7.035455,160.05833943684897,203.62356937760342,94.296875,0.1447835344215756,0.956315289648623,0.1645489199491741,0.29302739251147975,0.08173053409934465,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,1,0.048737812479999996,4785.45,12.62,21.7,0,0,0,10.03,7.0636779999999995,164.63603087013232,209.2766081749327,29.56640625,0.13607219187841368,0.9516129032258065,0.15640862944162437,0.2768690069756313,0.07603578961303394,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,1,0.04001366016,3927.46,15.43,29.14,0,0,0,10.0,7.103312,199.93172251703356,254.31703161160704,29.05859375,0.12345385347288297,0.9514747859181731,0.1455816910362365,0.2464187885749304,0.07130975150641841,proxy
|
||||||
|
haproxy,http-close-1k,1,0.1568669696,15406.84,3.81,5.78,0,0,0,10.11,5.73642,51.55961143779245,64.97304036554566,30.5390625,0.34042050555161824,0.9601139601139601,0.21192893401015228,0.7696089337629411,0.18442246672521745,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,1,0.13681819648,13431.29,4.23,6.39,0,0,0,10.02,5.684278,58.58869804040849,74.55135263831434,38.82421875,0.3010191988622896,0.9515669515669516,0.18531580634818853,0.6783154604836974,0.1720774269403825,proxy
|
||||||
|
haproxy-splice,http-close-1k,1,0.15997075456,15708.45,3.9,5.49,0,0,0,10.11,5.735231000000001,50.559241420383785,63.723574571079205,41.48046875,0.33745247148288976,0.9601139601139601,0.20338441890166029,0.7724084641697052,0.21291653797387475,proxy
|
||||||
|
direct,http-close-1k,1,0.47714402304000003,46848.77,0.6890000000000001,4.34,0,0,0,8.9,0.0,14.9221192264691,18.80934718884796,0.0,0.6699346405228758,0.9213250517598344,0.8387835186396337,1.8660633554427881,0.537949761693104,client
|
||||||
|
3proxy-devel-s1,stream1,2,19.460706796087003,nan,nan,nan,0,0,0,10.01,6.81095,0.4113867047570984,nan,5.73828125,0.11880483756224805,0.9515209125475285,0.2578759337447223,0.3073460314592471,0.4725699173434711,proxy
|
||||||
|
3proxy-devel-s3,stream1,2,31.95813667025285,nan,nan,nan,0,0,1,9.99,5.199859999999999,0.25002017860555004,nan,9.578125,0.184015314668581,0.9514285714285714,0.34635248547449965,0.5594977754397917,0.7197510034410624,proxy
|
||||||
|
haproxy,stream1,2,9.547148680464996,nan,nan,nan,0,0,0,10.01,6.482998,0.8384318207627048,nan,33.30078125,0.07035892560019016,0.9515209125475285,0.29044962257958645,0.1598605944740029,0.49331794608728874,proxy
|
||||||
|
haproxy-splice-response,stream1,2,9.70418423252907,nan,nan,nan,0,0,0,10.01,6.554317,0.824919682193721,nan,36.80078125,0.07210851975249881,0.9515209125475285,0.25,0.16937197920556168,0.4240727894833117,proxy
|
||||||
|
haproxy-splice,stream1,2,30.315374680786938,nan,nan,nan,0,0,1,10.01,5.425144,0.2640741329799879,nan,42.79296875,0.17273376159885795,0.9497153700189753,0.34108527131782945,0.5024062682800922,0.7090950230151298,proxy
|
||||||
|
direct,stream1,2,46.16882816961793,nan,nan,nan,0,0,0,6.56,0.0,0.11365176584463065,nan,0.0,0.27445584188141103,0.6869109947643979,0.3446982611660416,0.7221567700430666,0.7675503061365645,none
|
||||||
|
3proxy-devel-s0,stream1,2,18.461107523773826,nan,nan,nan,0,0,0,9.99,6.9583829999999995,0.43281138091180243,nan,7.1484375,0.12071816678478621,0.950523311132255,0.2683560753736192,0.31399872469524126,0.4639908552002264,proxy
|
||||||
|
3proxy-devel-s1,stream16,2,18.020074270836272,nan,nan,nan,0,0,727,10.05,7.051068,0.44479426767601693,nan,96.1796875,0.1385443482330915,0.9535104364326376,0.2593192868719611,0.3279261451071528,0.4596744414757201,proxy
|
||||||
|
3proxy-devel-s3,stream16,2,30.639976959391845,nan,nan,nan,0,0,684,10.03,5.143437,0.26150564255986347,nan,78.3515625,0.18478002378121283,0.9516129032258065,0.34071222329162654,0.534247194747567,0.7434127715086754,proxy
|
||||||
|
haproxy,stream16,2,9.366291333752915,nan,nan,nan,0,0,33,10.01,6.3226759999999995,0.8546738804088421,nan,48.78515625,0.08297669995244888,0.9506172839506173,0.37302423603793466,0.1739761258305773,0.6459595372797895,proxy
|
||||||
|
haproxy-splice-response,stream16,2,9.402789198025244,nan,nan,nan,0,0,10,10.02,6.383591999999999,0.8520282781797867,nan,63.23046875,0.08499525166191833,0.9497630331753555,0.3852372583479789,0.1749024975696716,0.6569749348187767,proxy
|
||||||
|
haproxy-splice,stream16,2,33.270384987816755,nan,nan,nan,0,0,6,10.0,5.135771,0.24031102845061109,nan,63.9765625,0.26432970156324015,0.9505703422053232,0.6186612576064908,0.6300992880604515,1.245976808537982,origin
|
||||||
|
direct,stream16,2,140.70515443427354,nan,nan,nan,0,0,5102,8.61,0.0,0.04894226677896884,nan,0.0,0.9261964735516373,0.8758901322482198,0.9903814262023217,2.9205099931336904,2.5546118362716292,origin
|
||||||
|
3proxy-devel-s0,stream16,2,19.19533298049565,nan,nan,nan,0,0,855,10.05,7.102291999999999,0.4174765606709127,nan,90.58984375,0.14151386929948284,0.9535104364326376,0.26768332251784555,0.349868959159798,0.4749019705350233,proxy
|
||||||
|
3proxy-devel-s1,stream1-down,2,33.04237918250702,nan,nan,nan,0,0,0,9.99,5.265986,0.24184486600768362,nan,11.48828125,0.2806174089068826,0.9970059880239521,0.2515010006671114,0.7382630929315407,0.5689236944620164,proxy
|
||||||
|
3proxy-devel-s3,stream1-down,2,30.702375569014116,nan,nan,nan,0,0,0,9.89,5.236485999999999,0.257672357918747,nan,11.5546875,0.2807371875788942,0.9870259481037924,0.21238640188488725,0.7642588465551465,0.5021358119586412,proxy
|
||||||
|
haproxy,stream1-down,2,9.59741366941687,nan,nan,nan,0,0,0,10.0,6.579014,0.8334674704767419,nan,33.640625,0.22695584817970565,0.998003992015968,0.09580838323353294,0.4623375956264977,0.17263832546095242,proxy
|
||||||
|
haproxy-splice-response,stream1-down,2,32.288009365410076,nan,nan,nan,0,0,1,9.99,5.336526,0.24749606717600786,nan,41.56640625,0.2938196555217832,0.998001998001998,0.22143817204301075,0.7322595357015679,0.5141269913089749,proxy
|
||||||
|
haproxy-splice,stream1-down,2,33.093784635370206,nan,nan,nan,0,0,0,10.01,5.277381999999999,0.24195361569450163,nan,41.25,0.2582669563118513,0.9515209125475285,0.25260498894853173,0.7070112036477109,0.5410891387014686,proxy
|
||||||
|
direct,stream1-down,2,46.95447858195746,nan,nan,nan,0,0,0,6.37,0.0,0.10851921035205095,nan,0.0,0.26443768996960487,0.6649269311064718,0.3598800399866711,0.7573401831395081,0.7468296421635207,none
|
||||||
|
3proxy-devel-s0,stream1-down,2,18.62370518271996,nan,nan,nan,0,0,0,10.0,6.80107,0.42951530903067087,nan,6.98828125,0.20619603859827323,0.998003992015968,0.1573889993373095,0.45951622824452887,0.30343601453730346,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1k,2,0.14336131072,14287.74,4.11,8.84,0,0,0,10.1,7.718984,56.36109184144602,69.9916148659418,9.70703125,0.14826273203236554,0.9582542694497154,0.21959026888604352,0.3206292777436968,0.19014004903072662,proxy
|
||||||
|
3proxy-devel-s3,http-ka-1k,2,0.14923333632,14873.8,4.11,9.25,0,0,0,10.06,7.911275,53.92896921330453,66.9688920842237,9.78125,0.1516813737181016,0.9571836346336822,0.22693903606766677,0.33300257792322757,0.1825431112167922,proxy
|
||||||
|
haproxy,http-ka-1k,2,0.385875968,38460.77,1.58,2.52,0,0,0,10.11,6.997935,20.96010291058084,26.026984654119136,31.26171875,0.2299809342230696,0.9601139601139601,0.3968154854823603,0.5917271665800499,0.35079642373538045,proxy
|
||||||
|
haproxy-splice-response,http-ka-1k,2,0.35685138432,35570.7,1.68,2.75,0,0,0,10.11,6.9858139999999995,22.664897364520893,28.141022429313427,35.59765625,0.215,0.9610266159695817,0.3744907552491382,0.5451497413033163,0.3308683890457966,proxy
|
||||||
|
haproxy-splice,http-ka-1k,2,0.35072770048,34961.72,1.74,2.77,0,0,0,10.1,7.099559,23.037815344901038,28.605334186773007,35.53515625,0.20946915351506457,0.9609895337773549,0.3789670192906036,0.5385144260599876,0.3213769805971398,proxy
|
||||||
|
direct,http-ka-1k,2,1.30451243008,127595.2,0.512,0.9,0,0,0,8.38,0.0,5.139084799359768,6.502682162397892,0.0,0.5618661257606491,0.857727737973388,0.9562737642585551,1.6638270657422356,0.8436830949512779,origin
|
||||||
|
3proxy-devel-s0,http-ka-1k,2,0.18639486976,18583.64,3.23,6.87,0,0,0,10.09,7.502314,43.30591292771855,53.757139203818944,9.984375,0.17614853606284217,0.960952380952381,0.2658591010519605,0.39198490160608823,0.2158252998070394,proxy
|
||||||
|
3proxy-devel-s1,http-ka-1m,2,26.11340115968,3113.98,4.89,10.44,0,0,0,10.01,6.225759,0.30666246618095194,321.15242709101994,16.42578125,0.45114198257593596,0.9524262607040913,0.2119514472455649,1.5078911239023824,0.1416532352312387,client
|
||||||
|
3proxy-devel-s3,http-ka-1m,2,26.027501813759997,3098.46,4.9,10.43,0,0,0,10.01,6.271611,0.3076745535280838,322.6846329905548,18.4765625,0.4512166312308056,0.9524262607040913,0.20870917573872472,1.5137372539793876,0.1549652885522965,client
|
||||||
|
haproxy,http-ka-1m,2,7.21529339904,859.71,19.82,24.31,0,0,0,10.11,5.271164000000001,1.1209523373056618,1164.3441206956122,45.015625,0.3303030303030303,0.9601139601139601,0.06862745098039216,0.8010778581657361,0.044683886873217324,proxy
|
||||||
|
haproxy-splice-response,http-ka-1m,2,27.74548873216,3305.68,4.64,7.36,0,0,0,10.0,5.864785,0.2883351624196528,302.33401862377553,51.32421875,0.49252651880424303,0.9514747859181731,0.20888055034396497,1.6316151063691278,0.16732687276849526,client
|
||||||
|
haproxy-splice,http-ka-1m,2,26.37109919744,3146.87,4.71,8.42,0,0,0,10.0,5.907016,0.30336240215487903,317.6115610608226,51.36328125,0.48265060240963853,0.9514747859181731,0.2013170272812794,1.5830998010045267,0.1644870139479281,client
|
||||||
|
direct,http-ka-1m,2,64.68220747776,7710.34,1.38,2.68,0,0,0,6.15,0.0,0.07606419434110483,79.62608110207675,0.0,0.9446161159971476,0.5942028985507246,0.535435529191383,3.552113036807283,0.4452050881872812,client
|
||||||
|
3proxy-devel-s0,http-ka-1m,2,17.35166787584,2068.88,7.33,16.67,0,0,0,10.02,6.932848000000001,0.46197288107163836,483.730810080139,17.2421875,0.35457324241711735,0.9515669515669516,0.1571875,1.1025838934919743,0.12833954124642324,client
|
||||||
|
3proxy-devel-s1,http-ka-2k-50k-2000,2,3.44050368512,8361.83,53.12,123.6,0,357,0,10.48,7.57941,2.4368524981561177,124.56615794228118,160.96484375,0.1707721459024159,0.9961977186311787,0.2540880503144654,0.41668664213565426,0.1597138074505042,proxy
|
||||||
|
3proxy-devel-s3,http-ka-2k-50k-2000,2,2.85103620096,6929.07,60.25,126.43,0,323,0,10.48,7.661716,2.9406852137398127,150.1325119977079,143.328125,0.1466603280247207,0.9952516619183286,0.2219083490269931,0.3539078204913683,0.13690133799925638,proxy
|
||||||
|
haproxy,http-ka-2k-50k-2000,2,2.8979285196799998,6934.44,269.62,813.2,0,0,0,10.12,6.051574,2.7937197018558586,144.9524464306176,180.29296875,0.24976190476190477,0.9619771863117871,0.1926806380982171,0.5136741950540885,0.12072391659634894,proxy
|
||||||
|
haproxy-splice-response,http-ka-2k-50k-2000,2,3.4263269376,8290.71,215.76,961.43,0,0,0,10.14,5.998766,2.367549900442986,121.52153591716402,189.671875,0.22850356294536817,0.9647954329210275,0.21896444167186524,0.4937350854709511,0.13783791048585062,proxy
|
||||||
|
haproxy-splice,http-ka-2k-50k-2000,2,3.76338120704,9111.59,208.76,559.94,0,0,0,10.16,6.003553,2.1597599479944494,110.82870638028645,194.00390625,0.24904942965779467,0.9648622981956315,0.2349641632907448,0.5470138075507407,0.1521004174389673,proxy
|
||||||
|
direct,http-ka-2k-50k-2000,2,27.31599200256,66458.99,27.47,44.28,0,22,0,8.82,0.0,0.25831022352542515,13.20108302762798,0.0,0.7534478586982821,0.9158878504672897,0.9549920760697306,2.4151540166905456,0.8031685413114039,origin
|
||||||
|
3proxy-devel-s0,http-ka-2k-50k-2000,2,3.92268087296,9533.61,52.91,126.05,0,214,0,10.49,7.2718929999999995,2.1393532310640184,109.31182526780876,162.71484375,0.18108556529983408,0.997148288973384,0.27204502814258913,0.4585054210521386,0.18529447186781178,proxy
|
||||||
|
3proxy-devel-s1,http-close-1k,2,0.047647293439999995,4679.83,12.8,22.42,0,0,0,10.03,7.1012830000000005,168.40410904145577,213.900322023416,55.19921875,0.1408216575635241,0.9534220532319392,0.16040738383195416,0.2854323479659474,0.07986373536240256,proxy
|
||||||
|
3proxy-devel-s3,http-close-1k,2,0.04563402752,4480.67,13.42,22.74,0,0,0,9.99,7.146518,175.13247097239773,222.69778639737845,38.70703125,0.13810316139767054,0.9514285714285714,0.1610034931724357,0.2797102369549026,0.0789084780629264,proxy
|
||||||
|
haproxy,http-close-1k,2,0.16366174208,16073.8,3.82,5.4,0,0,0,10.03,5.689025,49.02795178654375,62.33840493237868,29.38671875,0.34765068818224965,0.9516129032258065,0.2133676092544987,0.8019320843617179,0.18061427611053318,proxy
|
||||||
|
haproxy-splice-response,http-close-1k,2,0.15275655168000002,15001.69,4.01,5.74,0,0,0,10.11,5.752631,52.94699252535522,66.72738792966894,35.4453125,0.3222827373904807,0.9610266159695817,0.1998084902649218,0.72874555766995,0.17397332213459915,proxy
|
||||||
|
haproxy-splice,http-close-1k,2,0.15661531136,15378.8,3.87,6.22,0,0,0,10.11,5.722536,51.642460304591246,65.09100507980247,35.3515625,0.34539862786846465,0.9601139601139601,0.21547314578005114,0.7819750986780002,0.2281534392018871,proxy
|
||||||
|
direct,http-close-1k,2,0.44182798336,43382.27,0.96,4.45,0,0,0,8.43,0.0,15.263858908875424,19.239854571348364,0.0,0.6722235842118166,0.8646153846153846,0.8494345718901454,1.813771219050329,0.558874970807077,client
|
||||||
|
3proxy-devel-s0,http-close-1k,2,0.0486539264,4775.56,12.56,21.96,0,0,0,10.03,7.001541,164.91988609577047,209.67472196671963,40.96875,0.13990498812351543,0.9534220532319392,0.16428344455036542,0.2892214286563271,0.0808064950394836,proxy
|
||||||
|
436
bench/data/skylake-tunnels.csv
Normal file
436
bench/data/skylake-tunnels.csv
Normal file
@ -0,0 +1,436 @@
|
|||||||
|
proxy,scenario,rep,gbit,rate,p50_ms,p99_ms,errors,timeouts,retrans,prx_cpu_s,prx_task_s,cpu_s_per_gb,cpu_us_per_req,peak_mb,cli_util,prx_util,srv_util,cli_thread,srv_thread,bound
|
||||||
|
3proxy-devel-s0,connect-stream1-down,0,19.85732123286692,nan,nan,nan,0,0,0,10.0,6.800343000000001,0.40283190234379124,nan,8.27734375,0.1959143490031996,0.9514747859181731,0.15562599049128367,0.47764145899626403,0.31184616403265075,proxy
|
||||||
|
3proxy-devel-s1,connect-stream1-down,0,33.7206867778484,nan,nan,nan,0,0,0,9.99,5.263732,0.23697971017809005,nan,11.63671875,0.2738639095936523,0.9514285714285714,0.26777847702957835,0.7611881178236162,0.5885570112894215,proxy
|
||||||
|
3proxy-devel-s3,connect-stream1-down,0,33.319725752768534,nan,nan,nan,0,0,0,9.95,5.195779,0.23887246679758176,nan,11.734375,0.29494949494949496,0.9930139720558883,0.28848684210526315,0.7932681619756783,0.6279670735271047,proxy
|
||||||
|
3proxy-devel-s,connect-stream1-down,0,31.554487351843235,nan,nan,nan,0,0,0,9.99,5.081328,0.25324928434500216,nan,7.828125,0.2693326909178511,0.950523311132255,0.2412252712188896,0.7392965466229975,0.5448069955129871,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,0,32.86454064972893,nan,nan,nan,0,0,0,9.98,5.181647000000001,0.24291078570340466,nan,8.6640625,0.2704326923076923,0.9486692015209125,0.2520478890989288,0.7592587949350756,0.5407768590475761,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,0,5.1488074257817775,nan,nan,nan,0,0,0,10.01,6.122942999999999,1.5551486368374299,nan,2.41015625,0.21337890625,0.9506172839506173,0.05938092229943146,0.45671566807621855,0.09029501485183358,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,0,19.59119699783793,nan,nan,nan,0,0,0,9.99,6.681013,0.40789512441231485,nan,9.69921875,0.1902552204176334,0.998001998001998,0.18259162303664922,0.4392154906531986,0.33815600154348424,proxy
|
||||||
|
tinyproxy,connect-stream1-down,0,1.240751705741974,nan,nan,nan,0,0,0,10.01,6.0596689999999995,6.453459460690595,nan,2.90625,0.22559920929083271,0.9506172839506173,0.022806461830852075,0.48626781617292647,0.026627647417475232,proxy
|
||||||
|
squid,connect-stream1-down,0,13.080652859058082,nan,nan,nan,0,0,0,9.99,7.431445999999999,0.6109141661364821,nan,22.16015625,0.13539367181751288,0.950523311132255,0.1196716135143669,0.29877853636315277,0.22154853514556141,proxy
|
||||||
|
3proxy-devel-s0,connect-stream16,0,18.765810660314997,nan,nan,nan,0,0,856,10.04,7.026578,0.42673605066155984,nan,83.140625,0.1382228490832158,0.9534662867996201,0.26729457616109126,0.3402860984222537,0.47202304636996645,proxy
|
||||||
|
3proxy-devel-s1,connect-stream16,0,19.14012287260956,nan,nan,nan,0,0,833,10.04,7.057825,0.41829328426112505,nan,90.28125,0.14080865068171133,0.9534662867996201,0.2750809061488673,0.3516754325726224,0.47959849033554447,proxy
|
||||||
|
3proxy-devel-s3,connect-stream16,0,28.049162150665783,nan,nan,nan,0,0,735,10.03,5.173525,0.28544240501496726,nan,68.078125,0.18325099976476122,0.9525166191832859,0.3306581059390048,0.5036656019890496,0.7101766890082902,proxy
|
||||||
|
3proxy-devel-s,connect-stream16,0,31.635698125017967,nan,nan,nan,0,0,710,10.04,5.157374,0.25338524954681224,nan,104.4453125,0.20452403393025448,0.952561669829222,0.356116256786969,0.586346837632543,0.7824585125817874,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,0,27.231397098455915,nan,nan,nan,0,0,751,10.03,5.614567,0.29395112704672044,nan,76.33984375,0.18231132075471698,0.9534220532319392,0.3348285805831464,0.5028541051750042,0.7142539546783897,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,0,6.041357402166123,nan,nan,nan,0,0,208,10.04,6.2693710000000005,1.3242591341000638,nan,80.19140625,0.04948846062336426,0.9534662867996201,0.31103896103896106,0.11501143699283867,0.5012926703456926,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,0,19.148850854907298,nan,nan,nan,0,0,857,10.04,7.049843999999999,0.4181288850337072,nan,77.359375,0.14433474377056887,0.9534662867996201,0.27358184764991894,0.3583421502542191,0.4834120779160642,proxy
|
||||||
|
tinyproxy,connect-stream16,0,1.1814802870885202,nan,nan,nan,0,0,70,10.04,6.127127,6.756560032967275,nan,83.0390625,0.015432098765432098,0.9543726235741445,0.30340046219874545,0.02661742343920452,0.4920188644152481,proxy
|
||||||
|
squid,connect-stream16,0,12.065740204956295,nan,nan,nan,0,0,0,10.03,7.687776,0.6647973376809186,nan,65.0625,0.10712589073634204,0.9516129032258065,0.2786729857819905,0.23002082018106762,0.4367171258959483,proxy
|
||||||
|
3proxy-devel-s0,connect-ka-1k,0,0.2948595712,28839.2,2.07,4.79,0,0,0,10.09,6.933898,27.37574353496177,34.6840281597184,9.76171875,0.22971346014928967,0.9582146248812915,0.3921506062539885,0.578847593595612,0.3827256172586037,proxy
|
||||||
|
3proxy-devel-s1,connect-ka-1k,0,0.28932308992,28295.62,2.15,4.1,0,0,0,10.09,7.080558,27.899605255259676,35.32381329141621,9.2890625,0.22805755395683452,0.9591254752851711,0.3840304182509506,0.5703233093578005,0.3562015719019486,proxy
|
||||||
|
3proxy-devel-s3,connect-ka-1k,0,0.24377294848,23841.24,2.45,4.51,0,0,0,10.09,7.2292819999999995,33.1127799467965,41.93595311818125,9.26953125,0.2027220630372493,0.9573055028462998,0.3348101265822785,0.4971062673224104,0.3029912377578263,proxy
|
||||||
|
3proxy-devel-s,connect-ka-1k,0,0.29293019136000004,28652.15,2.09,4.03,0,0,0,10.09,6.933281999999999,27.556053415060315,34.915307022855856,9.79296875,0.23558957187275772,0.9591254752851711,0.39923712650985377,0.5807592706669743,0.3163105775421006,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,0,0.27288141824,26689.08,2.22,4.43,0,0,0,10.08,7.235514,29.551297600292035,37.39579816656712,4.93359375,0.2183385204692363,0.9572649572649573,0.3693579148124603,0.5437063486732401,0.3590110202524547,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,0,0.312475648,30561.39,2.0,3.48,0,0,0,10.06,6.8950130000000005,25.755607041736578,32.70640635921778,5.1796875,0.23988508498922673,0.9553656220322887,0.4062697910069664,0.5970117965467678,0.32108800332522364,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,0,0.30777802752,30102.91,2.02,3.53,0,0,0,10.11,6.941009,26.278679037522995,33.25581318851211,9.50390625,0.2369928400954654,0.9601139601139601,0.3910828025477707,0.584600178559927,0.3676141085110889,proxy
|
||||||
|
tinyproxy,connect-ka-1k,0,0.24024973312,23502.2,2.69,6.02,0,0,0,10.07,6.972906,33.53177502168624,42.57730084435819,5.7265625,0.2016627078384798,0.9554079696394687,0.3322824716267339,0.4857000902038362,0.29729112446317096,proxy
|
||||||
|
squid,connect-ka-1k,0,0.30685528064,30013.99,1.89,2.89,0,0,0,10.05,7.25908,26.20127632554077,33.357120334566936,20.3515625,0.22854410710016734,0.9544159544159544,0.36240978977094446,0.5722461353848369,0.3201249879456044,proxy
|
||||||
|
3proxy-devel-s0,connect-ka-50k-2000,0,4.45955178496,10833.43,135.15,253.78,2,0,0,10.28,6.703114,1.8441315173726063,94.14350473922799,384.8046875,0.20850059031877213,0.976258309591643,0.24734208880550343,0.5361281137228583,0.15484256281650252,proxy
|
||||||
|
3proxy-devel-s1,connect-ka-50k-2000,0,6.394887536640001,15534.85,101.38,219.17,3,1,0,10.23,6.45021,1.2797723107887577,65.20408943731994,283.5625,0.2736916548797737,0.9715099715099715,0.32546583850931676,0.7205038265235302,0.20232443559896654,proxy
|
||||||
|
3proxy-devel-s3,connect-ka-50k-2000,0,5.951130173439999,14456.79,111.78,219.62,1,0,0,10.26,6.546646,1.3792338195915208,70.3043093937795,291.62109375,0.25668700140778977,0.9734345351043643,0.3083564600678384,0.6653620550931884,0.18975531301249787,proxy
|
||||||
|
3proxy-devel-s,connect-ka-50k-2000,0,6.30580051968,15318.41,101.89,229.08,0,0,0,10.2,6.451349,1.2940466439642613,65.9442964648685,397.92578125,0.26313309776207305,0.9695817490494296,0.3116640746500778,0.690996517709627,0.19661327151525076,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,0,4.616083210239999,11213.57,137.13,235.03,0,0,0,10.26,6.437123000000001,1.7781308581682282,90.64324902156532,177.3515625,0.21780080056510479,0.9734345351043643,0.2640397145516599,0.5569898381497981,0.15767715557443768,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,0,3.3573725798400003,8155.32,154.45,313.75,0,0,0,10.19,6.457421,2.428089169772303,123.88605886715378,167.8515625,0.23656418681060784,0.9686311787072244,0.2059190031152648,0.4952230300587449,0.12153394975293813,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,0,5.23256201216,12711.34,120.69,228.73,1,0,0,10.28,6.831584,1.571696614562459,80.07540174015999,382.015625,0.23586239396795475,0.9753320683111955,0.2771384136858476,0.6102433548573601,0.16718430199774367,proxy
|
||||||
|
tinyproxy,connect-ka-50k-2000,0,0.97215578112,2359.76,446.09,1360.0,0,47,0,10.71,6.685301,8.813402302796565,425.33756949960286,127.73828125,0.23471036233556428,0.9718693284936479,0.09599759253686428,0.4528107461409652,0.04987684337382585,proxy
|
||||||
|
squid,connect-ka-50k-2000,0,4.51701374976,10973.1,167.69,203.6,0,0,0,10.26,7.378838,1.8171297354222375,92.6410835214447,231.875,0.14855244423350736,0.9734345351043643,0.19277864992150706,0.41445278404048264,0.12918874161986427,proxy
|
||||||
|
3proxy-devel-s0,connect-close-1k,0,0.047815065600000005,4696.77,3.69,12.12,19,0,0,10.06,6.878309,168.31515128152412,212.30795205132534,11.453125,0.33426704014939307,0.9553656220322887,0.17573090223200252,0.9917984567983016,0.08156589450260426,client
|
||||||
|
3proxy-devel-s1,connect-close-1k,0,0.04085252096,4007.89,4.67,15.21,15,0,0,10.03,7.005148,196.4138273830531,248.26732673267327,13.640625,0.30004688232536336,0.9525166191832859,0.16208530805687205,0.8783284708250865,0.07501541081570262,proxy
|
||||||
|
3proxy-devel-s3,connect-close-1k,0,0.0385875968,3786.95,4.91,16.0,18,0,0,10.04,7.122516,208.14978558084238,262.65533028122957,13.93359375,0.28752048700538513,0.9552806850618458,0.15762925598991173,0.8297415694765251,0.07123307114382962,proxy
|
||||||
|
3proxy-devel-s,connect-close-1k,0,0.0452984832,4446.62,3.75,13.6,26,0,0,10.06,6.882453,177.66599301938658,224.0784051676133,11.9296875,0.3291998128217127,0.9571836346336822,0.17318611987381705,0.9638878749829372,0.08074167616348908,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,0,0.03951034368,3879.42,4.53,16.86,23,0,0,10.11,6.974595,204.7058882986664,258.0595757714986,8.546875,0.2899436090225564,0.9573863636363636,0.15895498898331759,0.8572045788454714,0.07311180751449191,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,0,0.04630511616,4545.64,4.33,13.68,19,0,0,10.06,6.665714,173.80368882331297,219.37284661345893,9.0859375,0.3341938512086365,0.9562737642585551,0.18150252525252525,1.0010445872380498,0.08644426601136486,client
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,0,0.032631685120000004,3202.15,7.07,20.47,7,0,0,10.08,7.132296,247.12177659061695,311.6786741288148,22.08984375,0.24806201550387597,0.9581749049429658,0.14357682619647355,0.7128933283165114,0.06459137050072417,proxy
|
||||||
|
tinyproxy,connect-close-1k,0,0.04596957184,4514.24,4.7,15.22,18,0,0,10.08,6.560123,175.420385207573,221.1835955499967,7.09375,0.4436636214570157,0.9581749049429658,0.17842454919329326,1.4360457291858633,0.08546988831236103,client
|
||||||
|
squid,connect-close-1k,0,0.035483811840000004,3480.61,7.66,16.61,0,0,0,10.07,7.335451,227.03310558418292,286.8700680853488,20.58984375,0.2726843100189036,0.9572243346007605,0.1454429977770721,0.791864614278867,0.06931786051036744,proxy
|
||||||
|
3proxy-devel-s0,socks-stream1-down,0,19.57784625635819,nan,nan,nan,0,0,0,10.02,6.793774999999999,0.40939828951649176,nan,6.859375,0.19701419481155164,0.9515669515669516,0.16854990583804144,0.475760090192312,0.3242555852597749,proxy
|
||||||
|
3proxy-devel-s1,socks-stream1-down,0,30.8189555004748,nan,nan,nan,0,0,0,9.99,5.166981,0.25929310129544236,nan,11.55859375,0.2535448209565008,0.9496197718631179,0.2689286836317939,0.7116683014514943,0.5825910222722798,proxy
|
||||||
|
3proxy-devel-s3,socks-stream1-down,0,32.71796203443954,nan,nan,nan,0,0,0,10.0,5.198404,0.24448799354122336,nan,11.5078125,0.26393244873341376,0.9505703422053232,0.22511923688394275,0.7183942811205855,0.502006710265188,proxy
|
||||||
|
3proxy-devel-s,socks-stream1-down,0,32.11020251407526,nan,nan,nan,0,0,0,10.01,5.217347,0.24936488154735859,nan,9.359375,0.2691660658495554,0.9506172839506173,0.22753346080305928,0.7412551061406177,0.5134908097257191,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,0,31.2801104074968,nan,nan,nan,0,0,0,10.0,5.251258,0.255726465976966,nan,9.4453125,0.2652864708714492,0.949667616334283,0.2684310018903592,0.7288291576047067,0.5771235282819468,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,0,5.7272295773745165,nan,nan,nan,0,0,0,10.01,6.091664000000001,1.3980821832093822,nan,2.8984375,0.22384428223844283,0.9515209125475285,0.06327111673521038,0.49098889078696895,0.1007934031676285,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,0,20.187348122829356,nan,nan,nan,0,0,0,10.0,6.679142,0.39624572982777784,nan,7.34765625,0.21220705639969095,0.998003992015968,0.1796308503625577,0.48250066985903023,0.34224629674107127,proxy
|
||||||
|
dante,socks-stream1-down,0,8.045297517630896,nan,nan,nan,0,0,0,11.58,10.187382,1.1513590933859177,nan,31.8359375,0.06278681685440134,0.9617940199335548,0.0702627939142462,0.15153444191574938,0.12976980472196764,proxy
|
||||||
|
3proxy-devel-s0,socks-stream16,0,17.6780827887683,nan,nan,nan,0,0,860,10.04,7.0073240000000006,0.4528151777216514,nan,77.51171875,0.14559925093632958,0.9534662867996201,0.26361867704280156,0.3507301404744192,0.4615383164913944,proxy
|
||||||
|
3proxy-devel-s1,socks-stream16,0,17.813083717787464,nan,nan,nan,0,0,831,10.04,7.049869,0.4494383194202414,nan,85.0,0.14639271538641138,0.9534662867996201,0.2704626334519573,0.34694323602300664,0.4748908509544999,proxy
|
||||||
|
3proxy-devel-s3,socks-stream16,0,27.3352115068026,nan,nan,nan,0,0,689,10.02,5.249026000000001,0.2927617481603426,nan,91.2109375,0.18972425170869667,0.9515669515669516,0.3391025641025641,0.5303809411622976,0.7291484692043708,proxy
|
||||||
|
3proxy-devel-s,socks-stream16,0,29.169294013662544,nan,nan,nan,0,0,750,10.04,5.228940000000001,0.27475759750688694,nan,95.15625,0.20268361581920905,0.952561669829222,0.35115236875800254,0.5721232796848496,0.7644014689466427,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,0,26.801589712567786,nan,nan,nan,0,0,688,10.02,5.608131,0.29850849568763543,nan,90.8515625,0.190308162785227,0.9515669515669516,0.34069804674991994,0.5236246075355618,0.72424871596932,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,0,5.723305976658749,nan,nan,nan,0,0,226,10.08,6.296793,1.401700480725417,nan,90.3125,0.05058180954642603,0.9554502369668246,0.2994774657086871,0.11215516850869287,0.4719437201824429,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,0,19.40463845749969,nan,nan,nan,0,0,805,10.05,7.035798,0.41302838279625576,nan,83.1875,0.14436372158425123,0.9535104364326376,0.2726387536514119,0.3488600910434643,0.48533805402589164,proxy
|
||||||
|
dante,socks-stream16,0,15.162841494046699,nan,nan,nan,0,0,3,11.64,9.226989,0.6138957026389465,nan,91.70703125,0.10945273631840796,0.9675810473815462,0.1926836079307456,0.244563711264318,0.339891251543233,proxy
|
||||||
|
3proxy-devel-s0,socks-ka-1k,0,0.28462546944,27836.9,2.18,4.53,0,0,0,10.09,6.934613,28.360076193749077,35.913352363732145,5.5234375,0.219365689572321,0.9582146248812915,0.37344398340248963,0.5494168709626867,0.3009643140284371,proxy
|
||||||
|
3proxy-devel-s1,socks-ka-1k,0,0.2294284288,22437.76,2.87,4.89,0,0,0,10.09,7.08923,35.18308538405507,44.530750049650244,5.26953125,0.19506350347471843,0.9591254752851711,0.3244189748487743,0.483810754980882,0.254456736195368,proxy
|
||||||
|
3proxy-devel-s3,socks-ka-1k,0,0.25652363264,25092.47,2.41,4.11,0,0,0,10.07,7.206521,31.404513950984107,39.82834655012162,5.52734375,0.20471493865768584,0.956315289648623,0.3483932548520522,0.5180285751800957,0.27163487873606923,proxy
|
||||||
|
3proxy-devel-s,socks-ka-1k,0,0.29838278656,29182.29,2.1,3.64,0,0,0,10.08,6.938979,27.025687684495363,34.27976779538243,5.53125,0.2242336471156167,0.9572649572649573,0.3888532991672005,0.5703144558592991,0.29920795840782927,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,0,0.28085059584,27467.37,2.21,3.73,0,0,0,10.08,7.236319,28.71277511760753,36.336370977044645,4.484375,0.21268386785628166,0.9572649572649573,0.3717662088789524,0.544598938595304,0.3143697489590504,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,0,0.30559698944,29891.53,2.04,3.55,0,0,0,10.09,6.890295,26.41387277666501,33.503229126890574,4.72265625,0.22545454545454546,0.9573055028462998,0.3911368015414258,0.5846683790817897,0.3334531526290816,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,0,0.29804724224,29152.38,2.04,4.28,0,0,0,10.1,6.9375610000000005,27.10979621644561,34.31102776815257,5.6796875,0.22826086956521738,0.9591642924976258,0.3853564547206166,0.5797757992906615,0.3314423289565782,proxy
|
||||||
|
dante,socks-ka-1k,0,0.25358761984,24807.03,1.64,5.79,0,0,0,11.63,9.320168,36.689488256052556,46.609303425362995,90.58203125,0.17980347062513066,0.9675540765391015,0.2886201209455745,0.4434018697357329,0.24183755113333955,proxy
|
||||||
|
3proxy-devel-s0,socks-ka-50k-2000,0,5.31602866176,12914.03,111.47,215.43,1,0,0,10.18,6.762736,1.5319706717502404,78.09982661531616,257.53125,0.22595926101373756,0.9695238095238096,0.2807897210905672,0.5921875414939554,0.1766841743483448,proxy
|
||||||
|
3proxy-devel-s1,socks-ka-50k-2000,0,5.62942705664,13675.24,88.83,199.22,0,0,0,10.16,6.318137,1.4438414279500953,73.58053302433372,159.38671875,0.2360647927584564,0.966698382492864,0.28593798935170683,0.6292146662896162,0.18521635700851666,proxy
|
||||||
|
3proxy-devel-s3,socks-ka-50k-2000,0,5.73118087168,13922.44,103.19,215.61,2,0,0,10.24,6.46143,1.4293738382049443,72.8286535233706,167.59375,0.2460844803037494,0.9724596391263058,0.2974326862867877,0.6464050765836997,0.19093118571908146,proxy
|
||||||
|
3proxy-devel-s,socks-ka-50k-2000,0,6.1272070553599995,14884.49,80.89,220.38,1,0,0,10.22,6.415815,1.3343763196067846,67.98829164449175,266.22265625,0.25405534351145037,0.972407231208373,0.3132417239225484,0.6795958185557132,0.1975511673272197,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,0,6.11965730816,14866.34,106.08,226.0,3,3,0,10.24,6.467239,1.3386370490185326,68.2475573506085,164.02734375,0.24982155603140613,0.9715370018975332,0.3018159048215404,0.6615865686872346,0.18712058841726303,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,0,3.02392541184,7345.63,169.36,344.91,2,0,0,10.2,6.417145,2.6984792574744088,137.5515818431912,157.6484375,0.21682464454976302,0.9705042816365367,0.18986146095717885,0.457254729903315,0.11684717988013761,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,0,5.16947968,12557.92,100.88,240.18,1,0,0,10.22,6.797143,1.5815905093179514,80.57395143487858,264.26953125,0.23470602237562485,0.9733333333333334,0.28553459119496855,0.6178518760522278,0.18427096954077407,proxy
|
||||||
|
dante,socks-ka-50k-2000,0,4.65005707264,11296.27,2.3,328.5,1,0,0,11.9,9.033562,2.047286700202835,104.43910059503958,1413.87890625,0.1874097007223942,0.9883720930232558,0.21548174581388965,0.469179377790986,0.13546292850305175,proxy
|
||||||
|
3proxy-devel-s0,socks-close-1k,0,0.044459622399999996,4369.53,4.22,13.51,23,0,0,10.04,6.778729,180.6583044663915,227.64375113368402,7.09765625,0.24497041420118343,0.9552806850618458,0.15841269841269842,0.6112138083403451,0.07788539940299616,proxy
|
||||||
|
3proxy-devel-s1,socks-close-1k,0,0.038335938560000005,3766.51,5.3,15.48,19,0,0,10.07,6.920654,210.142239960852,264.71438710864595,6.54296875,0.21669417590190992,0.956315289648623,0.14126984126984127,0.5285207285976612,0.0683964065951926,proxy
|
||||||
|
3proxy-devel-s3,socks-close-1k,0,0.0385875968,3787.93,5.51,16.35,15,0,0,10.07,7.042935,208.77174709154212,263.3023924696039,6.80078125,0.2115839243498818,0.956315289648623,0.14204185161699429,0.5180427804112695,0.06744461278166838,proxy
|
||||||
|
3proxy-devel-s,socks-close-1k,0,0.041775267840000005,4102.93,4.76,14.25,15,0,0,10.1,6.784382,193.4158754157254,243.79646615815392,7.046875,0.22440293213525656,0.9591642924976258,0.15091946734305645,0.5542325149466466,0.07220046512045086,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,0,0.041020293119999995,4029.03,4.51,14.95,20,0,0,10.08,6.957414999999999,196.58562595858896,247.86072587784008,8.28515625,0.22087781731909845,0.9572649572649573,0.14644218551461244,0.5532265739133714,0.07219241526826044,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,0,0.04605345792,4525.95,3.55,12.42,32,0,0,10.11,6.685613,175.6219916004952,221.28833147284786,7.9296875,0.24111795357650403,0.961941008563273,0.158497772119669,0.6092166640309679,0.07882596048236808,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,0,0.03825205248,3759.8,5.23,17.5,20,0,0,10.14,6.875636999999999,212.06705193770566,267.3063742289239,9.34375,0.21420118343195266,0.9611374407582939,0.14467408585055644,0.5313382960074456,0.07123449870308488,proxy
|
||||||
|
dante,socks-close-1k,0,0.01535115264,1506.83,13.81,41.79,12,0,0,11.68,10.328752000000001,608.6839352800546,767.4617254747355,128.13671875,0.0975458857496391,0.9700996677740864,0.0714879467996675,0.21876990329598062,0.03324195167074371,proxy
|
||||||
|
3proxy-devel-s0,relay-stream1-down,0,19.967601910838216,nan,nan,nan,0,0,0,9.98,6.876371,0.399805495635902,nan,6.73046875,0.21686135093956324,0.998,0.17239101717305153,0.49452535373770196,0.33641706372838853,proxy
|
||||||
|
3proxy-devel-s1,relay-stream1-down,0,27.6603958469194,nan,nan,nan,0,0,0,10.0,5.3607499999999995,0.28919158401814893,nan,10.4296875,0.2563907871424956,0.999000999000999,0.24399078037537042,0.662413788914277,0.5141640107898754,proxy
|
||||||
|
3proxy-devel-s3,relay-stream1-down,0,31.24427477786589,nan,nan,nan,0,0,0,10.01,5.297077,0.25627597066380037,nan,8.7421875,0.2685583987838865,0.999001996007984,0.25932035631804684,0.710324749269417,0.5630396667785247,proxy
|
||||||
|
3proxy-devel-s,relay-stream1-down,0,32.669752269809855,nan,nan,nan,0,0,0,10.02,5.255166,0.24533862181518698,nan,11.578125,0.2759666413949962,0.9990029910269193,0.21856086079354406,0.7353391719005955,0.5051725718852057,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,0,34.11423965536429,nan,nan,nan,0,0,0,9.98,5.244847,0.23401252538432815,nan,8.32421875,0.2852807283763278,0.998998998998999,0.24816299265197062,0.7463174554997559,0.5640837598231023,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,0,5.490486613791695,nan,nan,nan,0,0,0,10.0,6.218518,1.4569088416846487,nan,2.0625,0.24536082474226803,0.998003992015968,0.06283244680851063,0.4615665066759353,0.09983320922129219,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,0,19.270265724912875,nan,nan,nan,0,0,0,10.0,6.753213000000001,0.4151034865611143,nan,5.8203125,0.21110262286732875,0.998003992015968,0.14748081414748082,0.48754467743492597,0.29439209000331695,proxy
|
||||||
|
nginx,relay-stream1-down,0,9.892264001563033,nan,nan,nan,0,0,0,10.01,6.484653,0.8094354982280074,nan,33.21875,0.20965382740126767,0.9506172839506173,0.08906497622820919,0.47100774645107457,0.15397402662382775,proxy
|
||||||
|
haproxy,relay-stream1-down,0,9.318348426519742,nan,nan,nan,0,0,0,10.01,6.469924,0.8592897886697478,nan,30.78515625,0.1911078359125522,0.9506172839506173,0.09208860759493671,0.4348790155020279,0.1511951297751082,proxy
|
||||||
|
haproxy-splice,relay-stream1-down,0,31.19459934250877,nan,nan,nan,0,0,0,9.95,5.341774,0.25514568671624493,nan,44.26953125,0.26813800101471336,0.9930139720558883,0.2285618952285619,0.7103706545078551,0.5022074820749507,proxy
|
||||||
|
haproxy-splice-response,relay-stream1-down,0,24.951861096490454,nan,nan,nan,0,0,0,10.0,5.358531999999999,0.3205830002416119,nan,44.9765625,0.2370088719898606,0.998003992015968,0.20225091029460443,0.6124004779809386,0.40729725437867936,proxy
|
||||||
|
haproxy-splice-auto,relay-stream1-down,0,30.70045102153294,nan,nan,nan,0,0,0,9.93,5.194005,0.25873129845776144,nan,43.87890625,0.2657908034360788,0.9880597014925373,0.24089542265285666,0.7103781000743716,0.5419191989205145,proxy
|
||||||
|
3proxy-devel-s0,relay-stream16,0,19.054207009326234,nan,nan,nan,0,0,810,10.04,7.103089,0.42010333286030027,nan,91.70703125,0.14954577218728163,0.9534662867996201,0.27065712426805466,0.3572969133837139,0.4804707745459801,proxy
|
||||||
|
3proxy-devel-s1,relay-stream16,0,19.1322329001445,nan,nan,nan,0,0,818,10.04,7.097747999999999,0.4184326681329276,nan,93.375,0.1441631504922644,0.9534662867996201,0.2698051948051948,0.351639558257547,0.47768303944210483,proxy
|
||||||
|
3proxy-devel-s3,relay-stream16,0,30.36690213471056,nan,nan,nan,0,0,772,10.03,5.138122999999999,0.2637544924789921,nan,83.7109375,0.20160528800755428,0.9516129032258065,0.3525641025641026,0.5768787156948814,0.7682543506649303,proxy
|
||||||
|
3proxy-devel-s,relay-stream16,0,30.250832386739244,nan,nan,nan,0,0,714,10.04,5.175474,0.2649379363441258,nan,100.77734375,0.18907363420427553,0.952561669829222,0.34156510583707506,0.5579855253442456,0.7474715474196991,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,0,28.731780485240986,nan,nan,nan,0,0,797,10.02,5.6353,0.27851606760150177,nan,65.46484375,0.17529691211401424,0.9515669515669516,0.3446945337620579,0.5024988450361854,0.7270667671048879,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,0,5.873280633051982,nan,nan,nan,0,0,187,10.04,6.317982,1.3621011646231949,nan,91.14453125,0.0486589128886779,0.952561669829222,0.31542744841139864,0.11299169146140414,0.48272628626307845,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,0,18.256656490195546,nan,nan,nan,0,0,827,10.04,7.097678,0.438355524680672,nan,93.140625,0.1407528641571195,0.9543726235741445,0.2603050957481337,0.33741080433515636,0.4634584388471221,proxy
|
||||||
|
nginx,relay-stream16,0,9.38363480576386,nan,nan,nan,0,0,682,10.1,6.650379,0.8530786109027654,nan,107.2890625,0.07498813478879925,0.9591642924976258,0.28534031413612565,0.1777230262002133,0.45870745884095315,proxy
|
||||||
|
haproxy,relay-stream16,0,8.694833525007477,nan,nan,nan,0,0,0,10.01,6.287883,0.9207223887566911,nan,49.828125,0.08695652173913043,0.9506172839506173,0.35353535353535354,0.18055826219502386,0.6096346421058051,proxy
|
||||||
|
haproxy-splice,relay-stream16,0,31.785687448447586,nan,nan,nan,0,0,11,10.01,5.121092,0.2518574777323087,nan,63.1875,0.2556266287609571,0.9497153700189753,0.6195761856710393,0.602603432801014,1.2285193624074702,origin
|
||||||
|
haproxy-splice-response,relay-stream16,0,9.21760052805502,nan,nan,nan,0,0,8,10.0,6.341768,0.8674695316941444,nan,65.44921875,0.08873072360616845,0.9514747859181731,0.3724525650035137,0.18726663579846098,0.6430951653148061,proxy
|
||||||
|
haproxy-splice-auto,relay-stream16,0,30.017350204060744,nan,nan,nan,0,0,5,10.02,4.943123,0.26691572902591415,nan,107.52734375,0.22327565773880068,0.9506641366223909,0.58606695975651,0.5341707529812576,1.1577361807302007,origin
|
||||||
|
3proxy-devel-s0,relay-ka-1k,0,0.3087007744,30197.71,2.03,3.99,0,0,0,10.1,6.949882,26.17421357528023,33.11670852706062,5.6875,0.21550686250902962,0.9600760456273765,0.38956857694784286,0.547960338500225,0.3213184895463785,proxy
|
||||||
|
3proxy-devel-s1,relay-ka-1k,0,0.28747759616,28116.03,2.17,4.04,0,0,0,10.11,7.077814,28.1343663229273,35.60322999827442,5.3046875,0.20336538461538461,0.9601139601139601,0.375,0.5127689057703239,0.3422325090836876,proxy
|
||||||
|
3proxy-devel-s3,relay-ka-1k,0,0.26390560768,25814.82,2.25,4.43,0,0,0,10.08,7.232701,30.55637987722505,38.66098002516032,5.13671875,0.1865833132964655,0.96,0.33386992916934966,0.4728321484719499,0.2681072410170168,proxy
|
||||||
|
3proxy-devel-s,relay-ka-1k,0,0.30375149568,29709.01,2.03,6.32,0,0,0,10.12,6.920590000000001,26.65336669989298,33.72568884386206,5.56640625,0.21158932435681654,0.9610636277302944,0.3739916101968377,0.5346471694396872,0.33655050332852754,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,0,0.27019706368,26427.92,2.27,6.15,0,0,0,10.11,7.2240009999999995,29.933707975371583,37.875807811182916,4.2421875,0.19373493975903613,0.9610266159695817,0.3440825540148339,0.49471268435012483,0.31754207269860757,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,0,0.31826378752,31132.68,1.96,3.53,0,0,0,10.1,6.925334,25.38774537612843,32.12141257887238,4.69140625,0.21292039680619404,0.9609895337773549,0.3964573268921095,0.5508399982044695,0.3527072166830457,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,0,0.30039605248,29385.34,1.99,4.59,0,0,0,10.11,6.913664000000001,26.924455009402923,34.06403094402178,5.5703125,0.2054926523729222,0.9610266159695817,0.36516129032258066,0.5231931944590855,0.2946775946673871,proxy
|
||||||
|
nginx,relay-ka-1k,0,0.47513075712,46474.1,1.24,1.98,0,0,0,10.1,5.863445,17.005844978289414,21.517196714047106,31.234375,0.27657004830917875,0.9600760456273765,0.5121250797702617,0.7277875730434561,0.4561548367029577,proxy
|
||||||
|
haproxy,relay-ka-1k,0,0.49048190976,47969.73,1.3,1.83,0,0,0,10.09,6.070604,16.457283825105286,20.825894285366353,29.0,0.2912832929782082,0.9600380589914367,0.5382381413359149,0.7715606909354619,0.5245810930550032,proxy
|
||||||
|
haproxy-splice,relay-ka-1k,0,0.3661627392,35812.13,1.75,2.31,0,0,0,10.1,6.826606,22.066690940900628,27.92500615179591,34.92578125,0.22495229007633588,0.9609895337773549,0.413434247871334,0.5755731361784134,0.36220094025427935,proxy
|
||||||
|
haproxy-splice-response,relay-ka-1k,0,0.42052091904,41129.54,1.48,2.23,0,0,0,10.11,6.475924,19.233288128600016,24.337987481945113,34.92578125,0.2671957671957672,0.9601139601139601,0.46476190476190476,0.6963103872365322,0.43347153152538975,proxy
|
||||||
|
haproxy-splice-auto,relay-ka-1k,0,0.47378857984,46341.87,1.33,1.92,0,0,0,10.11,6.047508,17.070905345019806,21.60011793536202,36.7109375,0.2823416044326668,0.9601139601139601,0.5384862091084028,0.7363586486330898,0.4592169675786083,proxy
|
||||||
|
3proxy-devel-s0,relay-ka-50k-2000,0,6.03199635456,14653.25,31.17,72.41,0,284,0,10.41,7.174062,1.3806374391629552,70.58823529411765,104.59375,0.22832577024122283,0.9914285714285714,0.2845887173022376,0.6345417449013147,0.19109129069627118,proxy
|
||||||
|
3proxy-devel-s1,relay-ka-50k-2000,0,7.27745298432,17678.83,25.46,50.04,0,281,0,10.4,6.894785000000001,1.1432571282736244,58.41613633427511,71.45703125,0.2527551509343555,0.9876543209876543,0.3246588384639797,0.7163792106441565,0.22912989408241768,proxy
|
||||||
|
3proxy-devel-s3,relay-ka-50k-2000,0,6.94509633536,16871.48,25.4,51.64,0,313,0,10.41,7.041908,1.1991194359103614,61.28107468520601,63.8203125,0.25401389887371195,0.9904852521408183,0.32868462757527733,0.7182204623029798,0.23383980114482825,proxy
|
||||||
|
3proxy-devel-s,relay-ka-50k-2000,0,7.38734374912,17906.47,24.02,55.67,0,261,0,10.43,6.958968,1.129499355027842,57.81916957702755,108.28125,0.2618251313903488,0.9905033238366572,0.34,0.7363475417292134,0.23852825906639696,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,0,6.8140662783999995,16553.21,20.29,45.95,0,240,0,10.35,6.953548,1.2151334697531315,62.165895849600574,39.1015625,0.24214816590745625,0.9829059829059829,0.3158563711471242,0.6859545013413014,0.21581218417073594,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,0,3.6017327308800002,8749.47,53.7,127.44,0,145,0,10.36,6.553185,2.301114663212397,117.68447837150127,159.2734375,0.2302771855010661,0.9857278782112274,0.20025188916876574,0.4851994521187031,0.12454831551304041,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,0,5.8981141708800005,14327.97,29.35,74.35,0,272,0,10.47,7.234125,1.4201149312018657,72.57477558659411,111.45703125,0.22288723964567872,0.9961941008563273,0.2836857052698012,0.6221976077914345,0.1948986835811874,proxy
|
||||||
|
nginx,relay-ka-50k-2000,0,5.064034877439999,12301.75,73.45,105.2,0,310,0,10.2,6.025738,1.6113633095917954,82.20304151253596,111.78515625,0.23498817966903074,0.9714285714285714,0.23191153238546602,0.5460848111252092,0.14925114946750442,proxy
|
||||||
|
haproxy,relay-ka-50k-2000,0,3.7427452313600003,9025.18,206.84,1040.0,0,0,0,10.15,6.368996999999999,2.169530517857193,111.77183129611277,148.3359375,0.23618452666987025,0.9666666666666667,0.18178963893249608,0.5251629385805536,0.11504604702361344,proxy
|
||||||
|
haproxy-splice,relay-ka-50k-2000,0,8.76173328384,21292.9,81.4,1170.0,0,124,0,10.17,5.538784,0.928583390572492,47.485198812169656,160.4140625,0.2963050686878257,0.9648956356736242,0.39931207004377733,0.8171792368614809,0.26303515622479545,proxy
|
||||||
|
haproxy-splice-response,relay-ka-50k-2000,0,8.33223655424,20323.33,91.22,737.72,0,623,0,10.19,6.007484,0.9783687665290439,49.771899147186105,137.5546875,0.2856466129796305,0.9686311787072244,0.3653366583541147,0.7858103084576897,0.24337514196896942,proxy
|
||||||
|
haproxy-splice-auto,relay-ka-50k-2000,0,7.55914244096,18364.14,97.18,729.76,0,702,0,10.2,5.984771,1.0794875296679407,55.10743247988849,132.97265625,0.27412125501297474,0.9695817490494296,0.3516791044776119,0.7410732456744284,0.23195301567992688,proxy
|
||||||
|
3proxy-devel-s0,relay-close-1k,0,0.051589939200000004,5067.4,12.07,20.75,0,0,0,10.01,6.8073,155.2240635321392,197.29580573951435,13.86328125,0.14885043849253377,0.9515209125475285,0.1702195354756602,0.3063462287953766,0.08650874371846541,proxy
|
||||||
|
3proxy-devel-s1,relay-close-1k,0,0.049576673280000004,4867.92,12.61,20.34,0,0,0,10.02,7.040861,161.68894501506978,205.4373231639808,10.96484375,0.14208037825059103,0.9524714828897338,0.16958877908830092,0.291102747968138,0.0846089119977737,proxy
|
||||||
|
3proxy-devel-s3,relay-close-1k,0,0.049576673280000004,4870.93,12.43,22.44,0,0,0,10.0,7.085312,161.36621258989,205.03567620766015,11.0703125,0.1369343757403459,0.9514747859181731,0.16098182977366912,0.2844761960477514,0.07890910764951148,proxy
|
||||||
|
3proxy-devel-s,relay-close-1k,0,0.05603590144,5505.07,11.27,18.05,0,0,0,10.02,6.846032,143.0511474609375,181.73244341265234,11.33984375,0.15014231499051234,0.9515669515669516,0.1838095238095238,0.31870468735185736,0.09031624283011092,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,0,0.048234496,4739.18,13.1,22.09,0,0,0,10.02,6.9940240000000005,166.18811565896738,211.1029179395344,10.9765625,0.1368595825426945,0.9506641366223909,0.1689468660515431,0.28065723330399556,0.0836639692746604,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,0,0.056119787520000006,5512.56,11.29,19.26,0,0,0,9.99,6.770784,142.40966249474494,181.05369991119488,11.15234375,0.1480691779199242,0.950523311132255,0.17840076457470533,0.3101404599623851,0.09030785646336568,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,0,0.049408901119999994,4848.11,12.41,22.98,0,0,0,10.03,6.945195,162.39988783624256,206.55710696486676,16.28515625,0.13658999288593787,0.9534220532319392,0.16454081632653061,0.2863816518374843,0.08271291425030712,proxy
|
||||||
|
nginx,relay-close-1k,0,0.08506048512,8351.99,7.39,9.9,0,0,0,10.02,5.322799,94.23882298215605,119.8306584706642,31.78125,0.22100760456273763,0.9524714828897338,0.25627817128139085,0.4585377843111047,0.13309729821142444,proxy
|
||||||
|
haproxy,relay-close-1k,0,0.08246001664,8100.9,7.7,9.9,0,0,0,10.01,5.757326999999999,97.11373252519392,123.46440376930288,29.2421875,0.19995267392333177,0.9515209125475285,0.26413316582914576,0.43286444803661195,0.13208983114151523,proxy
|
||||||
|
haproxy-splice,relay-close-1k,0,0.08581545984,8427.69,7.25,10.22,0,0,0,10.01,5.7437000000000005,93.31651913222446,118.6961213285428,37.54296875,0.20933521923620935,0.9515209125475285,0.27584040213634936,0.45660380987251614,0.13873247341643,proxy
|
||||||
|
haproxy-splice-response,relay-close-1k,0,0.08950644736,8790.4,6.97,9.21,0,0,0,10.04,5.732397,89.73655235912604,114.07664950972037,35.99609375,0.22339924670433145,0.9516587677725118,0.28022670025188917,0.4861387161410288,0.14164969707041516,proxy
|
||||||
|
haproxy-splice-auto,relay-close-1k,0,0.08455716864,8306.6,7.39,9.82,0,0,0,10.1,5.791437,95.55665273515004,120.39432120251278,37.546875,0.21913289349670123,0.9609895337773549,0.2730148687124328,0.46424269100041105,0.13880058093444766,proxy
|
||||||
|
3proxy-devel-s1,connect-stream1-down,1,32.007179184873465,nan,nan,nan,0,0,0,9.97,5.224633,0.24916735776544746,nan,11.734375,0.26385542168674697,0.9477186311787072,0.2579937304075235,0.7249532362853192,0.540964612744417,proxy
|
||||||
|
3proxy-devel-s3,connect-stream1-down,1,32.06508643171231,nan,nan,nan,0,0,0,10.02,5.179441,0.2499649582058111,nan,7.70703125,0.28302845528455284,0.99800796812749,0.26450116009280744,0.7240473442854467,0.5697946198743146,proxy
|
||||||
|
3proxy-devel-s,connect-stream1-down,1,31.740570899144,nan,nan,nan,0,0,0,10.01,5.23553,0.25226762435071104,nan,11.68359375,0.2684871918801353,0.9506172839506173,0.26869893148962914,0.7373172913828648,0.567555091840587,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,1,32.471537175353646,nan,nan,nan,0,0,0,9.89,5.251818,0.24363335522741733,nan,10.7890625,0.28098574534911813,0.9410085632730733,0.2585227272727273,0.7583278134304039,0.5666907288700376,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,1,5.849600426195207,nan,nan,nan,0,0,0,10.01,6.098043,1.3688385298575514,nan,2.9296875,0.23939703628002043,0.9980059820538385,0.06287425149700598,0.49650130922424796,0.09982095408397566,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,1,20.1192001698211,nan,nan,nan,0,0,0,10.01,6.731968,0.3979834556644197,nan,7.9765625,0.18275607958732498,0.9515209125475285,0.1670343523479357,0.4414865444467686,0.3223232917434522,proxy
|
||||||
|
tinyproxy,connect-stream1-down,1,1.2135208974613312,nan,nan,nan,0,0,0,9.93,6.041879000000001,6.545696189330612,nan,2.1796875,0.21232042853664476,0.9457142857142857,0.023741690408357077,0.4671516858219575,0.025661664381776778,proxy
|
||||||
|
squid,connect-stream1-down,1,12.961443652494664,nan,nan,nan,0,0,0,9.99,7.350268,0.6165329377800854,nan,21.59765625,0.13475699558173784,0.950523311132255,0.1042262472195742,0.29403453084129805,0.19493032885605158,proxy
|
||||||
|
3proxy-devel-s0,connect-stream1-down,1,20.1728591399002,nan,nan,nan,0,0,0,10.01,6.936342000000001,0.39692646336777043,nan,11.58984375,0.21226993865030674,0.9506172839506173,0.14704010184595798,0.5033293172762735,0.30414252438806827,proxy
|
||||||
|
3proxy-devel-s1,connect-stream16,1,18.68462067341878,nan,nan,nan,0,0,802,10.04,7.018246,0.4284666261711648,nan,78.06640625,0.1415204678362573,0.9534662867996201,0.26426718547341116,0.3401851139212609,0.46337511033008333,proxy
|
||||||
|
3proxy-devel-s3,connect-stream16,1,30.449433931454216,nan,nan,nan,0,0,714,10.02,5.165603,0.262761555684689,nan,91.85546875,0.19389204545454544,0.9515669515669516,0.3466966003848621,0.5598225587018336,0.7568769521584868,proxy
|
||||||
|
3proxy-devel-s,connect-stream16,1,31.051910768328366,nan,nan,nan,0,0,718,10.01,5.174436,0.25752383785124056,nan,96.45703125,0.2028301886792453,0.9515209125475285,0.35361947469570787,0.581692850859723,0.7803250840474131,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,1,27.690573841681793,nan,nan,nan,0,0,769,10.04,5.5876980000000005,0.2894486849724907,nan,65.24609375,0.184913691179948,0.952561669829222,0.3293739967897271,0.513236753369042,0.7151251542813281,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,1,5.7601820905293195,nan,nan,nan,0,0,222,10.04,6.308363,1.3894019896927319,nan,72.8125,0.05058180954642603,0.9534662867996201,0.2997061704211557,0.10928461275379596,0.465294982194032,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,1,19.245480043475137,nan,nan,nan,0,0,756,10.05,6.990914,0.41644940466693736,nan,84.4921875,0.13564519933946687,0.9535104364326376,0.26549821486530345,0.3403111090361121,0.47279888422215904,proxy
|
||||||
|
tinyproxy,connect-stream16,1,1.143856838711836,nan,nan,nan,0,0,68,10.06,6.172105999999999,6.98504814200719,nan,67.3125,0.015922053231939164,0.9553656220322887,0.2947920078611202,0.025667218860881285,0.4759052172063224,proxy
|
||||||
|
squid,connect-stream16,1,13.117468248698016,nan,nan,nan,0,0,0,10.03,7.747913,0.6114733081500459,nan,61.3515625,0.11182336182336182,0.9525166191832859,0.2779195915762604,0.24426131545276855,0.4605582623213425,proxy
|
||||||
|
3proxy-devel-s0,connect-stream16,1,18.89413467365873,nan,nan,nan,0,0,788,10.04,7.004873000000001,0.42399367375222097,nan,80.87890625,0.13980263157894737,0.9534662867996201,0.2649350649350649,0.342162665997788,0.47087569636306814,proxy
|
||||||
|
3proxy-devel-s1,connect-ka-1k,1,0.28236054528,27616.9,2.18,3.88,0,0,0,10.07,7.087541,28.5308982953385,36.13541270445036,9.29296875,0.21732817037754115,0.9572243346007605,0.3665274654673948,0.5569942685972926,0.32862781015341236,proxy
|
||||||
|
3proxy-devel-s3,connect-ka-1k,1,0.22372417536000003,21883.38,3.01,4.52,0,0,0,10.1,7.23114,36.11590024635592,45.71542375029421,9.26953125,0.18445670424562244,0.9582542694497154,0.30962343096234307,0.45813001069016734,0.27163636728418034,proxy
|
||||||
|
3proxy-devel-s,connect-ka-1k,1,0.28210888704000003,27593.33,2.21,4.33,0,0,0,10.1,6.938594,28.64142312132954,36.25464400452286,9.7578125,0.21577164973391388,0.9600760456273765,0.37294685990338167,0.5541452987976239,0.3124802602656288,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,1,0.26432503808,25851.78,2.31,4.09,0,0,0,10.06,7.196936,30.447361545689862,38.671187274642314,4.93359375,0.20453449107573565,0.9562737642585551,0.3507246376811594,0.5218230041287207,0.3001251254965204,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,1,0.25845301247999997,25280.36,2.6,4.31,0,0,0,10.05,6.832215,31.108169035646913,39.46887849476301,5.1796875,0.1924373795761079,0.9553231939163498,0.32915057915057916,0.4923764568552999,0.26585908398090546,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,1,0.31641829375999997,30945.49,1.97,3.44,0,0,0,10.08,6.928045,25.485252145744965,32.33588256428681,9.625,0.22918683446272992,0.9572649572649573,0.39935691318327976,0.5922325440454377,0.38187858757824256,proxy
|
||||||
|
tinyproxy,connect-ka-1k,1,0.24679284736,24137.87,2.66,4.33,0,0,0,10.06,6.985621,32.61034542164131,41.40275497059417,5.7421875,0.19431051108968178,0.9553656220322887,0.33354694008330665,0.4961663240560683,0.28397494166849063,proxy
|
||||||
|
squid,connect-ka-1k,1,0.37186699264,36376.06,1.64,2.65,0,0,0,10.04,7.192454000000001,21.599120543015452,27.528268570613847,27.5625,0.2539912917271408,0.9534662867996201,0.4091344618332801,0.6653549079613764,0.3856517257696814,proxy
|
||||||
|
3proxy-devel-s0,connect-ka-1k,1,0.31432114176,30741.95,1.93,3.71,1,0,0,10.07,6.922979,25.62983818044019,32.534246575342465,9.58203125,0.22950423216444982,0.956315289648623,0.39553686934023286,0.591198721182299,0.35997010169842786,proxy
|
||||||
|
3proxy-devel-s1,connect-ka-50k-2000,1,6.27946029056,15254.53,95.73,216.6,3,0,0,10.19,6.4184529999999995,1.2982007406361042,66.17613632673736,286.5859375,0.25545540796963945,0.9677113010446344,0.30163214061519145,0.6843638539994532,0.19943336988010887,proxy
|
||||||
|
3proxy-devel-s3,connect-ka-50k-2000,1,6.24582197248,15172.7,101.62,215.77,1,0,0,10.18,6.516417,1.3039116445975645,66.45776210993603,289.765625,0.25332383665717,0.9667616334283001,0.308030112923463,0.6796782521488348,0.19940852808690154,proxy
|
||||||
|
3proxy-devel-s,connect-ka-50k-2000,1,6.32014503936,15353.19,95.9,212.45,2,0,0,10.22,6.481216,1.2936411979602183,65.98401404904253,396.359375,0.25421715371822284,0.9714828897338403,0.2964476579691921,0.6834436278275832,0.18902633421215498,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,1,6.18215243776,15017.88,112.98,224.42,1,10,0,10.18,6.451246,1.3173405350306828,67.12958383614578,176.671875,0.2530834914611006,0.9686013320647003,0.30238393977415307,0.6739143123343846,0.19281737834457227,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,1,3.38715213824,8227.03,175.57,307.79,3,2,0,10.2,6.4692,2.409103478959768,122.76731982090415,172.171875,0.23058712121212122,0.9686609686609686,0.20207416719044627,0.4980750875715879,0.12343498546639263,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,1,5.216371998720001,12672.0,131.63,237.43,0,2,0,10.25,6.800585,1.5719737783294838,80.09063916236911,378.0859375,0.23135391923990498,0.9752616555661275,0.27807319361901783,0.6158712786833582,0.17285843785347785,proxy
|
||||||
|
tinyproxy,connect-ka-50k-2000,1,1.0456399872,2538.12,558.85,1450.0,0,61,0,10.18,6.286781,7.7885315210715,397.46993596751526,130.86328125,0.2454238921001927,0.9658444022770398,0.09436352121595946,0.4724639241156293,0.051274053713010984,proxy
|
||||||
|
squid,connect-ka-50k-2000,1,4.486311444479999,10898.41,159.45,248.22,0,0,0,10.22,7.297373,1.8224325486942794,92.89811204130422,238.8203125,0.15123456790123457,0.9714828897338403,0.1841189496994622,0.42211271716261856,0.12445919385297953,proxy
|
||||||
|
3proxy-devel-s0,connect-ka-50k-2000,1,4.72052137984,11467.47,107.51,237.51,0,0,0,10.26,6.766201,1.7387909808128452,88.58650135124634,386.0,0.21050130672368733,0.9752851711026616,0.25865324103209564,0.5532876650789986,0.16625726559770054,proxy
|
||||||
|
3proxy-devel-s1,connect-close-1k,1,0.043536875520000004,4271.57,4.16,13.6,20,0,0,10.07,7.033355,185.03854270155946,233.5180762006354,13.671875,0.30994566501299314,0.956315289648623,0.16318124207858048,0.9276814304389972,0.07883528204597719,client
|
||||||
|
3proxy-devel-s3,connect-close-1k,1,0.03288334336,3225.31,6.27,18.75,12,0,0,10.06,7.112174,244.74396997568564,308.9206202978658,13.94921875,0.24006622516556292,0.9562737642585551,0.1328893117665715,0.7023859862832187,0.06268519487196349,proxy
|
||||||
|
3proxy-devel-s,connect-close-1k,1,0.0448790528,4408.05,4.45,13.41,20,0,0,10.04,6.888197,178.96990909754672,225.77525916930895,11.921875,0.3158019426676143,0.9552806850618458,0.1726322458029775,0.9543068119037269,0.08168627248143642,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,1,0.043201331200000005,4241.96,4.01,14.97,28,0,0,10.04,6.944008,185.9201968294903,234.62329407365863,8.43359375,0.31252943947244466,0.9534662867996201,0.15904761904761905,0.9372208337876191,0.07598464393532073,client
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,1,0.04714397696,4626.84,3.83,13.16,28,0,0,10.09,6.677591,171.22017531208297,216.01832623263184,9.1796875,0.3330977620730271,0.9582146248812915,0.16915739268680446,1.0067014042881102,0.08170134240341466,client
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,1,0.03766484992,3697.66,5.15,17.31,16,0,0,10.06,7.1691,213.67402278500833,269.48834717385483,21.83203125,0.27102582326462926,0.9571836346336822,0.1440812440495081,0.8070146886312852,0.06838640718938216,proxy
|
||||||
|
tinyproxy,connect-close-1k,1,0.04898947072,4807.78,4.11,12.61,21,0,0,10.08,6.538047000000001,164.60679981806507,207.63383937215482,7.16796875,0.4428333729498455,0.9572649572649573,0.1720532319391635,1.4714351718866292,0.08264483625435519,client
|
||||||
|
squid,connect-close-1k,1,0.034728837119999995,3410.57,7.88,18.72,0,0,0,10.09,7.327121,232.42932010963918,293.1520381184811,20.50390625,0.24958402662229617,0.9582146248812915,0.1306005719733079,0.73675468165749,0.06269900083512883,proxy
|
||||||
|
3proxy-devel-s0,connect-close-1k,1,0.04311744512,4232.9,4.61,15.36,11,0,0,10.08,6.872714,187.02406827577823,235.94401011188614,11.12109375,0.30532544378698223,0.9581749049429658,0.16040738383195416,0.9201062169802764,0.07789157303606166,client
|
||||||
|
3proxy-devel-s1,socks-stream1-down,1,32.197438699701955,nan,nan,nan,0,0,0,9.98,5.28219,0.24795364522443739,nan,11.5625,0.2770048064760941,0.997002997002997,0.2565723793677205,0.7292760972730192,0.5538191856828393,proxy
|
||||||
|
3proxy-devel-s3,socks-stream1-down,1,31.061357155841463,nan,nan,nan,0,0,0,9.97,5.36022,0.2567545078464656,nan,11.66796875,0.26753048780487804,0.9950099800399201,0.24384564204923487,0.7043243074063916,0.5290772723562036,proxy
|
||||||
|
3proxy-devel-s,socks-stream1-down,1,31.70872918445228,nan,nan,nan,0,0,0,9.98,5.231984,0.2517652264056972,nan,11.63671875,0.2629799565322386,0.9495718363463368,0.25348101265822787,0.7336362557932397,0.5600914920334876,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,1,25.913640080859402,nan,nan,nan,0,0,0,10.0,5.258993,0.30868491132190745,nan,9.546875,0.24509566480988132,0.9505703422053232,0.18912,0.678380793967228,0.42500019392853394,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,1,5.5208959073379145,nan,nan,nan,0,0,0,10.01,6.154122,1.450334034559745,nan,4.91015625,0.22837539818671895,0.9506172839506173,0.06026006977481763,0.4795672588605627,0.09793859262634443,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,1,18.492426051349817,nan,nan,nan,0,0,0,9.99,6.7866610000000005,0.4321316469768421,nan,5.9140625,0.22731958762886598,0.9970059880239521,0.17598412173337744,0.5215036500523069,0.33940467685052833,proxy
|
||||||
|
dante,socks-stream1-down,1,7.811387920484725,nan,nan,nan,0,0,0,11.62,10.246345999999999,1.1899328141568124,nan,30.1953125,0.06768330896177147,0.9667221297836939,0.07030168834763355,0.16152165173692132,0.131417957252618,proxy
|
||||||
|
3proxy-devel-s0,socks-stream1-down,1,18.92858606492179,nan,nan,nan,0,0,0,10.01,6.884489,0.42301944907283034,nan,8.9765625,0.18928220255653885,0.9506172839506173,0.16777251184834124,0.45858433010430566,0.3412916098670893,proxy
|
||||||
|
3proxy-devel-s1,socks-stream16,1,17.059389720308186,nan,nan,nan,0,0,764,10.03,6.97326,0.4690450709697908,nan,74.08984375,0.14339006761482864,0.9534220532319392,0.2542977619202076,0.33170955227693,0.4491362425990594,proxy
|
||||||
|
3proxy-devel-s3,socks-stream16,1,29.42847426539513,nan,nan,nan,0,0,727,10.02,5.207926,0.2717741424350396,nan,81.484375,0.19408983451536643,0.9524714828897338,0.349903784477229,0.5539514592768028,0.7643033240552966,proxy
|
||||||
|
3proxy-devel-s,socks-stream16,1,27.326918118192463,nan,nan,nan,0,0,637,10.03,5.271373,0.2931201554737266,nan,102.015625,0.17921401515151514,0.9525166191832859,0.33675762439807383,0.5094989493744122,0.7275260785374502,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,1,28.13497719200809,nan,nan,nan,0,0,731,10.02,5.586139,0.28429142662800944,nan,75.28515625,0.18952854773750297,0.9524714828897338,0.3393258426966292,0.5398356712585858,0.7368920518701129,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,1,5.872103249026327,nan,nan,nan,0,0,217,10.05,6.3039570000000005,1.3627793089553266,nan,84.25390625,0.050344336262170504,0.9544159544159544,0.3087467362924282,0.1102418774437196,0.47953440694176813,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,1,15.215320956270055,nan,nan,nan,0,0,730,10.04,6.885411,0.5264652954614184,nan,75.6328125,0.12878254750175933,0.9534662867996201,0.23344155844155845,0.30227018256997606,0.42167221463081156,proxy
|
||||||
|
dante,socks-stream16,1,15.339998064679683,nan,nan,nan,0,0,3,11.69,9.284563,0.6094340228249171,nan,82.28125,0.11350902676903922,0.9725457570715474,0.20252808988764046,0.2562013961392103,0.35821254154553656,proxy
|
||||||
|
3proxy-devel-s0,socks-stream16,1,18.609322540583243,nan,nan,nan,0,0,832,10.03,7.063924,0.429942169793001,nan,78.76171875,0.14988344988344987,0.9525166191832859,0.2710765239948119,0.35347442819500086,0.4756441202861244,proxy
|
||||||
|
3proxy-devel-s1,socks-ka-1k,1,0.27875344383999995,27262.75,2.18,4.02,0,0,0,10.03,7.061337999999999,28.785294593905167,36.61679772778715,5.26171875,0.21686746987951808,0.9534220532319392,0.37083333333333335,0.5522452494125814,0.32578083367953703,proxy
|
||||||
|
3proxy-devel-s3,socks-ka-1k,1,0.24654118912,24110.71,2.4,4.37,0,0,0,10.1,7.207521000000001,32.77342836237879,41.557629322404914,5.515625,0.19533877943296493,0.957345971563981,0.32777955783402757,0.4904617845902655,0.2896842390537753,proxy
|
||||||
|
3proxy-devel-s,socks-ka-1k,1,0.31893487616000005,31195.37,1.97,3.5,0,0,0,10.11,6.922702,25.359409097493913,32.08983885251053,5.515625,0.22922219529924884,0.9601139601139601,0.3908711025393764,0.5931852150418646,0.3467111313245153,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,1,0.27816624127999995,27206.53,2.19,3.76,1,0,0,10.07,7.211231,28.961098812457596,36.69330301672151,4.51171875,0.2147342995169082,0.9581351094196003,0.3647738209817132,0.5475066173806583,0.3485505315198402,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,1,0.25937575936,25370.57,2.52,4.2,0,0,0,10.06,6.839138,31.02834289471822,39.46413510385815,4.7265625,0.2075607994221045,0.9544592030360531,0.35008,0.5265935339012923,0.330538762557308,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,1,0.30777802752,30105.84,1.99,3.82,1,0,0,10.1,6.919668000000001,26.252686278831085,33.24894903693267,5.5,0.22996853062212538,0.9591642924976258,0.3821059431524548,0.5921233579210385,0.3381172632045943,proxy
|
||||||
|
dante,socks-ka-1k,1,0.25887244288,25316.05,1.53,5.79,0,0,0,11.66,9.320969999999999,36.033190308803874,45.6851797433637,84.6640625,0.17922948073701842,0.96843853820598,0.2943615257048093,0.4441778169806995,0.27835991391098625,proxy
|
||||||
|
3proxy-devel-s0,socks-ka-1k,1,0.29100081151999996,28461.4,2.09,4.06,0,0,0,10.05,6.89057,27.62878893018972,35.11260490109076,5.58203125,0.2192112267118316,0.9544159544159544,0.36835320657428294,0.5664481873423678,0.30957636332075195,proxy
|
||||||
|
3proxy-devel-s1,socks-ka-50k-2000,1,6.353867243520001,15435.13,96.68,211.73,1,0,0,10.26,6.425177,1.291811692850671,65.85323585856317,161.3046875,0.2567149988115046,0.9734345351043643,0.31112507856693905,0.6872067735676004,0.20040494201887907,proxy
|
||||||
|
3proxy-devel-s3,socks-ka-50k-2000,1,5.97386330112,14511.99,113.59,230.22,4,0,0,10.2,6.446494,1.3659502383441107,69.61079376778657,166.4453125,0.2501778515532369,0.9695817490494296,0.30701754385964913,0.6567956116816116,0.19470673914974188,proxy
|
||||||
|
3proxy-devel-s,socks-ka-50k-2000,1,6.216294072319999,15101.08,104.76,225.83,3,0,0,10.23,6.4014109999999995,1.3165400324997218,67.08152733424699,269.76171875,0.2549205596395542,0.9715099715099715,0.3048549810844893,0.6758555298505168,0.19664228326401378,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,1,5.9697528832,14502.12,109.32,224.62,0,0,0,10.18,6.424091,1.3642105727556557,69.50845640700001,165.15234375,0.25053431488957495,0.9667616334283001,0.30701754385964913,0.6643539951606112,0.19184011285482266,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,1,3.20830701568,7792.83,201.8,312.34,2,0,0,10.21,6.4390480000000005,2.54589101357209,129.86187072320723,157.8671875,0.2236436863302535,0.9696106362773029,0.19627642789523508,0.4752945003187891,0.12063730092499152,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,1,4.5621444608,11082.5,132.38,245.05,2,0,0,10.29,6.619237,1.804414584135389,91.93985043021416,254.1015625,0.21092636579572446,0.9753554502369668,0.25461370034407255,0.5465202166778435,0.16051400904537516,proxy
|
||||||
|
dante,socks-ka-50k-2000,1,4.93132709888,11979.29,2.23,331.31,0,0,0,11.87,9.020624999999999,1.925647966478785,98.11295801889521,1425.6640625,0.19101586647434576,0.9875207986688852,0.21571311251026554,0.48081066447076737,0.1337960586683887,proxy
|
||||||
|
3proxy-devel-s0,socks-ka-50k-2000,1,5.41979574272,13166.19,105.87,214.46,3,0,0,10.26,6.819262,1.5144482171722398,77.20264565791553,255.0546875,0.23371374227294342,0.9734345351043643,0.28463476070528965,0.6187714265396599,0.17761570601099078,proxy
|
||||||
|
3proxy-devel-s1,socks-close-1k,1,0.037832622079999996,3715.46,5.22,17.62,15,0,0,10.07,6.937196999999999,212.93792386277028,268.48321646625965,6.48046875,0.22518273991983023,0.956315289648623,0.14971392244119516,0.5475290392746484,0.07314120067361357,proxy
|
||||||
|
3proxy-devel-s3,socks-close-1k,1,0.033218887679999996,3258.84,6.18,18.69,13,0,0,10.04,7.028301,241.7901549676452,305.1578979362329,6.66796875,0.20212514757969302,0.9543726235741445,0.1363780526482715,0.4876253133637197,0.06553764586162274,proxy
|
||||||
|
3proxy-devel-s,socks-close-1k,1,0.041271951359999996,4055.31,4.85,15.35,12,0,0,10.07,6.775449,195.19309687420605,245.89763625708147,6.9765625,0.2391611687087653,0.9572243346007605,0.16159695817490494,0.5864694712598896,0.07880382747934153,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,1,0.04076863488,4003.59,5.24,14.92,19,0,0,10.08,6.968933,197.79911747685185,249.4061757719715,9.078125,0.2315340909090909,0.9572649572649573,0.1536020311012377,0.572256873988836,0.07409607861589175,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,1,0.04521459712,4440.32,4.12,13.17,23,0,0,10.08,6.665437,178.3494825487013,224.77422232132903,8.26953125,0.2556550424128181,0.9572649572649573,0.16867088607594938,0.6330346569696153,0.08165861158547134,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,1,0.03883925504,3816.47,4.6,15.32,23,0,0,10.06,6.825289,207.21303721483534,261.30548845424556,9.25,0.22900584795321638,0.9544592030360531,0.15250475586556753,0.5483926487739365,0.07215414948188517,proxy
|
||||||
|
dante,socks-close-1k,1,0.01585446912,1557.29,13.83,41.72,7,0,0,11.76,10.4056,593.3973524305557,747.8537360890302,127.54296875,0.09705336905007211,0.9775561097256857,0.0687551982256723,0.2154585684174166,0.031582447264106146,proxy
|
||||||
|
3proxy-devel-s0,socks-close-1k,1,0.04378853376,4302.52,4.4,13.52,17,0,0,10.09,6.783221999999999,184.34049525936902,232.35998526160648,7.00390625,0.24054820415879016,0.9591254752851711,0.16122901488755148,0.5979168226115972,0.07789105617724286,proxy
|
||||||
|
3proxy-devel-s1,relay-stream1-down,1,31.73810207385162,nan,nan,nan,0,0,0,9.98,5.23233,0.25153234918527634,nan,11.39453125,0.2775107513281052,0.9960079840319361,0.2721602101116218,0.7383061586890924,0.5859990955542206,proxy
|
||||||
|
3proxy-devel-s3,relay-stream1-down,1,31.940614527507012,nan,nan,nan,0,0,0,10.01,5.227023,0.2506884778126867,nan,11.3515625,0.28098128477491147,0.9980059820538385,0.27829252150893447,0.733246143336464,0.6148940040242291,proxy
|
||||||
|
3proxy-devel-s,relay-stream1-down,1,32.06676621869905,nan,nan,nan,0,0,0,10.0,5.307892,0.24945215995141343,nan,11.21875,0.28806272129489124,0.998003992015968,0.27636363636363637,0.7622823179613596,0.6149329326461827,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,1,30.06283668994353,nan,nan,nan,0,0,0,9.99,5.292376,0.2658149469441412,nan,7.7265625,0.27786220871327255,0.999,0.23274424808269423,0.7023299380588207,0.5141511114961836,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,1,5.67896847687157,nan,nan,nan,0,0,1,10.0,6.15599,1.4085469456752515,nan,3.046875,0.22442972774098602,0.9505703422053232,0.0629746835443038,0.45864505666402755,0.10265501545349644,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,1,20.348672243864886,nan,nan,nan,0,0,0,10.0,6.754615,0.3931036284463703,nan,7.15625,0.2190597204574333,0.998003992015968,0.17509855453350853,0.49853000846875023,0.32329223094429427,proxy
|
||||||
|
nginx,relay-stream1-down,1,9.03807533016227,nan,nan,nan,0,0,0,9.98,6.35077,0.8832796703348491,nan,34.25390625,0.20318237454100369,0.9495718363463368,0.08978817578248498,0.4529527066147577,0.15404333144832696,proxy
|
||||||
|
haproxy,relay-stream1-down,1,8.30687312428839,nan,nan,nan,0,0,0,9.99,6.5335600000000005,0.9619918384327394,nan,32.5546875,0.17260004910385465,0.9514285714285714,0.08457396262274311,0.4120264932598356,0.14168530827627976,proxy
|
||||||
|
haproxy-splice,relay-stream1-down,1,32.040876511889735,nan,nan,nan,0,0,0,10.01,5.273644,0.2499042508714471,nan,41.94140625,0.26925845932325415,0.9506172839506173,0.2601753287413901,0.7535946313227873,0.5514975583268436,proxy
|
||||||
|
haproxy-splice-response,relay-stream1-down,1,31.882447095318483,nan,nan,nan,0,0,0,10.0,5.383822,0.250895123147323,nan,41.69921875,0.2891139240506329,0.999000999000999,0.2289156626506024,0.723357183163451,0.5231358407324518,proxy
|
||||||
|
haproxy-splice-auto,relay-stream1-down,1,26.028541385034213,nan,nan,nan,0,0,0,9.96,5.512894999999999,0.30609283045288294,nan,46.2890625,0.22998790810157194,0.9449715370018975,0.2165045497332915,0.6422844708688462,0.4450211107581958,proxy
|
||||||
|
3proxy-devel-s0,relay-stream1-down,1,18.970993928454515,nan,nan,nan,0,0,0,10.0,6.914075,0.42165095424751714,nan,9.0625,0.21000483325277913,0.9505703422053232,0.15026890224612463,0.49857225669999733,0.29473619594993444,proxy
|
||||||
|
3proxy-devel-s1,relay-stream16,1,18.83828789636855,nan,nan,nan,0,0,858,10.03,7.127536,0.42452305137380997,nan,95.54296875,0.14542903904606033,0.9534220532319392,0.2717250324254215,0.3497988116841802,0.4794763536188597,proxy
|
||||||
|
3proxy-devel-s3,relay-stream16,1,32.5252412598818,nan,nan,nan,0,0,793,10.01,5.171134,0.24582747792746065,nan,82.62890625,0.2035899858290033,0.9515209125475285,0.36389868547611415,0.5892554842891322,0.7995860813130766,proxy
|
||||||
|
3proxy-devel-s,relay-stream16,1,32.19890711832317,nan,nan,nan,0,0,767,10.03,5.17645,0.2486331761241609,nan,105.44140625,0.20656279508970726,0.9525166191832859,0.36157289002557547,0.5987543272353516,0.7986179568554136,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,1,28.527986159803753,nan,nan,nan,0,0,735,10.03,5.595985000000001,0.2807847414191269,nan,86.94921875,0.19155461193677753,0.9516129032258065,0.3349389852280026,0.5313972443230791,0.7247385151648559,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,1,5.83913920059696,nan,nan,nan,0,0,206,10.05,6.32683,1.3706724175735163,nan,92.140625,0.05075901328273245,0.9544159544159544,0.3046594982078853,0.11122741585707055,0.4833147324349374,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,1,18.348693004526986,nan,nan,nan,0,0,812,10.03,7.073939,0.43598527292762235,nan,96.5234375,0.1462561231630511,0.9525166191832859,0.25925925925925924,0.34404203665515953,0.4622708529564725,proxy
|
||||||
|
nginx,relay-stream16,1,10.021033565693788,nan,nan,nan,0,0,639,10.06,6.625294,0.7978928714602413,nan,107.3203125,0.07593735168485999,0.9562737642585551,0.28608752449379493,0.17871194720783615,0.4663852500927492,proxy
|
||||||
|
haproxy,relay-stream16,1,8.308039477005826,nan,nan,nan,0,0,2,10.0,6.24222,0.9623231961314817,nan,49.83203125,0.07867298578199051,0.9505703422053232,0.3167530224525043,0.15875526406818438,0.5449350946951654,proxy
|
||||||
|
haproxy-splice,relay-stream16,1,29.073736361999362,nan,nan,nan,0,0,5,10.01,5.2230550000000004,0.2752388167968764,nan,60.93359375,0.23767979250176846,0.9506172839506173,0.5471823941313771,0.5540664084128356,1.1015963049849176,origin
|
||||||
|
haproxy-splice-response,relay-stream16,1,8.389033955271731,nan,nan,nan,0,0,4,10.02,6.331873,0.9551160459666538,nan,59.0234375,0.08315565031982942,0.9506641366223909,0.3386759581881533,0.16540263230842442,0.5926546829567926,proxy
|
||||||
|
haproxy-splice-auto,relay-stream16,1,30.873564099872663,nan,nan,nan,0,0,5,10.02,4.987747,0.25955608024746374,nan,100.69140625,0.24113475177304963,0.9506641366223909,0.6206317204301075,0.5787710892965405,1.235468870711629,origin
|
||||||
|
3proxy-devel-s0,relay-stream16,1,19.041464132182167,nan,nan,nan,0,0,839,10.03,7.127169,0.4198529973413813,nan,95.48046875,0.1480009352349778,0.9543292102759277,0.27928802588996765,0.35737882003043064,0.4938510459394594,proxy
|
||||||
|
3proxy-devel-s1,relay-ka-1k,1,0.25652363264,25087.05,2.38,4.91,0,0,0,10.1,7.083667999999999,31.498072582417027,39.86139285968,5.265625,0.19095719095719096,0.9591642924976258,0.34060295060936496,0.47850637897395615,0.3260839755053669,proxy
|
||||||
|
3proxy-devel-s3,relay-ka-1k,1,0.2801795072,27407.11,2.21,4.28,0,0,0,10.09,7.236766,28.810101354907374,36.45112695035205,5.13671875,0.19797687861271676,0.9591254752851711,0.3581707707067477,0.5032811266414632,0.3013739109092695,proxy
|
||||||
|
3proxy-devel-s,relay-ka-1k,1,0.29922164736,29268.07,2.07,3.75,0,0,0,10.1,6.931602,27.00339387637545,34.167331971150595,5.57421875,0.21042517415325487,0.9591642924976258,0.38102893890675243,0.5289350655666062,0.3431607782256374,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,1,0.28034727936000003,27416.96,2.22,4.04,0,0,0,10.09,7.221353,28.792860121301796,36.44033211624791,4.23046875,0.20230105465004794,0.9600380589914367,0.3664536741214057,0.5041976729321981,0.3116633301690466,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,1,0.31759269887999997,31060.2,1.96,3.77,0,0,0,10.11,6.9159489999999995,25.46658039848702,32.22731894845223,4.73828125,0.2154696132596685,0.9601139601139601,0.38806451612903226,0.5460794725984761,0.39629568432634016,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,1,0.31071404032,30394.58,1.99,3.69,0,0,0,10.08,6.910798,25.953123945396868,32.83676414538086,5.5078125,0.21425143953934742,0.96,0.3939297124600639,0.5384703554223707,0.328921364737832,proxy
|
||||||
|
nginx,relay-ka-1k,1,0.5066719232,49561.09,1.25,1.77,0,0,0,10.11,5.861486,15.962992282892694,20.197015796024125,31.25390625,0.3022297624818226,0.9610266159695817,0.5583253435602429,0.796219705527534,0.4866905711556212,proxy
|
||||||
|
haproxy,relay-ka-1k,1,0.4500488192,44018.19,1.37,2.08,0,0,0,10.12,6.065747,17.98915951916356,22.762954865469137,30.92578125,0.2709038182696955,0.9601518026565465,0.5168897386870618,0.7125217028176546,0.4448866526611447,proxy
|
||||||
|
haproxy-splice,relay-ka-1k,1,0.38084280319999997,37249.06,1.66,2.37,0,0,0,10.1,6.828559,21.216102633707322,26.847707046326914,35.15234375,0.23819742489270387,0.9600760456273765,0.4224818440164193,0.6050864494325259,0.4458653274627112,proxy
|
||||||
|
haproxy-splice-response,relay-ka-1k,1,0.43595595776,42638.41,1.47,2.0,0,0,0,10.11,6.4758309999999994,18.55233276672539,23.475813642443157,34.91796875,0.26865671641791045,0.9601139601139601,0.5058674278464954,0.6973530606926571,0.4544640031829388,proxy
|
||||||
|
haproxy-splice-auto,relay-ka-1k,1,0.49903828992000004,48806.68,1.28,1.86,0,0,0,10.1,6.044599,16.19114236964721,20.489890977550385,37.03125,0.2990609198169998,0.9600760456273765,0.532346314773093,0.781039769451613,0.4667658258783095,proxy
|
||||||
|
3proxy-devel-s0,relay-ka-1k,1,0.30500978688,29829.97,2.05,3.72,0,0,0,10.11,6.93403,26.51718190007477,33.55615594484974,5.56640625,0.21088107847857487,0.9610266159695817,0.3758475944462383,0.533715632369126,0.3394193365085414,proxy
|
||||||
|
3proxy-devel-s1,relay-ka-50k-2000,1,7.38734374912,17903.17,23.26,51.68,0,351,0,10.42,6.915622000000001,1.1284164218015449,57.882779039990226,65.83203125,0.25898418782942023,0.9904942965779467,0.3308963763509218,0.7382475191278011,0.2310134100380201,proxy
|
||||||
|
3proxy-devel-s3,relay-ka-50k-2000,1,7.38734374912,17897.25,24.25,57.44,0,287,0,10.37,7.039957,1.1230017556700596,57.57624549578311,66.7421875,0.25850987860033325,0.988560533841754,0.33048703352308667,0.7230340223067673,0.23007534183992576,proxy
|
||||||
|
3proxy-devel-s,relay-ka-50k-2000,1,7.250273894399999,17612.78,27.38,65.53,0,213,0,10.4,6.8810009999999995,1.147542854405299,58.64838040241812,111.4765625,0.2501797268152408,0.9885931558935361,0.3222748815165877,0.7097477352646034,0.23863054300973327,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,1,6.99895119872,17002.26,18.78,44.76,0,268,0,10.4,6.991216,1.18874953743378,60.783878245216194,132.5078125,0.24335965541995694,0.9895337773549001,0.3211356466876972,0.6887957287115601,0.22720477216789034,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,1,3.315597312,8053.37,50.62,113.37,0,169,0,10.33,6.534897,2.4924619072679475,127.42389105442345,122.42578125,0.22148760330578512,0.9838095238095238,0.18442622950819673,0.45474313571996383,0.11788532336680665,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,1,6.12863311872,14888.05,27.34,58.35,0,207,0,10.44,7.340143,1.3627834850300782,69.64782483972327,88.359375,0.23146819703491153,0.9923954372623575,0.29290690310322987,0.6487765706659395,0.20430501782801427,proxy
|
||||||
|
nginx,relay-ka-50k-2000,1,5.219559669760001,12679.72,77.4,95.49,0,294,0,10.21,6.024014,1.5648829626993368,79.99310539346266,113.7734375,0.24887945270110876,0.9696106362773029,0.2406822488945041,0.5860305787557493,0.15876409803077546,proxy
|
||||||
|
haproxy,relay-ka-50k-2000,1,4.0504393728000005,9756.62,197.2,1090.0,0,0,0,10.15,6.487414,2.004720785238363,103.26584596601893,151.8515625,0.2613499879894307,0.9657469077069457,0.19681846537741735,0.5841213900663946,0.12263840523829986,proxy
|
||||||
|
haproxy-splice,relay-ka-50k-2000,1,9.0194313216,21890.18,77.44,1030.0,0,0,0,10.2,5.6088309999999995,0.9047133581978933,46.298818018410586,159.484375,0.309832586654091,0.9686609686609686,0.4070741545144276,0.8466914400534145,0.26038416180713664,proxy
|
||||||
|
haproxy-splice-response,relay-ka-50k-2000,1,7.988639170560001,19412.68,89.92,762.07,0,699,0,10.18,5.984587,1.019447721460814,52.0758732172454,126.140625,0.28183321521379634,0.9686013320647003,0.36485642946317104,0.7658591444099558,0.23864185921215633,proxy
|
||||||
|
haproxy-splice-auto,relay-ka-50k-2000,1,7.988639170560001,19400.19,91.03,840.48,0,863,0,10.19,6.018134000000001,1.0204491435840564,52.21784938301972,128.05859375,0.2792238523426408,0.9686311787072244,0.3587905236907731,0.7648953788141729,0.2367148855905221,proxy
|
||||||
|
3proxy-devel-s0,relay-ka-50k-2000,1,6.1479269171199995,14934.84,24.67,54.2,0,242,0,10.41,7.317457999999999,1.354602960033438,69.13636001381398,89.2890625,0.2294455066921606,0.9904852521408183,0.2968799243618027,0.6412489842970084,0.20441215912468402,proxy
|
||||||
|
3proxy-devel-s1,relay-close-1k,1,0.04966055936,4878.87,12.53,21.06,0,0,0,10.02,7.025234,161.41582179713893,205.07572656569792,13.265625,0.1359545239223117,0.9515669515669516,0.16199872692552514,0.280640020540173,0.08080374234574378,proxy
|
||||||
|
3proxy-devel-s3,relay-close-1k,1,0.049828331520000005,4888.91,12.44,21.71,0,0,0,10.02,7.100341,160.87233418166034,204.6610429134582,10.265625,0.13724562233790819,0.9515669515669516,0.16199872692552514,0.28444985739480166,0.07985541952833648,proxy
|
||||||
|
3proxy-devel-s,relay-close-1k,1,0.05309988864,5218.02,11.54,22.42,0,0,0,10.0,6.816768000000001,150.65944966923382,191.32531042531616,14.4375,0.14549325762952448,0.9514747859181731,0.1715826197272439,0.3034902127017124,0.08366134850536602,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,1,0.04857004032,4768.99,12.91,22.83,0,0,0,10.01,6.993139,164.87530064294583,209.58522643998242,10.578125,0.13577023498694518,0.9524262607040913,0.15987261146496815,0.28065373838193547,0.07985737071569182,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,1,0.056203673600000004,5515.44,11.25,20.25,0,0,0,10.02,6.764394,142.62412911030782,181.47571268156628,13.98828125,0.15155807365439095,0.9506641366223909,0.18158649251353934,0.31108259597163673,0.09031028808328533,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,1,0.04898947072,4810.59,12.43,23.91,0,0,0,10.0,6.922828,163.30039664490582,207.58085274214307,15.671875,0.13962264150943396,0.9514747859181731,0.16735471578278818,0.28541749558652274,0.08175985785472654,proxy
|
||||||
|
nginx,relay-close-1k,1,0.08631877632,8474.74,7.09,11.32,0,0,0,10.03,5.319343,92.95775892667335,118.22950433193847,31.6796875,0.22742395437262358,0.9516129032258065,0.2535301668806162,0.47566160198247376,0.1302396102501007,proxy
|
||||||
|
haproxy,relay-close-1k,1,0.08396996608,8241.63,7.41,10.66,0,0,0,10.01,5.768903999999999,95.36743164062501,121.24368648635554,29.25390625,0.20522565320665084,0.9533333333333334,0.2697513377400063,0.4480363814624093,0.13591565248276868,proxy
|
||||||
|
haproxy-splice,relay-close-1k,1,0.09009364992,8846.31,6.93,10.2,0,0,0,10.01,5.7178070000000005,88.88528777678363,112.99753911453277,35.609375,0.2211470379985839,0.9524262607040913,0.2828061384278108,0.48420179874703156,0.1425783360861505,proxy
|
||||||
|
haproxy-splice-response,relay-close-1k,1,0.090177536,8856.24,6.94,9.66,0,0,0,10.01,5.704576,88.80260378815406,112.93124844874659,35.69921875,0.22185586434291096,0.9515209125475285,0.28633948108783996,0.48328790655448883,0.14260184004918694,proxy
|
||||||
|
haproxy-splice-auto,relay-close-1k,1,0.08279556096,8133.51,7.62,10.5,0,0,0,10.09,5.775738,97.49314946848088,122.83307362680172,37.55078125,0.19833926453143536,0.9600380589914367,0.27349359975023413,0.4290322755065881,0.13403747212599607,proxy
|
||||||
|
3proxy-devel-s0,relay-close-1k,1,0.04966055936,4874.4,12.48,21.47,0,0,0,10.02,6.817043,161.41582179713893,205.332076476977,15.4609375,0.13919848233341237,0.9515669515669516,0.16608447126071768,0.2920696647751849,0.08268377616122782,proxy
|
||||||
|
3proxy-devel-s3,connect-stream1-down,2,28.557620857595726,nan,nan,nan,0,0,0,10.0,5.145681,0.28010524169713924,nan,7.95703125,0.24528301886792453,0.949667616334283,0.2422907488986784,0.6898041042983796,0.5333764954149092,proxy
|
||||||
|
3proxy-devel-s,connect-stream1-down,2,25.179382734047454,nan,nan,nan,0,0,0,10.01,5.324719,0.31800395268810766,nan,9.703125,0.22827402565964658,0.9515209125475285,0.21547134356404635,0.6384383074329079,0.4544750160249083,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,2,28.682643556583,nan,nan,nan,0,0,0,10.0,5.273526,0.27888475740035384,nan,8.4921875,0.24648910411622277,0.9505703422053232,0.23356510745891276,0.6536014244788063,0.5238544533957729,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,2,5.758478959247152,nan,nan,nan,0,0,0,10.01,6.123263,1.390496499787202,nan,2.65625,0.23331622176591377,0.9980059820538385,0.07164179104477612,0.464507507113425,0.11878598831227317,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-stream1-down,2,19.834668292156135,nan,nan,nan,0,0,0,10.01,6.795844,0.4037100784888408,nan,7.84375,0.1829985301322881,0.9515209125475285,0.17802197802197803,0.4358184092260524,0.35278572480035786,proxy
|
||||||
|
tinyproxy,connect-stream1-down,2,1.1512096998120507,nan,nan,nan,0,0,0,9.99,6.00815,6.9414983030225414,nan,3.515625,0.21735905044510387,0.9514285714285714,0.018706404565630944,0.4814871468762811,0.024723229132428633,proxy
|
||||||
|
squid,connect-stream1-down,2,12.786987962061575,nan,nan,nan,0,0,0,10.02,7.3281670000000005,0.6268215810487541,nan,20.66015625,0.12374171372452737,0.9515669515669516,0.1109701965757768,0.2769156854084986,0.20920644795610677,proxy
|
||||||
|
3proxy-devel-s0,connect-stream1-down,2,20.5378642313236,nan,nan,nan,0,0,0,9.99,6.744941,0.3890938630685734,nan,5.96875,0.20804710500490678,0.9514285714285714,0.18352059925093633,0.49671825737006425,0.35456508469150855,proxy
|
||||||
|
3proxy-devel-s1,connect-stream1-down,2,29.872142182902067,nan,nan,nan,0,0,0,9.98,5.191209000000001,0.26724329945834535,nan,9.3984375,0.26199084116654614,0.9477682811016145,0.22887767969735182,0.7335868941949172,0.49912457512545777,proxy
|
||||||
|
3proxy-devel-s3,connect-stream16,2,28.70196333948938,nan,nan,nan,0,0,714,10.03,5.220066,0.2791265658284577,nan,81.7734375,0.18869257950530036,0.9516129032258065,0.3400641025641026,0.5274975493344652,0.7366496208827017,proxy
|
||||||
|
3proxy-devel-s,connect-stream16,2,31.171327246855846,nan,nan,nan,0,0,702,10.01,5.201479,0.256403311905955,nan,100.9375,0.20145916686279125,0.9524262607040913,0.35258261148540265,0.5703353815782514,0.7778810957524945,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,2,28.93924297398996,nan,nan,nan,0,0,760,10.03,5.593875000000001,0.2768473674728571,nan,78.46484375,0.18908059560387616,0.9516129032258065,0.3372990353697749,0.5284126719449631,0.7302769051129689,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,2,6.005501840598868,nan,nan,nan,0,0,171,10.04,6.302702,1.3325525997903727,nan,91.484375,0.04913363399003086,0.9543726235741445,0.30983606557377047,0.1083663650664396,0.4767968060959249,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-stream16,2,18.44226833616356,nan,nan,nan,0,0,808,10.06,6.996097,0.43519414037250087,nan,75.3203125,0.1447276128127192,0.9535545023696682,0.26537216828478966,0.3441041483307129,0.4654081784261016,proxy
|
||||||
|
tinyproxy,connect-stream16,2,1.2544997904314905,nan,nan,nan,0,0,92,10.05,6.159542,6.369977157021061,nan,50.75390625,0.015918270373010215,0.9544159544159544,0.3124178712220762,0.028515370601564536,0.5032137864091736,proxy
|
||||||
|
squid,connect-stream16,2,11.825028870247174,nan,nan,nan,0,0,0,10.03,7.683863,0.6782916328960839,nan,65.08984375,0.0960989533777355,0.9525166191832859,0.25104200064123117,0.21293128465526429,0.41890219378028254,proxy
|
||||||
|
3proxy-devel-s0,connect-stream16,2,19.08686688307318,nan,nan,nan,0,0,816,10.04,7.039876,0.41957177495001774,nan,79.2890625,0.14238798967863006,0.9534662867996201,0.26867119301648884,0.34790358930678605,0.4739531110725339,proxy
|
||||||
|
3proxy-devel-s1,connect-stream16,2,18.60844038482279,nan,nan,nan,0,0,779,10.04,6.98126,0.43023545885053915,nan,66.10546875,0.1388042203985932,0.9534662867996201,0.26297016861219197,0.3345906605740321,0.46634318524209356,proxy
|
||||||
|
3proxy-devel-s3,connect-ka-1k,2,0.28361883648,27738.47,2.19,4.13,0,0,0,10.06,7.220112,28.376112460949052,36.021713287214084,9.2734375,0.2096112050229413,0.9562737642585551,0.35522101217168484,0.5399416988489443,0.3334340000643675,proxy
|
||||||
|
3proxy-devel-s,connect-ka-1k,2,0.3154116608,30850.01,1.96,3.82,0,0,0,10.09,6.929822000000001,25.591951735476233,32.411630925000324,9.7734375,0.22760115606936415,0.9582146248812915,0.3897978825794033,0.5788794840092129,0.3219708860338426,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,2,0.26658996224000003,26073.83,2.32,4.1,0,0,0,10.09,7.2035480000000005,30.27870941642247,38.38574439431176,4.9296875,0.1955684007707129,0.9573055028462998,0.3394406943105111,0.5018817483646693,0.33911589237814443,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,2,0.2973761536,29084.69,2.08,3.97,0,0,0,10.08,6.872269,27.117170971438647,34.39650848140098,5.25390625,0.21816863976805992,0.9572649572649573,0.36784565916398715,0.562687042159084,0.30478109491523675,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-1k,2,0.32069648384,31365.22,1.93,3.47,1,0,0,10.09,6.872045,25.17021672126357,31.878023120255023,9.50390625,0.2441860465116279,0.9582146248812915,0.40625,0.6169482712584612,0.3438854302023949,proxy
|
||||||
|
tinyproxy,connect-ka-1k,2,0.28160557056,27541.73,2.17,4.24,0,0,0,10.09,7.010837,28.6642056971673,36.32423247508784,5.859375,0.20866618252239166,0.9573055028462998,0.3588348271446863,0.539894271252488,0.2773200174207988,proxy
|
||||||
|
squid,connect-ka-1k,2,0.37673238527999997,36851.36,1.65,2.45,0,0,0,10.05,7.230011,21.34140921817594,27.194354397908874,22.23828125,0.24771524771524772,0.9535104364326376,0.4010120177103099,0.6444867954273757,0.3951416416965349,proxy
|
||||||
|
3proxy-devel-s0,connect-ka-1k,2,0.31742492672000006,31043.44,1.97,3.34,0,0,0,10.08,6.924981,25.404432107227798,32.21435328407435,9.859375,0.22911636890391116,0.9572649572649573,0.393900481540931,0.5903638968744401,0.3505237481421506,proxy
|
||||||
|
3proxy-devel-s1,connect-ka-1k,2,0.2969567232,29042.63,2.12,3.55,0,0,0,10.08,7.093065,27.155472060381353,34.40437427044296,9.265625,0.223855421686747,0.9581749049429658,0.3776066730830927,0.5684906300694573,0.3134568295705591,proxy
|
||||||
|
3proxy-devel-s3,connect-ka-50k-2000,2,5.94643255296,14445.49,100.53,224.91,1,0,0,10.21,6.518586,1.3735966778828013,69.98807255178843,290.04296875,0.2452516619183286,0.970532319391635,0.2984097287184284,0.6558901778937976,0.19282245675220447,proxy
|
||||||
|
3proxy-devel-s,connect-ka-50k-2000,2,6.45998313472,15693.08,100.26,210.73,1,0,0,10.24,6.52134,1.2681147658065939,64.6130159891975,397.984375,0.25576968831786817,0.9724596391263058,0.3137071651090343,0.6938870696012368,0.19566792869346655,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,2,6.31486021632,15340.38,94.24,220.57,0,3,0,10.18,6.48811,1.2896564169310998,65.71345576606527,177.23046875,0.24768902583550603,0.967680608365019,0.3121297162457125,0.6663343623848023,0.20043336819899846,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,2,3.40510375936,8271.73,183.3,323.8,0,0,0,10.19,6.455838,2.39405333173524,122.05054497544616,166.5,0.22717571733459804,0.9686311787072244,0.197998123240538,0.4933353533508,0.12064468902697995,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-ka-50k-2000,2,5.42432559104,13177.05,116.73,231.48,2,1,0,10.22,6.7793280000000005,1.5072841522465514,76.85019475734288,379.96484375,0.22172160303533317,0.9714828897338403,0.26986600186974136,0.5931357443779149,0.16332482501484574,proxy
|
||||||
|
tinyproxy,connect-ka-50k-2000,2,0.9157004492799999,2222.51,348.73,1050.0,0,9,0,10.64,6.618074999999999,9.295616275707678,453.11302274082277,127.6484375,0.22485071198897566,0.9663941871026339,0.08617053329316059,0.43922747111697197,0.047156470783995395,proxy
|
||||||
|
squid,connect-ka-50k-2000,2,4.67555844096,11358.25,159.92,232.13,0,0,0,10.22,7.427168999999999,1.7486681223732665,89.17119648201307,236.5859375,0.15516014234875444,0.9714828897338403,0.19710327455919396,0.4325142703703724,0.135840284917291,proxy
|
||||||
|
3proxy-devel-s0,connect-ka-50k-2000,2,5.1707379711999994,12561.16,118.78,291.48,0,0,0,10.25,6.836271999999999,1.5858471354906007,80.79964054013574,384.42578125,0.22293144208037824,0.9752616555661275,0.2669372463315642,0.585552313883391,0.16717100167993612,proxy
|
||||||
|
3proxy-devel-s1,connect-ka-50k-2000,2,6.32064835584,15354.47,107.91,226.06,0,0,0,10.21,6.414334,1.2922724917061916,65.91093953752598,286.5,0.26294632300780324,0.9696106362773029,0.3161833489242282,0.6949173817363635,0.20139063270126972,proxy
|
||||||
|
3proxy-devel-s3,connect-close-1k,2,0.03909091328,3839.14,4.39,17.13,21,0,0,10.05,7.124109,205.67439656400887,259.2812362942133,13.76953125,0.2880639097744361,0.9553231939163498,0.14706814580031696,0.8412496257451696,0.07028827867863646,proxy
|
||||||
|
3proxy-devel-s,connect-close-1k,2,0.04630511616,4542.77,3.96,12.75,18,0,0,10.07,6.882775,173.97645590961844,219.79221232757115,11.66015625,0.3248647377087744,0.9572243346007605,0.16693063034526448,0.974349861219856,0.07884390047339782,client
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,2,0.04202692608,4129.67,4.4,14.64,23,0,0,10.09,6.995973,192.0673423660492,242.04188356082233,9.1171875,0.29207920792079206,0.9582146248812915,0.15717900063251106,0.8744979408585466,0.07408574924181473,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,2,0.04789895168,4702.24,3.04,12.18,34,0,0,10.08,6.6611340000000006,168.3544152254816,212.4072825354012,8.19921875,0.3274482109227872,0.9581749049429658,0.16782773907536416,0.9923160071438267,0.07883150281624517,client
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,connect-close-1k,2,0.038671482880000004,3795.85,5.59,15.8,14,0,0,10.08,7.170096999999999,208.52575074566158,263.13041662315965,22.44140625,0.27992459943449577,0.9581749049429658,0.15110410094637225,0.8269223790409616,0.0693071563605128,proxy
|
||||||
|
tinyproxy,connect-close-1k,2,0.04882169856,4793.5,3.99,13.11,25,0,0,10.08,6.55135,165.17245892396906,208.40224942110487,7.0234375,0.4683901292596945,0.9572649572649573,0.1861937935402153,1.525534782383264,0.08927637274303012,client
|
||||||
|
squid,connect-close-1k,2,0.03405774848,3346.52,8.1,20.13,1,0,0,10.09,7.3469880000000005,237.00920819061733,298.60021899322305,20.58984375,0.25617283950617287,0.9582146248812915,0.13536701620591038,0.7500069364130408,0.0645922554971297,proxy
|
||||||
|
3proxy-devel-s0,connect-close-1k,2,0.044543508479999994,4371.25,3.65,14.49,30,0,0,10.09,6.8580250000000005,181.21608008548142,228.56495639370257,11.08203125,0.32669789227166274,0.9573055028462998,0.16936765173180807,0.960978268333319,0.08073830621005344,client
|
||||||
|
3proxy-devel-s1,connect-close-1k,2,0.04311744512,4230.45,3.96,14.88,21,0,0,10.07,7.012789000000001,186.83852852550464,235.95847880591418,13.5546875,0.2990080302314596,0.9581351094196003,0.15822784810126583,0.893561133402034,0.07314284057779331,proxy
|
||||||
|
3proxy-devel-s3,socks-stream1-down,2,33.55937570718549,nan,nan,nan,0,0,0,10.01,5.278891000000001,0.23859585749218168,nan,9.14453125,0.26033357505438726,0.9506172839506173,0.2597361809045226,0.717472030660972,0.5515268033884795,proxy
|
||||||
|
3proxy-devel-s,socks-stream1-down,2,30.73128858789023,nan,nan,nan,0,0,0,9.98,5.247542999999999,0.25977236179795504,nan,11.65625,0.25565719788155994,0.9495718363463368,0.25540582889376373,0.7278484917464831,0.5417019353058213,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,2,32.83302433716672,nan,nan,nan,0,0,0,9.99,5.265826,0.24338712380230654,nan,9.0,0.2560386473429952,0.950523311132255,0.1995530012771392,0.706082964341237,0.45928038044493036,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,2,5.845660381962145,nan,nan,nan,0,0,0,9.99,6.175362,1.3671327599495515,nan,3.203125,0.23857742652506791,0.950523311132255,0.06267806267806268,0.45960898966980074,0.1017499104908367,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-stream1-down,2,19.74503050010664,nan,nan,nan,0,0,0,10.01,6.675997,0.40552794538007836,nan,4.609375,0.2002066649444588,0.9970119521912351,0.14549111632584646,0.4658168177486498,0.2990062434356526,proxy
|
||||||
|
dante,socks-stream1-down,2,7.76356699274207,nan,nan,nan,0,0,0,11.64,10.288242,1.199321408615474,nan,32.87890625,0.062055996656916,0.9683860232945092,0.06343490304709141,0.1515384728690422,0.11562349951877109,proxy
|
||||||
|
3proxy-devel-s0,socks-stream1-down,2,18.38772996518937,nan,nan,nan,0,0,0,9.99,6.782258,0.4346080672812922,nan,6.90625,0.20015535991714137,0.999,0.20658380920389655,0.4585235155594546,0.4242089894993604,proxy
|
||||||
|
3proxy-devel-s1,socks-stream1-down,2,34.206652755489884,nan,nan,nan,0,0,0,9.97,5.283687,0.23314604673204242,nan,11.5390625,0.26478397296644945,0.9477186311787072,0.25956112852664576,0.7297220813350287,0.5476035894531915,proxy
|
||||||
|
3proxy-devel-s3,socks-stream16,2,30.959722235676438,nan,nan,nan,0,0,757,10.03,5.1508460000000005,0.25882911262789615,nan,80.9609375,0.1982534812367241,0.9516129032258065,0.3503368623676612,0.5663337174432417,0.7700136253984072,proxy
|
||||||
|
3proxy-devel-s,socks-stream16,2,31.80603443327492,nan,nan,nan,0,0,739,10.04,5.185382,0.25192107180737355,nan,104.61328125,0.2090289207618152,0.952561669829222,0.36232811000959386,0.5986243661165587,0.7994043651920227,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,2,22.10811880011133,nan,nan,nan,0,0,701,10.05,5.666711,0.3629210312678975,nan,78.578125,0.15686735653809972,0.95260663507109,0.30521571152607857,0.4078323329254458,0.6401911532601908,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,2,5.83750266475836,nan,nan,nan,0,0,210,10.06,6.281395000000001,1.3720853263322788,nan,88.5390625,0.04827586206896552,0.9553656220322887,0.3062295081967213,0.10930944579905824,0.4729759717745601,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-stream16,2,19.21412853810226,nan,nan,nan,0,0,778,10.03,7.07065,0.41615407327803033,nan,92.25,0.14138576779026218,0.9534220532319392,0.2655844155844156,0.34209954016204097,0.4718710751055772,proxy
|
||||||
|
dante,socks-stream16,2,15.090113362407179,nan,nan,nan,0,0,0,11.71,9.202224,0.6205301648973948,nan,82.60546875,0.10319104848736013,0.9725913621262459,0.18778026905829595,0.22293423078725566,0.3257424052826401,proxy
|
||||||
|
3proxy-devel-s0,socks-stream16,2,18.45316124949666,nan,nan,nan,0,0,770,10.05,7.035219,0.4340527316108831,nan,87.73828125,0.14339181286549707,0.9535104364326376,0.2644012944983819,0.3431226270926567,0.4663201335855392,proxy
|
||||||
|
3proxy-devel-s1,socks-stream16,2,19.482738535848338,nan,nan,nan,0,0,819,10.03,7.022807,0.41106386590121025,nan,74.5546875,0.14830409356725147,0.9516129032258065,0.2705767984445885,0.35642957216255094,0.47844694452283026,proxy
|
||||||
|
3proxy-devel-s3,socks-ka-1k,2,0.27321696256,26720.67,2.23,4.52,0,0,0,10.06,7.2269499999999995,29.456443423539685,37.36096410599224,5.328125,0.2094480597734394,0.9562737642585551,0.35424,0.5323402281986288,0.2707377382896506,proxy
|
||||||
|
3proxy-devel-s,socks-ka-1k,2,0.29418848256,28775.96,2.06,3.81,0,0,0,10.1,6.940336,27.465385217288638,34.77937479769423,5.52734375,0.2193424526037917,0.9600760456273765,0.3702989392478303,0.5494422728792753,0.32011124942654906,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,2,0.27674017792,27068.54,2.22,5.08,0,0,0,10.05,7.206779,29.05252161225466,36.84071613953284,4.4375,0.21320163815947965,0.956232159847764,0.365581098339719,0.5389822409915221,0.2897009937285029,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,2,0.30190600192,29527.69,2.04,3.65,0,0,0,10.12,6.919732000000001,26.816293642765345,33.94401250427654,4.68359375,0.22257129047849203,0.9601518026565465,0.388250319284802,0.5713033937793079,0.32202892375949355,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-1k,2,0.30601641984,29932.03,2.03,3.92,0,0,0,10.07,6.905793999999999,26.32538477579753,33.39700985659516,5.5078125,0.2312124849939976,0.9572243346007605,0.37119024703240294,0.5826739232159236,0.36377982741263776,proxy
|
||||||
|
dante,socks-ka-1k,2,0.26977763328,26383.77,1.28,5.53,0,0,0,11.66,9.336064,34.57662478015198,43.83326817238579,116.46484375,0.17968586387434554,0.969243557772236,0.2887907233572612,0.44673159887969865,0.30251714080303216,proxy
|
||||||
|
3proxy-devel-s0,socks-ka-1k,2,0.31851544576,31153.95,1.97,3.36,0,0,0,10.08,6.9263900000000005,25.31745354062418,32.10702341137124,5.515625,0.23349397590361445,0.9572649572649573,0.39890885750962773,0.5950107819367456,0.3115470653495499,proxy
|
||||||
|
3proxy-devel-s1,socks-ka-1k,2,0.285212672,27894.36,2.14,6.85,0,0,0,10.07,7.079314,28.245589312385114,35.79871664978048,5.32421875,0.22000959692898273,0.9572243346007605,0.3782483156881617,0.5521806799962766,0.3047607775466244,proxy
|
||||||
|
3proxy-devel-s3,socks-ka-50k-2000,2,5.93250746368,14411.51,110.16,213.12,2,0,0,10.24,6.526216,1.3808663621837927,70.38477929147822,166.8828125,0.23661771672193274,0.9724596391263058,0.29035279425538557,0.6245498966406986,0.18998431701183305,proxy
|
||||||
|
3proxy-devel-s,socks-ka-50k-2000,2,6.3388516352,15398.77,76.73,200.53,0,0,0,10.21,6.492956,1.2885614729713244,65.64987590180168,266.1328125,0.25350439534331193,0.970532319391635,0.3100218545113956,0.6814879522552615,0.20039116074321228,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,2,6.561653063680001,15939.98,96.6,209.08,4,0,0,10.23,6.510748,1.2472466801544262,63.54116200201245,163.3671875,0.24804363291439413,0.9724334600760456,0.3116640746500778,0.6624983874513564,0.1975452984247328,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,2,2.4680962457600004,5995.41,222.47,427.48,4,0,0,10.3,6.329154,3.3386056212984756,170.3323962295353,159.328125,0.18571428571428572,0.9781576448243114,0.15948411450141553,0.38215231613816214,0.09404026684278509,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-ka-50k-2000,2,5.18994788352,12607.68,92.07,216.3,5,0,0,10.23,6.7766470000000005,1.5768944474350541,80.40050928181833,254.84765625,0.23159144893111638,0.9724334600760456,0.27510917030567683,0.5884004292059287,0.17002613665199431,proxy
|
||||||
|
dante,socks-ka-50k-2000,2,4.78259707904,11618.15,2.42,331.25,0,0,0,11.87,8.901108,1.9855320954417741,101.33000973177853,1428.30078125,0.18955592105263158,0.9875207986688852,0.2188094590921446,0.4708672009403793,0.13048375306133822,proxy
|
||||||
|
3proxy-devel-s0,socks-ka-50k-2000,2,5.389261209600001,13091.86,74.52,206.08,3,0,0,10.25,6.882231,1.521544360364863,77.51937984496124,254.53515625,0.21930870083432658,0.97340930674264,0.2754435107376284,0.5894167840055845,0.17384585539905772,proxy
|
||||||
|
3proxy-devel-s1,socks-ka-50k-2000,2,5.9320041472,14410.35,96.82,205.25,2,0,0,10.21,6.334657,1.3769376752468094,70.18002103338534,161.1796875,0.2435441838426913,0.970532319391635,0.29774577332498436,0.6406525999286276,0.20326509051522562,proxy
|
||||||
|
3proxy-devel-s3,socks-close-1k,2,0.039258685439999996,3852.51,5.17,14.7,19,0,0,10.08,7.060862,205.4067758413462,259.13928736695976,7.03515625,0.22251000706380974,0.9563567362428842,0.14879441624365483,0.538985697958007,0.0712434767005421,proxy
|
||||||
|
3proxy-devel-s,socks-close-1k,2,0.04219469824,4147.11,4.76,16.21,20,0,0,10.08,6.775872,191.11405784045724,240.74516360162409,7.2578125,0.23327049952874646,0.9572649572649573,0.15572470662860768,0.5731579879132077,0.07598575723585518,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,2,0.04060086272,3987.79,4.54,15.2,26,0,0,10.08,6.950507,198.61646920196281,250.53437391261122,8.07421875,0.22356281050390348,0.9572649572649573,0.15238697439140056,0.5532014491968661,0.07216164191649498,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,2,0.0452984832,4447.91,4.28,13.07,17,0,0,10.1,6.671004,178.37241843894674,224.87420403437682,8.8359375,0.2576151121605667,0.9582542694497154,0.1693138500635324,0.6435036006184791,0.08358647378318709,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,socks-close-1k,2,0.0390070272,3826.46,4.94,15.92,20,0,0,10.07,6.847095,206.52688959593414,260.71872410936203,9.6875,0.2255409219190969,0.9581351094196003,0.15158227848101266,0.5437847756883332,0.07030141145750494,proxy
|
||||||
|
dante,socks-close-1k,2,0.015770583039999998,1549.66,13.89,40.6,8,0,0,11.63,10.285185,589.9591648832283,743.8439398784777,129.48828125,0.09312409663431757,0.9667497921862012,0.06790465631929046,0.21299001719345872,0.03075395796875296,proxy
|
||||||
|
3proxy-devel-s0,socks-close-1k,2,0.04269801472,4190.58,4.65,14.93,15,0,0,10.03,6.7446209999999995,187.92442816413924,237.4863853767107,7.0,0.23426820645769503,0.9534220532319392,0.15484483850538316,0.57607771972108,0.0741005965248684,proxy
|
||||||
|
3proxy-devel-s1,socks-close-1k,2,0.03674210304,3605.37,5.78,18.07,17,0,0,10.08,6.923954999999999,219.47573309075344,276.9306849089261,6.69921875,0.20221541362243695,0.9572649572649573,0.13542657786235332,0.4896146769626439,0.06460334999695005,proxy
|
||||||
|
3proxy-devel-s3,relay-stream1-down,2,32.609416619196764,nan,nan,nan,0,0,0,9.99,5.257033,0.24505628676902044,nan,11.27734375,0.28147960476311124,0.9970059880239521,0.2763288213931991,0.7343182749912766,0.6099720955446912,proxy
|
||||||
|
3proxy-devel-s,relay-stream1-down,2,29.874320055657886,nan,nan,nan,0,0,0,10.0,5.279534,0.2677591215979083,nan,11.5234375,0.2757660167130919,0.998003992015968,0.22319034852546918,0.730113569895749,0.5160105961760123,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,2,28.556955462685327,nan,nan,nan,0,0,0,9.89,5.227275000000001,0.27703120367612505,nan,10.78515625,0.2598841601611685,0.988011988011988,0.21650517875041764,0.6943600398049655,0.5001632353252703,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,2,5.78165290469623,nan,nan,nan,0,0,0,10.0,6.090641,1.3835402820343101,nan,3.08203125,0.2426885582349923,0.998003992015968,0.06522462562396007,0.5004131607499644,0.10879609085326039,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-stream1-down,2,18.188878741117065,nan,nan,nan,0,0,0,10.01,6.869552,0.44022249847425654,nan,8.078125,0.19063374904555866,0.999001996007984,0.16771004942339374,0.445542072458229,0.31745018645894235,proxy
|
||||||
|
nginx,relay-stream1-down,2,8.66702734139361,nan,nan,nan,0,0,0,10.0,6.426478,0.9229404010512436,nan,32.91015625,0.20712368870456208,0.9505703422053232,0.08618504435994931,0.4586342356095423,0.14736240927227645,proxy
|
||||||
|
haproxy,relay-stream1-down,2,8.743668351320583,nan,nan,nan,0,0,0,9.97,6.549087,0.9121058034242162,nan,31.234375,0.18121790168745414,0.9477186311787072,0.08970309538850284,0.4291387361668214,0.15398178340172175,proxy
|
||||||
|
haproxy-splice,relay-stream1-down,2,31.04626859583339,nan,nan,nan,0,0,0,9.98,5.272209,0.25713702052559506,nan,42.69921875,0.2790991902834008,0.9950149551345963,0.2517321016166282,0.7151026402172433,0.5339328863129388,proxy
|
||||||
|
haproxy-splice-response,relay-stream1-down,2,27.391887449124322,nan,nan,nan,0,0,0,9.98,5.334712,0.29144124743309296,nan,44.1953125,0.2505415162454874,0.9495718363463368,0.20291693088142043,0.7184233079996459,0.4459626886704679,proxy
|
||||||
|
haproxy-splice-auto,relay-stream1-down,2,30.807154068699532,nan,nan,nan,0,0,0,9.9,5.365657,0.25705594664747766,nan,44.0625,0.2874493927125506,0.9880239520958084,0.2402382528127068,0.7393304203665723,0.5351299983361592,proxy
|
||||||
|
3proxy-devel-s0,relay-stream1-down,2,19.522446976535647,nan,nan,nan,0,0,0,10.0,6.826408000000001,0.409741918971536,nan,6.78515625,0.20980091883614088,0.998003992015968,0.17517286796180442,0.5025114107646372,0.33042289686839604,proxy
|
||||||
|
3proxy-devel-s1,relay-stream1-down,2,26.181119094111754,nan,nan,nan,0,0,0,9.85,5.273989,0.3009484485253335,nan,10.65625,0.2551951343132286,0.985,0.20305242203052423,0.681241593004614,0.44118769074873754,proxy
|
||||||
|
3proxy-devel-s3,relay-stream16,2,32.232130137893925,nan,nan,nan,0,0,729,10.05,5.185661,0.24890251397177932,nan,86.375,0.19471947194719472,0.95260663507109,0.3510125361620058,0.5484652910713944,0.7652634574160296,proxy
|
||||||
|
3proxy-devel-s,relay-stream16,2,30.4720376041256,nan,nan,nan,0,0,668,10.03,5.258998,0.26268159837301847,nan,105.76953125,0.18972425170869667,0.9525166191832859,0.3475472907983328,0.535138903666401,0.7541187135797226,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,2,27.446229996573877,nan,nan,nan,0,0,795,10.03,5.57829,0.2917678417085918,nan,65.59375,0.18039772727272727,0.9525166191832859,0.32628882484790267,0.49805515461289274,0.6933102320641833,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,2,5.71774499178022,nan,nan,nan,0,0,207,10.05,6.344737,1.4002340261703556,nan,92.58203125,0.045919581251487034,0.9535104364326376,0.29311475409836063,0.10837031196487061,0.45008225495613413,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-stream16,2,18.774413008845393,nan,nan,nan,0,0,779,10.05,7.099914,0.4266120760417652,nan,94.66015625,0.1441588785046729,0.9544159544159544,0.26703439325113565,0.34601676453343627,0.4767889999935916,proxy
|
||||||
|
nginx,relay-stream16,2,9.67830748494177,nan,nan,nan,0,0,690,10.07,6.633081000000001,0.8267209319784303,nan,111.78125,0.0718192627824019,0.9572243346007605,0.2728164867517174,0.17301604827003406,0.44737096805751514,proxy
|
||||||
|
haproxy,relay-stream16,2,9.363204766317489,nan,nan,nan,0,0,6,10.02,6.337033,0.8558150281343058,nan,57.2109375,0.0877318116975749,0.9506641366223909,0.3729937194696441,0.18822853272928952,0.6383439221874979,proxy
|
||||||
|
haproxy-splice,relay-stream16,2,31.508985349479893,nan,nan,nan,0,0,5,10.01,5.038028000000001,0.2539697886234811,nan,57.09765625,0.25559481743227325,0.9506172839506173,0.5949796472184532,0.5987485611426023,1.1860242184873262,origin
|
||||||
|
haproxy-splice-response,relay-stream16,2,8.19925174304105,nan,nan,nan,0,0,0,10.01,6.296692,0.9759276108289991,nan,66.6171875,0.07756166982922201,0.9515209125475285,0.32276954874268,0.15779254215470143,0.5679738177959849,proxy
|
||||||
|
haproxy-splice-auto,relay-stream16,2,23.19645953859702,nan,nan,nan,0,0,10,10.02,5.015642000000001,0.3453446745983972,nan,72.421875,0.1909714015599149,0.9506641366223909,0.4848184818481848,0.43434183024209094,0.9639011316890784,origin
|
||||||
|
3proxy-devel-s0,relay-stream16,2,18.516146499496134,nan,nan,nan,0,0,796,10.04,7.073167,0.4323383853937372,nan,99.890625,0.14125087842586087,0.952561669829222,0.2590791180285344,0.3459787187938514,0.4613889810239082,proxy
|
||||||
|
3proxy-devel-s1,relay-stream16,2,19.256971226724286,nan,nan,nan,0,0,780,10.05,7.095341,0.4163589493696276,nan,93.12109375,0.14526315789473684,0.9535104364326376,0.27511341542449774,0.35077529908915944,0.4898873573706089,proxy
|
||||||
|
3proxy-devel-s3,relay-ka-1k,2,0.29192355839999995,28552.04,2.17,3.67,0,0,0,10.08,7.237654,27.62366985452586,34.954486345903774,5.0546875,0.2025529865125241,0.96,0.37828315182575273,0.51659795659207,0.2890188883769437,proxy
|
||||||
|
3proxy-devel-s,relay-ka-1k,2,0.30400315392,29736.81,2.04,4.65,0,0,0,10.09,6.946888,26.552356105240236,33.59671291625462,5.62890625,0.21672272945699184,0.9600380589914367,0.3939685595123516,0.5441361138926789,0.31370261745759237,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,2,0.26860322816000004,26268.85,2.26,8.17,0,0,0,10.08,7.214875,30.02197723102748,37.99500938567196,4.21484375,0.1938653247064462,0.96,0.33941138835572615,0.48522190441612156,0.3185090777994506,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,2,0.29888610304,29236.05,2.05,4.1,0,0,0,10.09,6.893058000000001,27.006943172997648,34.17118782977398,4.73828125,0.21142308615310776,0.9600380589914367,0.37901155327342745,0.5289353654899556,0.32130633511245216,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-1k,2,0.320864256,31387.51,1.96,3.61,0,0,0,10.1,6.926389,25.181988485498366,31.861801800664995,5.515625,0.21469879518072288,0.9600760456273765,0.4004503055644902,0.5498903176107196,0.3384462187236002,proxy
|
||||||
|
nginx,relay-ka-1k,2,0.51959037952,50820.1,1.22,1.8,0,0,0,10.09,5.845303,15.535314582723705,19.658307826889992,33.2265625,0.30253929866989115,0.960952380952381,0.5460083360051299,0.795353101610856,0.49628180520340165,proxy
|
||||||
|
haproxy,relay-ka-1k,2,0.478150656,46769.22,1.31,1.89,0,0,0,10.12,6.055965,16.931901898300435,21.42343028917397,30.79296875,0.28274025659646573,0.9601518026565465,0.5407573812580231,0.7467890369374408,0.5425657674331442,proxy
|
||||||
|
haproxy-splice,relay-ka-1k,2,0.39409680383999995,38542.57,1.64,1.99,0,0,0,10.03,6.769024,20.360479764909936,26.007566308922176,34.9453125,0.23625059780009564,0.9516129032258065,0.42628104369695063,0.6117444714267992,0.34699577375405594,proxy
|
||||||
|
haproxy-splice-response,relay-ka-1k,2,0.42396024832,41469.13,1.49,2.19,0,0,0,10.09,6.465894,19.039520879578678,24.0910925035874,38.93359375,0.26594464500601683,0.9600380589914367,0.4718958399491902,0.6925648790228179,0.47039715219675066,proxy
|
||||||
|
haproxy-splice-auto,relay-ka-1k,2,0.46221230080000003,45209.49,1.37,2.01,0,0,0,10.1,6.045323,17.481144456811478,22.120017520805956,40.7265625,0.2751564756860857,0.9609895337773549,0.5100414408670705,0.7192160840155983,0.4249628650976162,proxy
|
||||||
|
3proxy-devel-s0,relay-ka-1k,2,0.32119980032,31417.29,1.94,3.76,0,0,0,10.09,6.922368,25.130775274325053,31.799759216887594,5.62890625,0.21136254212806932,0.9600380589914367,0.37990985189954923,0.5403852856330394,0.3270529084324984,proxy
|
||||||
|
3proxy-devel-s1,relay-ka-1k,2,0.29746003968,29092.98,2.1,3.77,0,0,0,10.1,7.093419,27.163312452631484,34.373500413503,5.3046875,0.2105010788779669,0.9609895337773549,0.36245954692556637,0.5280274811071924,0.2842605652893803,proxy
|
||||||
|
3proxy-devel-s3,relay-ka-50k-2000,2,7.276865781760001,17677.3,20.19,45.78,0,217,0,10.39,7.060055999999999,1.1422500083531348,58.34816840662889,51.33203125,0.2539454806312769,0.9895238095238095,0.3274280291047137,0.7230918205429355,0.22153748614587143,proxy
|
||||||
|
3proxy-devel-s,relay-ka-50k-2000,2,7.0908903424,17225.7,25.54,61.4,0,251,0,10.43,6.906887,1.176721059992569,60.08202953985115,103.9921875,0.2505960896518836,0.9895635673624289,0.324929089190041,0.6992297868231687,0.2215113797296788,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,2,7.1599285862399995,17393.33,24.5,55.93,0,282,0,10.42,7.001930000000001,1.164257422346388,59.42468690831946,165.77734375,0.2592237661715381,0.9914367269267365,0.329137822529893,0.7334674453162403,0.22435686190069287,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,2,3.45468043264,8390.61,50.92,121.71,0,171,0,10.34,6.5500560000000005,2.3944327590609293,122.25979615484664,42.1484375,0.22627218934911242,0.9838249286393911,0.19263456090651557,0.4737784809072863,0.11787911661710894,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-ka-50k-2000,2,6.399165726720001,15545.14,29.86,79.06,0,285,0,10.38,7.253206,1.297669157922615,66.23023620841468,85.7421875,0.23477430140912348,0.9885714285714285,0.2961104140526976,0.6564943854296784,0.2034703941041305,proxy
|
||||||
|
nginx,relay-ka-50k-2000,2,5.160839413760001,12537.11,76.82,103.38,0,285,0,10.24,6.017119,1.5873386755957217,80.98638890866096,112.01171875,0.2451141982575936,0.9715370018975332,0.23427126146063865,0.567977195983112,0.15686259292450727,proxy
|
||||||
|
haproxy,relay-ka-50k-2000,2,4.18440544256,10080.41,191.33,948.69,0,0,0,10.16,6.455971,1.9424503938670263,100.18143093791906,150.31640625,0.2684806164218637,0.966698382492864,0.19500780031201248,0.6003361666449323,0.12265209418055813,proxy
|
||||||
|
haproxy-splice,relay-ka-50k-2000,2,9.10533066752,22196.06,77.16,1250.0,0,71,0,10.18,5.603119,0.8944211141118462,45.65083835208545,158.0390625,0.3161381921438713,0.9658444022770398,0.41677057356608477,0.8723483011003808,0.27661491061819143,proxy
|
||||||
|
haproxy-splice-response,relay-ka-50k-2000,2,7.988639170560001,19378.15,92.84,763.15,0,703,0,10.19,5.970009,1.0204491435840564,52.18362079560818,129.796875,0.2798868191464277,0.9686311787072244,0.3640323584318606,0.7601713617920112,0.24424315098678492,proxy
|
||||||
|
haproxy-splice-auto,relay-ka-50k-2000,2,7.988639170560001,19303.79,93.41,736.27,0,687,0,10.19,6.005884,1.0204491435840564,52.44602280038087,132.9140625,0.2807556080283353,0.9686311787072244,0.3584084550823749,0.764886686790279,0.2291172738046438,proxy
|
||||||
|
3proxy-devel-s0,relay-ka-50k-2000,2,6.1270392832,14884.19,32.44,71.16,0,221,0,10.42,7.22638,1.3605266123977444,69.59100259129644,109.796875,0.23829990448901622,0.9914367269267365,0.29924717691342534,0.6602655967820715,0.2006002479741599,proxy
|
||||||
|
3proxy-devel-s1,relay-ka-50k-2000,2,7.47324309504,18062.1,24.56,49.42,0,280,0,10.39,6.905315,1.1122346609488303,57.15134379916171,72.90234375,0.2601626016260163,0.9876425855513308,0.3352236925015753,0.7363816819121568,0.23387526604532868,proxy
|
||||||
|
3proxy-devel-s3,relay-close-1k,2,0.04714397696,4631.88,13.06,22.57,0,0,0,10.01,7.0941399999999994,169.8626318011844,215.85371113123733,15.8203125,0.1326241134751773,0.9524262607040913,0.15504616364215218,0.2711485089943038,0.07605775219210063,proxy
|
||||||
|
3proxy-devel-s,relay-close-1k,2,0.05377097728,5277.79,11.64,19.71,0,0,0,10.01,6.847116,148.92792366968115,189.4326482722077,11.09765625,0.15056818181818182,0.9524262607040913,0.18048935494121385,0.31586118301900334,0.08936862049509268,proxy
|
||||||
|
3proxy-0.9.4-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,2,0.044207964159999995,4343.94,13.92,25.69,0,0,0,10.03,6.968369,181.5057569934476,230.62773051276156,12.46875,0.12855787476280836,0.9525166191832859,0.15413891531874405,0.2616309951339731,0.07415538390420838,proxy
|
||||||
|
3proxy-0.9.4-s0-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,2,0.05469372416,5367.69,11.52,21.07,0,0,0,10.02,6.753013,146.5616050673409,186.2695889799788,13.41796875,0.1465149359886202,0.9524714828897338,0.17947903430749682,0.3082504827037562,0.088415505575996,proxy
|
||||||
|
3proxy-1.0.1-ocTCP_NODELAY-osTCP_NODELAY,relay-close-1k,2,0.05058330624,4963.51,12.16,22.32,0,0,0,10.0,6.9440479999999996,158.1549446776534,201.2760904132198,14.18359375,0.1397874852420307,0.9514747859181731,0.16751592356687897,0.2873168182617643,0.08271605850023628,proxy
|
||||||
|
nginx,relay-close-1k,2,0.085983232,8444.01,7.21,10.18,0,0,0,10.02,5.294028999999999,93.2274795160061,118.50274968955118,33.05078125,0.2254293893129771,0.9515669515669516,0.2649408756791307,0.4785078658319443,0.13588499238511328,proxy
|
||||||
|
haproxy,relay-close-1k,2,0.08187281408,8037.62,7.59,11.27,0,0,0,10.0,5.7318549999999995,97.71253241867315,124.24675405355035,29.25,0.20918125887363936,0.9514747859181731,0.2719849246231156,0.44996091391310516,0.13682152988763654,proxy
|
||||||
|
haproxy-splice,relay-close-1k,2,0.08967421952,8805.78,6.91,10.05,0,0,0,9.99,5.7355089999999995,89.1226044985822,113.38872241895942,38.09375,0.22522946575664862,0.9514285714285714,0.2872340425531915,0.48994848577240246,0.14355870789073888,proxy
|
||||||
|
haproxy-splice-response,relay-close-1k,2,0.08564768768,8407.19,7.35,9.48,0,0,0,10.11,5.7699,94.43337256481084,119.06304099490066,37.59375,0.21566776781500707,0.9601139601139601,0.2815139192993431,0.4680374600967883,0.13878883131912179,proxy
|
||||||
|
haproxy-splice-auto,relay-close-1k,2,0.0805306368,7906.06,7.11,11.44,0,0,0,10.01,5.713065,99.44041570027669,126.48311241960552,36.57421875,0.19340294257237778,0.9515209125475285,0.25878293601003766,0.41857014322609243,0.12738238467536864,proxy
|
||||||
|
3proxy-devel-s0,relay-close-1k,2,0.0541065216,5313.72,11.53,21.01,0,0,0,9.99,6.8551709999999995,147.70862668059593,187.5704093128051,10.9296875,0.15190172454523979,0.9523355576739753,0.1817604067365745,0.31489499418404165,0.09126042007157625,proxy
|
||||||
|
3proxy-devel-s1,relay-close-1k,2,0.048150609920000004,4731.1,12.9,21.43,0,0,0,10.03,7.013556,166.64378734415828,211.61230431663785,11.65625,0.141643059490085,0.9525166191832859,0.1682005712472231,0.2882596787897501,0.08175202513585367,proxy
|
||||||
|
304
bench/report.py
Normal file
304
bench/report.py
Normal file
@ -0,0 +1,304 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Markdown tables from a bench.py CSV: throughput, the proxy's CPU per unit
|
||||||
|
of work, and its peak memory, a scenario per row and a proxy per column, each
|
||||||
|
cell the median of the repetitions.
|
||||||
|
|
||||||
|
Proxies given with --splice (those using splice()) form a group of their own
|
||||||
|
after the others, the two separated by a ‖ column. The best proxy of each
|
||||||
|
group in each row is in bold, and so is any other of the group whose
|
||||||
|
repetitions overlap the best one's (the range of the repetitions stands for
|
||||||
|
the error): the measurement cannot tell them apart. "direct", no proxy, comes
|
||||||
|
first and is not ranked.
|
||||||
|
A value marked ‡ was limited by the client or the origin rather than by the
|
||||||
|
proxy (most of its repetitions were), so the proxy can do at least that much.
|
||||||
|
|
||||||
|
bench/report.py bench/results/20261011-155353.csv > tables.md
|
||||||
|
|
||||||
|
Several CSVs make one set of tables: a proxy is taken from the first file it
|
||||||
|
appears in, so a later run can add proxies, and a proxy it repeats (run again
|
||||||
|
to see how much the conditions moved between the runs) is left out.
|
||||||
|
|
||||||
|
--label old=new renames a column, e.g. --label 3proxy-devel-s="devel, splice".
|
||||||
|
|
||||||
|
--machine NAME=a.csv,b.csv, given once per machine, makes a single table of
|
||||||
|
throughput instead: each cell the machines' medians and their average. The
|
||||||
|
best average of each group (no splice, splice) is in bold, and so is any other
|
||||||
|
of the group whose range (the average of its slowest runs to that of its
|
||||||
|
fastest) reaches the best one's; * marks the best of the row, both groups
|
||||||
|
together, in the same way. --split puts the splice group in a table of its own
|
||||||
|
(* still compares across both), --prefix connect- takes only the scenarios so
|
||||||
|
named.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import csv
|
||||||
|
import statistics
|
||||||
|
|
||||||
|
STREAM = ("stream1", "stream1-down", "stream16", "connect-stream1-down", "connect-stream16",
|
||||||
|
"socks-stream1-down", "socks-stream16", "relay-stream1-down", "relay-stream16")
|
||||||
|
# connect-ka-1m etc. are bulk too when present
|
||||||
|
|
||||||
|
|
||||||
|
def values(rows, key):
|
||||||
|
xs = []
|
||||||
|
for r in rows:
|
||||||
|
try:
|
||||||
|
x = float(r[key])
|
||||||
|
except (KeyError, ValueError):
|
||||||
|
continue
|
||||||
|
if x == x:
|
||||||
|
xs.append(x)
|
||||||
|
return xs
|
||||||
|
|
||||||
|
|
||||||
|
def median(rows, key):
|
||||||
|
xs = values(rows, key)
|
||||||
|
return statistics.median(xs) if xs else None
|
||||||
|
|
||||||
|
|
||||||
|
def winners(by, scenario, proxies, key, higher):
|
||||||
|
"""Proxies tied for best: the best median, and those whose range of
|
||||||
|
repetitions overlaps the best one's."""
|
||||||
|
ranges = {}
|
||||||
|
for p in proxies:
|
||||||
|
if p == "direct":
|
||||||
|
continue
|
||||||
|
xs = values(by.get((scenario, p), []), key)
|
||||||
|
if xs:
|
||||||
|
ranges[p] = (min(xs), statistics.median(xs), max(xs))
|
||||||
|
if not ranges:
|
||||||
|
return set()
|
||||||
|
if higher:
|
||||||
|
best = max(ranges, key=lambda p: ranges[p][1])
|
||||||
|
return {p for p, r in ranges.items() if r[2] >= ranges[best][0]}
|
||||||
|
best = min(ranges, key=lambda p: ranges[p][1])
|
||||||
|
return {p for p, r in ranges.items() if r[0] <= ranges[best][2]}
|
||||||
|
|
||||||
|
|
||||||
|
def fmt(x, digits):
|
||||||
|
if x is None:
|
||||||
|
return "–"
|
||||||
|
return f"{x:,.{digits}f}"
|
||||||
|
|
||||||
|
|
||||||
|
def table(title, scenarios, groups, labels, cell, best):
|
||||||
|
"""groups: lists of proxies, each ranked on its own, shown in order with
|
||||||
|
a separator column between them."""
|
||||||
|
head, rule = [], []
|
||||||
|
for i, g in enumerate(groups):
|
||||||
|
if i:
|
||||||
|
head.append("‖")
|
||||||
|
rule.append(":-:")
|
||||||
|
head += [labels.get(p, p) for p in g]
|
||||||
|
rule += ["---:"] * len(g)
|
||||||
|
out = [f"**{title}**", "", "| scenario | " + " | ".join(head) + " |",
|
||||||
|
"|---|" + "|".join(rule) + "|"]
|
||||||
|
for s in scenarios:
|
||||||
|
cells = []
|
||||||
|
for i, g in enumerate(groups):
|
||||||
|
if i:
|
||||||
|
cells.append("‖")
|
||||||
|
win = best(s, g)
|
||||||
|
cells += [f"**{cell(s, p)}**" if p in win else cell(s, p) for p in g]
|
||||||
|
out.append(f"| {s} | " + " | ".join(cells) + " |")
|
||||||
|
return "\n".join(out) + "\n"
|
||||||
|
|
||||||
|
|
||||||
|
def load(paths):
|
||||||
|
"""Rows of several CSVs, a proxy taken from the first file it is in."""
|
||||||
|
rows, seen = [], set()
|
||||||
|
for path in paths:
|
||||||
|
new = list(csv.DictReader(open(path)))
|
||||||
|
rows += [r for r in new if r["proxy"] not in seen]
|
||||||
|
seen |= {r["proxy"] for r in new}
|
||||||
|
return rows
|
||||||
|
|
||||||
|
|
||||||
|
# In the combined table, the bulk scenarios in Gbit/s, the others in
|
||||||
|
# thousands of requests per second.
|
||||||
|
BULK = STREAM + ("http-ka-1m",)
|
||||||
|
|
||||||
|
|
||||||
|
def combined(machines, labels, splice, prefix=None, split=False):
|
||||||
|
"""One throughput table for several machines: each cell their medians
|
||||||
|
and their average. Bold: the best of its group; *: the best of the row.
|
||||||
|
split puts the proxies using splice() in a table of their own, * still
|
||||||
|
comparing across both."""
|
||||||
|
data, proxies, scenarios = {}, [], []
|
||||||
|
for name, paths in machines:
|
||||||
|
by = {}
|
||||||
|
for r in load(paths):
|
||||||
|
if prefix and not r["scenario"].startswith(prefix):
|
||||||
|
continue
|
||||||
|
by.setdefault((r["scenario"], r["proxy"]), []).append(r)
|
||||||
|
if r["proxy"] not in proxies:
|
||||||
|
proxies.append(r["proxy"])
|
||||||
|
if r["scenario"] not in scenarios:
|
||||||
|
scenarios.append(r["scenario"])
|
||||||
|
data[name] = by
|
||||||
|
|
||||||
|
def runs(name, s, p):
|
||||||
|
sel = data[name].get((s, p), [])
|
||||||
|
if s in BULK:
|
||||||
|
return values(sel, "gbit")
|
||||||
|
return [x / 1000 for x in values(sel, "rate")]
|
||||||
|
|
||||||
|
def value(name, s, p):
|
||||||
|
xs = runs(name, s, p)
|
||||||
|
return statistics.median(xs) if xs else None
|
||||||
|
|
||||||
|
def average(s, p):
|
||||||
|
xs = [value(n, s, p) for n, _ in machines]
|
||||||
|
return sum(xs) / len(xs) if xs and None not in xs else None
|
||||||
|
|
||||||
|
def spread(s, p):
|
||||||
|
"""The range of the average: of the slowest runs to of the fastest."""
|
||||||
|
lows, highs = [], []
|
||||||
|
for n, _ in machines:
|
||||||
|
xs = runs(n, s, p)
|
||||||
|
if not xs:
|
||||||
|
return None
|
||||||
|
lows.append(min(xs))
|
||||||
|
highs.append(max(xs))
|
||||||
|
return sum(lows) / len(lows), sum(highs) / len(highs)
|
||||||
|
|
||||||
|
def leaders(s, ps):
|
||||||
|
"""The best average, and those whose range reaches the best one's:
|
||||||
|
the runs cannot tell them apart."""
|
||||||
|
known = {p: average(s, p) for p in ps if p != "direct"}
|
||||||
|
known = {p: a for p, a in known.items() if a is not None}
|
||||||
|
if not known:
|
||||||
|
return set()
|
||||||
|
floor = spread(s, max(known, key=known.get))[0]
|
||||||
|
return {p for p in known if spread(s, p)[1] >= floor}
|
||||||
|
|
||||||
|
plain = [p for p in proxies if p != "direct" and p not in splice]
|
||||||
|
spliced = [p for p in proxies if p in splice]
|
||||||
|
direct = [p for p in proxies if p == "direct"]
|
||||||
|
names = " / ".join(n for n, _ in machines) + " / average"
|
||||||
|
|
||||||
|
def render(tables):
|
||||||
|
"""tables: lists of groups, each table printed on its own; bold for
|
||||||
|
the best of a group, * for the best of the row over all of them."""
|
||||||
|
everyone = [p for t in tables for g in t for p in g]
|
||||||
|
for t in tables:
|
||||||
|
head, rule = [], []
|
||||||
|
for i, g in enumerate(t):
|
||||||
|
if i:
|
||||||
|
head.append("‖")
|
||||||
|
rule.append(":-:")
|
||||||
|
head += [labels.get(p, p) for p in g]
|
||||||
|
rule += ["---:"] * len(g)
|
||||||
|
out = [f"| scenario ({names}) | " + " | ".join(head) + " |",
|
||||||
|
"|---|" + "|".join(rule) + "|"]
|
||||||
|
for s in scenarios:
|
||||||
|
unit = "Gbit/s" if s in BULK else "k req/s"
|
||||||
|
overall = leaders(s, everyone)
|
||||||
|
cells = []
|
||||||
|
for i, g in enumerate(t):
|
||||||
|
if i:
|
||||||
|
cells.append("‖")
|
||||||
|
best = leaders(s, g)
|
||||||
|
for p in g:
|
||||||
|
vals = [value(n, s, p) for n, _ in machines] + [average(s, p)]
|
||||||
|
if all(v is None for v in vals):
|
||||||
|
cells.append("–")
|
||||||
|
continue
|
||||||
|
text = " / ".join(fmt(v, 1) for v in vals)
|
||||||
|
if p in best:
|
||||||
|
text = f"**{text}**"
|
||||||
|
if p in overall:
|
||||||
|
text += " *"
|
||||||
|
cells.append(text)
|
||||||
|
name = s[len(prefix):] if prefix else s
|
||||||
|
out.append(f"| {name}, {unit} | " + " | ".join(cells) + " |")
|
||||||
|
print("\n".join(out))
|
||||||
|
print()
|
||||||
|
|
||||||
|
if split and spliced:
|
||||||
|
render([[g for g in (direct, plain) if g], [spliced]])
|
||||||
|
else:
|
||||||
|
render([[g for g in (direct, plain, spliced) if g]])
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
ap = argparse.ArgumentParser()
|
||||||
|
ap.add_argument("csv", nargs="*")
|
||||||
|
ap.add_argument("--split", action="store_true",
|
||||||
|
help="the proxies using splice() in a table of their own")
|
||||||
|
ap.add_argument("--prefix", help="only the scenarios named so, e.g. connect- "
|
||||||
|
"(the prefix is left out of the rows)")
|
||||||
|
ap.add_argument("--machine", action="append", default=[],
|
||||||
|
help="NAME=a.csv[,b.csv]: one throughput table for all the "
|
||||||
|
"machines given, instead of the tables for one")
|
||||||
|
ap.add_argument("--label", action="append", default=[], help="old=new")
|
||||||
|
ap.add_argument("--title", default="")
|
||||||
|
ap.add_argument("--splice", action="append", default=[],
|
||||||
|
help="a proxy (as named in the CSV) using splice(); repeat")
|
||||||
|
args = ap.parse_args()
|
||||||
|
labels = dict(l.split("=", 1) for l in args.label)
|
||||||
|
|
||||||
|
if args.machine:
|
||||||
|
combined([(m.split("=", 1)[0], m.split("=", 1)[1].split(","))
|
||||||
|
for m in args.machine], labels, args.splice, args.prefix, args.split)
|
||||||
|
return
|
||||||
|
rows = load(args.csv)
|
||||||
|
proxies, scenarios = [], []
|
||||||
|
for r in rows:
|
||||||
|
if r["proxy"] not in proxies:
|
||||||
|
proxies.append(r["proxy"])
|
||||||
|
if r["scenario"] not in scenarios:
|
||||||
|
scenarios.append(r["scenario"])
|
||||||
|
by = {}
|
||||||
|
for r in rows:
|
||||||
|
by.setdefault((r["scenario"], r["proxy"]), []).append(r)
|
||||||
|
|
||||||
|
def limited(s, p):
|
||||||
|
if p == "direct":
|
||||||
|
return ""
|
||||||
|
bounds = [r.get("bound", "") for r in by.get((s, p), [])]
|
||||||
|
other = sum(b in ("client", "origin") for b in bounds)
|
||||||
|
return " ‡" if bounds and other * 2 > len(bounds) else ""
|
||||||
|
|
||||||
|
def throughput(s, p):
|
||||||
|
sel = by.get((s, p), [])
|
||||||
|
g = median(sel, "gbit")
|
||||||
|
if s in STREAM:
|
||||||
|
return fmt(g, 1) + limited(s, p)
|
||||||
|
rate = median(sel, "rate")
|
||||||
|
return f"{fmt(g, 2)} ({fmt(rate / 1000 if rate else None, 1)}k/s)" + limited(s, p)
|
||||||
|
|
||||||
|
def cpu(s, p):
|
||||||
|
sel = by.get((s, p), [])
|
||||||
|
if p == "direct":
|
||||||
|
return "–"
|
||||||
|
if s in STREAM or s in ("http-ka-1m", "http-ka-50k-2000", "http-ka-2k-50k-2000"):
|
||||||
|
return fmt(median(sel, "cpu_s_per_gb"), 2) + " s/GB"
|
||||||
|
return fmt(median(sel, "cpu_us_per_req"), 0) + " µs/req"
|
||||||
|
|
||||||
|
def peak(s, p):
|
||||||
|
if p == "direct":
|
||||||
|
return "–"
|
||||||
|
return fmt(median(by.get((s, p), []), "peak_mb"), 0)
|
||||||
|
|
||||||
|
def cpukey(s):
|
||||||
|
return "cpu_s_per_gb" if s in STREAM or s in ("http-ka-1m", "http-ka-50k-2000", "http-ka-2k-50k-2000") \
|
||||||
|
else "cpu_us_per_req"
|
||||||
|
|
||||||
|
plain = [p for p in proxies if p != "direct" and p not in args.splice]
|
||||||
|
spliced = [p for p in proxies if p in args.splice]
|
||||||
|
groups = [g for g in ([p for p in proxies if p == "direct"], plain, spliced) if g]
|
||||||
|
|
||||||
|
prefix = f"{args.title}: " if args.title else ""
|
||||||
|
print(table(prefix + "throughput, Gbit/s (thousands of requests per second for HTTP)",
|
||||||
|
scenarios, groups, labels, throughput,
|
||||||
|
lambda s, g: winners(by, s, g, "gbit", True)))
|
||||||
|
print(table(prefix + "proxy CPU time per gigabyte or per request",
|
||||||
|
scenarios, groups, labels, cpu,
|
||||||
|
lambda s, g: winners(by, s, g, cpukey(s), False)))
|
||||||
|
print(table(prefix + "proxy peak memory, MB", scenarios, groups, labels, peak,
|
||||||
|
lambda s, g: winners(by, s, g, "peak_mb", False)))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@ -233,7 +233,7 @@ struct filter {
|
|||||||
<p><code>filter_open</code> must always be defined, if you want filter to be ever used. It's called then new service is created and is given "data" from struct filter and struct srvparam (parsed service configuration). If filter_open for some filter returns NULL, filter will not be used for this service. Non-NULL return value will be used as "fo" parameter for every call to filter_client.</p>
|
<p><code>filter_open</code> must always be defined, if you want filter to be ever used. It's called then new service is created and is given "data" from struct filter and struct srvparam (parsed service configuration). If filter_open for some filter returns NULL, filter will not be used for this service. Non-NULL return value will be used as "fo" parameter for every call to filter_client.</p>
|
||||||
<p><code>filter_client</code> is called upon client connect (before any data is sent/received). It's good place to filter client by IP (and is not good place to filter it by hostname, because this operation takes a long time, 3proxy will not be able to accept new connection). fo is a data pointer received from filter_open, param – newly created clientparam structure, fc is return parameter filter_open must initialize, it will be used as an argument to FILTER_BUFFER functions. PASS return value means this filter will be used for this client request. CONTINUE says to install filters. On different values client connection is closed and no client thread is created.</p>
|
<p><code>filter_client</code> is called upon client connect (before any data is sent/received). It's good place to filter client by IP (and is not good place to filter it by hostname, because this operation takes a long time, 3proxy will not be able to accept new connection). fo is a data pointer received from filter_open, param – newly created clientparam structure, fc is return parameter filter_open must initialize, it will be used as an argument to FILTER_BUFFER functions. PASS return value means this filter will be used for this client request. CONTINUE says to install filters. On different values client connection is closed and no client thread is created.</p>
|
||||||
<p><code>filter_request, filter_header_cli, filter_header_srv, filter_data_cli, filter_data_srv</code> are used to process request and data received from client and server.</p>
|
<p><code>filter_request, filter_header_cli, filter_header_srv, filter_data_cli, filter_data_srv</code> are used to process request and data received from client and server.</p>
|
||||||
<p><code>char ** buf_p</code> is a pointer to current buffer, <code>int * bufsize_p</code> is a pointer to it's size. In case you change some data and it doesn't fit to current buffer, you may allocate new buffer (with <code>pluginlink->myalloc</code>), copy data from old buffer, free old buffer (with <code>pluginlink->myfree</code>) and set new values for <code>*buf_p</code> and <code>*bufsize_p</code>.</p>
|
<p><code>char ** buf_p</code> is a pointer to current buffer, <code>int * bufsize_p</code> is a pointer to it's size. In case you change some data and it doesn't fit to current buffer, you may allocate new buffer (with <code>pluginlink->mallocfunc</code>), copy data from old buffer and set new values for <code>*buf_p</code> and <code>*bufsize_p</code>. Do not free the buffer you were given: it may not be heap memory, and 3proxy frees it itself when it was. A buffer you allocated and then replaced again within the same call is yours to free (with <code>pluginlink->freefunc</code>).</p>
|
||||||
<p><code>int offset</code> offset of the new data in the buffer, <code>int * length_p</code> length of all data in the buffer. You should filter only <code>(*length_p - *offset_p)</code> characters starting from <code>(*buf_p + *offset_p)</code>.</p>
|
<p><code>int offset</code> offset of the new data in the buffer, <code>int * length_p</code> length of all data in the buffer. You should filter only <code>(*length_p - *offset_p)</code> characters starting from <code>(*buf_p + *offset_p)</code>.</p>
|
||||||
<p><code>filter_clear</code> is called for each successfule filter_client and should be used to free allocated resources</p>
|
<p><code>filter_clear</code> is called for each successfule filter_client and should be used to free allocated resources</p>
|
||||||
<p><code>filter_close</code> is called for each successful filter_open for the same reason</p>
|
<p><code>filter_close</code> is called for each successful filter_open for the same reason</p>
|
||||||
|
|||||||
@ -34,7 +34,7 @@ Each connected client requires:
|
|||||||
<ul>
|
<ul>
|
||||||
<li>1 thread (process)
|
<li>1 thread (process)
|
||||||
<li>2 sockets (file descriptors). For FTP, 4 sockets are required.
|
<li>2 sockets (file descriptors). For FTP, 4 sockets are required.
|
||||||
<br>With splice() (Linux, -s), 2 more pipes (file descriptors) = 4 file descriptors, 6 for FTP.
|
<br>With splice() (Linux, -s), a pipe (2 file descriptors) for each spliced direction: up to 4 more file descriptors, 6 for FTP.
|
||||||
<br>Up to 128K (up to 256K with splice()) of kernel buffer memory. This is the theoretical maximum; actual numbers depend on connection quality and traffic amount.
|
<br>Up to 128K (up to 256K with splice()) of kernel buffer memory. This is the theoretical maximum; actual numbers depend on connection quality and traffic amount.
|
||||||
<br>1 additional socket (file descriptor) during name resolution for non-cached names
|
<br>1 additional socket (file descriptor) during name resolution for non-cached names
|
||||||
<br>1 additional socket during authentication or logging for RADIUS authentication or logging.
|
<br>1 additional socket during authentication or logging for RADIUS authentication or logging.
|
||||||
@ -664,15 +664,20 @@ include it, but a service uses it only when given the -s option:
|
|||||||
<pre>
|
<pre>
|
||||||
proxy -s
|
proxy -s
|
||||||
socks -s
|
socks -s
|
||||||
tcppm -s 8080 192.168.1.1 80
|
tcppm -s3 8080 192.168.1.1 80
|
||||||
</pre>
|
</pre>
|
||||||
-s0 turns it off explicitly. In builds without it (CMake option 3PROXY_USE_SPLICE=OFF,
|
-s alone splices both directions where it pays: an HTTP body of known length if at
|
||||||
|
least 16K of it is left to read, a stream (CONNECT, SOCKS, tcppm) once it carries
|
||||||
|
large reads, going back to copying when they turn small. -s1 always splices what the
|
||||||
|
server sends to the client (downloads), -s2 what the client sends to the server
|
||||||
|
(uploads), -s3 both; -s5, -s6 and -s7 (the same as -s) do it for those directions
|
||||||
|
only where it pays. -s0, the default, turns it off. In builds without it (CMake option 3PROXY_USE_SPLICE=OFF,
|
||||||
or -DWITHSPLICE removed from the Makefile) -s is accepted and ignored.
|
or -DWITHSPLICE removed from the Makefile) -s is accepted and ignored.
|
||||||
<p>splice() pays off when most of the traffic is large transfers: in the
|
<p>splice() pays off when most of the traffic is large transfers: in the
|
||||||
<a href="https://github.com/3proxy/3proxy/tree/master/bench">benchmarks</a> it moved
|
<a href="https://github.com/3proxy/3proxy/blob/devel/bench/RESULTS.md">benchmarks</a> it moved
|
||||||
1.4 to 1.7 times more data than the read/write path at about half the CPU per gigabyte.
|
1.3 to 2.1 times more data than the read/write path at 40-55% less CPU per gigabyte.
|
||||||
It does not help small requests and short connections, which go slower with it, and
|
It does not help small requests and short connections, which go slower with it, and
|
||||||
every spliced connection needs two more pipes (file descriptors) and more kernel
|
every spliced direction needs a pipe (two file descriptors) and more kernel
|
||||||
buffer memory. Data filters are not applied to spliced data.
|
buffer memory. Data filters are not applied to spliced data.
|
||||||
<p>TCP_NODELAY and splice() do not conflict and can be combined on high-speed connections.
|
<p>TCP_NODELAY and splice() do not conflict and can be combined on high-speed connections.
|
||||||
|
|
||||||
|
|||||||
@ -203,12 +203,17 @@ delay GRACE_DELAY milliseconds before polling if average polling size is below G
|
|||||||
view without ability to reset.
|
view without ability to reset.
|
||||||
.br
|
.br
|
||||||
(for TCP services, Linux) use splice() to pass data between the client and the
|
(for TCP services, Linux) use splice() to pass data between the client and the
|
||||||
server without copying it through 3proxy. It is off unless -s is given (-s0 turns
|
server without copying it through 3proxy. \fB-s\fR alone splices both directions where
|
||||||
it off explicitly). splice() suits large transfers: they go faster and use less
|
it pays: a body of known length if at least 16K of it is left to read, a stream
|
||||||
CPU. Small requests and short connections go slower with it, every connection
|
once it carries large reads, back to copying when they turn small. \fB-s1\fR always
|
||||||
needs two more pipes (file descriptors) and more kernel memory, and data filters
|
splices what the server sends to the client (downloads), \fB-s2\fR what the client
|
||||||
are not applied to spliced data. Available in builds with WITHSPLICE, the default
|
sends (uploads), \fB-s3\fR both; adding 4 (\fB-s5\fR, \fB-s6\fR, \fB-s7\fR, the last the same as
|
||||||
on Linux.
|
\fB-s\fR) splices those directions only where it pays. \fB-s0\fR, the default, turns it
|
||||||
|
off. splice() suits large transfers: they go faster and use less CPU; small
|
||||||
|
requests go slower with it. A spliced direction needs a pipe (two file
|
||||||
|
descriptors), made when first needed and kept for the connection, and more
|
||||||
|
kernel memory; data filters are not applied to spliced data. Available in builds
|
||||||
|
with WITHSPLICE, the default on Linux.
|
||||||
.br
|
.br
|
||||||
.B -C
|
.B -C
|
||||||
(for TCP services) a connection closed by any of the sides terminates the
|
(for TCP services) a connection closed by any of the sides terminates the
|
||||||
@ -1431,7 +1436,10 @@ as
|
|||||||
.br
|
.br
|
||||||
If Content-length (or another data length) is greater than the given value, no
|
If Content-length (or another data length) is greater than the given value, no
|
||||||
data filtering will be performed through filtering plugins to avoid data
|
data filtering will be performed through filtering plugins to avoid data
|
||||||
corruption and/or Content-Length changing. Default is 1MB (1048576).
|
corruption and/or Content-Length changing. A body up to this size is read
|
||||||
|
whole into memory and filtered at once. 0 removes the limit, but then a body
|
||||||
|
is only filtered whole if it fits in the connection's 16K buffer.
|
||||||
|
Default is 1MB (1048576).
|
||||||
|
|
||||||
.SH SSL/TLS SUPPORT
|
.SH SSL/TLS SUPPORT
|
||||||
SSL/TLS support is built into 3proxy (since 0.9.7) when compiled with OpenSSL
|
SSL/TLS support is built into 3proxy (since 0.9.7) when compiled with OpenSSL
|
||||||
|
|||||||
@ -558,7 +558,7 @@ int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int
|
|||||||
#ifndef NORADIUS
|
#ifndef NORADIUS
|
||||||
_3proxy_mutex_init(&rad_mutex);
|
_3proxy_mutex_init(&rad_mutex);
|
||||||
#endif
|
#endif
|
||||||
if(_3proxy_sem_init(conf.threadinit, 1, 1) || _3proxy_sem_init_timed(serviceexited, 0, 0x7fffffff)){
|
if(_3proxy_sem_init_timed(serviceexited, 0, 0x7fffffff)){
|
||||||
fprintf(stderr, "semaphore init failed\n");
|
fprintf(stderr, "semaphore init failed\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -581,7 +581,9 @@ int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int
|
|||||||
res = readconfig(fp);
|
res = readconfig(fp);
|
||||||
conf.version++;
|
conf.version++;
|
||||||
|
|
||||||
if(res) RETURN(res);
|
/* readconfig() names the failing line, which an exit status would cut
|
||||||
|
to 8 bits: a failed configuration exits with 1 */
|
||||||
|
if(res) RETURN(1);
|
||||||
fclose(fp); fp = NULL;
|
fclose(fp); fp = NULL;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
@ -614,6 +616,6 @@ int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int
|
|||||||
CLEARRETURN:
|
CLEARRETURN:
|
||||||
|
|
||||||
if(fp && fp != stdin) {fclose(fp); fp = NULL;}
|
if(fp && fp != stdin) {fclose(fp); fp = NULL;}
|
||||||
return 0;
|
return res;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,7 +47,7 @@ tcppm$(OBJSUFFICS): tcppm.c proxy.h structures.h proxymain.c
|
|||||||
$(CC) $(CFLAGS) $(DEFINEOPTION)WITHMAIN $(DEFINEOPTION)PORTMAP $(DEFINEOPTION)NOUDPMAIN tcppm.c
|
$(CC) $(CFLAGS) $(DEFINEOPTION)WITHMAIN $(DEFINEOPTION)PORTMAP $(DEFINEOPTION)NOUDPMAIN tcppm.c
|
||||||
|
|
||||||
udppm$(OBJSUFFICS): udppm.c proxy.h structures.h proxymain.c
|
udppm$(OBJSUFFICS): udppm.c proxy.h structures.h proxymain.c
|
||||||
$(CC) $(CFLAGS) $(DEFINEOPTION)WITHMAIN $(DEFINEOPTION)PORTMAP udppm.c
|
$(CC) $(CFLAGS) $(DEFINEOPTION)WITHMAIN $(DEFINEOPTION)PORTMAP $(DEFINEOPTION)NOTCPMAIN udppm.c
|
||||||
|
|
||||||
tlspr$(OBJSUFFICS): tlspr.c proxy.h structures.h proxymain.c
|
tlspr$(OBJSUFFICS): tlspr.c proxy.h structures.h proxymain.c
|
||||||
$(CC) $(CFLAGS) $(DEFINEOPTION)WITHMAIN $(DEFINEOPTION)PORTMAP $(DEFINEOPTION)NOUDPMAIN tlspr.c
|
$(CC) $(CFLAGS) $(DEFINEOPTION)WITHMAIN $(DEFINEOPTION)PORTMAP $(DEFINEOPTION)NOUDPMAIN tlspr.c
|
||||||
|
|||||||
@ -280,7 +280,7 @@ int ACLmatches(struct ace* acentry, struct clientparam * param){
|
|||||||
int dstdep = 0;
|
int dstdep = 0;
|
||||||
int preauth = (param->preauth == 1 && acentry->action <= REDIRECT);
|
int preauth = (param->preauth == 1 && acentry->action <= REDIRECT);
|
||||||
|
|
||||||
username = param->username?param->username:(unsigned char *)"-";
|
username = *param->username?param->username:(unsigned char *)"-";
|
||||||
if(acentry->src) {
|
if(acentry->src) {
|
||||||
for(ipentry = acentry->src; ipentry; ipentry = ipentry->next)
|
for(ipentry = acentry->src; ipentry; ipentry = ipentry->next)
|
||||||
if(IPInentry((struct sockaddr *)¶m->sincr, ipentry)) {
|
if(IPInentry((struct sockaddr *)¶m->sincr, ipentry)) {
|
||||||
@ -291,13 +291,13 @@ int ACLmatches(struct ace* acentry, struct clientparam * param){
|
|||||||
if(preauth && (acentry->dst || acentry->dstnames)) {
|
if(preauth && (acentry->dst || acentry->dstnames)) {
|
||||||
dstdep = 1;
|
dstdep = 1;
|
||||||
}
|
}
|
||||||
else if((acentry->dst && (!SAISNULL(¶m->req) || param->operation==BIND)) || (acentry->dstnames && param->hostname)) {
|
else if((acentry->dst && (!SAISNULL(¶m->req) || param->operation==BIND)) || (acentry->dstnames && *param->hostname)) {
|
||||||
for(ipentry = acentry->dst; ipentry; ipentry = ipentry->next)
|
for(ipentry = acentry->dst; ipentry; ipentry = ipentry->next)
|
||||||
if(IPInentry((struct sockaddr *)¶m->req, ipentry)) {
|
if(IPInentry((struct sockaddr *)¶m->req, ipentry)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(!ipentry) {
|
if(!ipentry) {
|
||||||
if(acentry->dstnames && param->hostname){
|
if(acentry->dstnames && *param->hostname){
|
||||||
for(i=0; param->hostname[i]; i++){
|
for(i=0; param->hostname[i]; i++){
|
||||||
param->hostname[i] = tolower(param->hostname[i]);
|
param->hostname[i] = tolower(param->hostname[i]);
|
||||||
}
|
}
|
||||||
|
|||||||
33
src/auth.c
33
src/auth.c
@ -83,8 +83,8 @@ int cacheauth(struct clientparam * param){
|
|||||||
|
|
||||||
|
|
||||||
if(
|
if(
|
||||||
((type & 2) && !param->username) ||
|
((type & 2) && !*param->username) ||
|
||||||
((type & 4) && !param->password) ||
|
((type & 4) && !*param->password) ||
|
||||||
(
|
(
|
||||||
(type & 1) && *SAFAMILY(¶m->sincr) != AF_INET
|
(type & 1) && *SAFAMILY(¶m->sincr) != AF_INET
|
||||||
#ifndef NOIPV6
|
#ifndef NOIPV6
|
||||||
@ -100,10 +100,7 @@ int cacheauth(struct clientparam * param){
|
|||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!(type&2) && *ac.username){
|
if(!(type&2) && *ac.username && PARAMSTR(param, username, ac.username)) return 4;
|
||||||
if(param->username) free(param->username);
|
|
||||||
param->username = (unsigned char *)strdup((char *)ac.username);
|
|
||||||
}
|
|
||||||
if((type & 32)){
|
if((type & 32)){
|
||||||
memset(¶m->sinsl, 0, sizeof(param->sinsl));
|
memset(¶m->sinsl, 0, sizeof(param->sinsl));
|
||||||
*(SAFAMILY(¶m->sinsl)) = ac.sinsl_family;
|
*(SAFAMILY(¶m->sinsl)) = ac.sinsl_family;
|
||||||
@ -125,13 +122,11 @@ int doauth(struct clientparam * param){
|
|||||||
if(authfuncs->authorize &&
|
if(authfuncs->authorize &&
|
||||||
(res = (*authfuncs->authorize)(param)))
|
(res = (*authfuncs->authorize)(param)))
|
||||||
return res;
|
return res;
|
||||||
if(param->srv->authcachetype && authfuncs->authenticate && authfuncs->authenticate != cacheauth && param->username && (!(param->srv->authcachetype&4) || (!param->pwtype && param->password))){
|
if(param->srv->authcachetype && authfuncs->authenticate && authfuncs->authenticate != cacheauth && *param->username && (!(param->srv->authcachetype&4) || (!param->pwtype && *param->password))){
|
||||||
struct authcache ac={.username=""};
|
struct authcache ac={.username=""};
|
||||||
|
|
||||||
if(param->username) {
|
|
||||||
strncpy((char *)ac.username, (char *)param->username, 64);
|
strncpy((char *)ac.username, (char *)param->username, 64);
|
||||||
ac.username[63] = 0;
|
ac.username[63] = 0;
|
||||||
}
|
|
||||||
if(*SAFAMILY(¶m->sincr) == AF_INET
|
if(*SAFAMILY(¶m->sincr) == AF_INET
|
||||||
#ifndef NOIPV6
|
#ifndef NOIPV6
|
||||||
|| *SAFAMILY(¶m->sincr) == AF_INET6
|
|| *SAFAMILY(¶m->sincr) == AF_INET6
|
||||||
@ -158,7 +153,7 @@ int doauth(struct clientparam * param){
|
|||||||
}
|
}
|
||||||
if(!res){
|
if(!res){
|
||||||
ret = (param->preauth == 2)? 0 : alwaysauth(param);
|
ret = (param->preauth == 2)? 0 : alwaysauth(param);
|
||||||
if (param->afterauthfilters){
|
if (param->nafterauthfilters){
|
||||||
FILTER_ACTION action;
|
FILTER_ACTION action;
|
||||||
|
|
||||||
action = handleafterauthflt(param);
|
action = handleafterauthflt(param);
|
||||||
@ -173,16 +168,18 @@ int doauth(struct clientparam * param){
|
|||||||
|
|
||||||
int ipauth(struct clientparam * param){
|
int ipauth(struct clientparam * param){
|
||||||
int res;
|
int res;
|
||||||
unsigned char *username;
|
unsigned char c;
|
||||||
username = param->username;
|
|
||||||
param->username = NULL;
|
/* the rules are matched as if no name had been given */
|
||||||
|
c = *param->username;
|
||||||
|
*param->username = 0;
|
||||||
res = checkACL(param);
|
res = checkACL(param);
|
||||||
param->username = username;
|
*param->username = c;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
int userauth(struct clientparam * param){
|
int userauth(struct clientparam * param){
|
||||||
return (param->username)? 0:4;
|
return (*param->username)? 0:4;
|
||||||
}
|
}
|
||||||
|
|
||||||
int dnsauth(struct clientparam * param){
|
int dnsauth(struct clientparam * param){
|
||||||
@ -221,7 +218,7 @@ int dnsauth(struct clientparam * param){
|
|||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
return param->username? 0:3;
|
return *param->username? 0:3;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ctmemcmp(const void *a, const void *b, size_t len){
|
static int ctmemcmp(const void *a, const void *b, size_t len){
|
||||||
@ -246,8 +243,8 @@ int strongauth(struct clientparam * param){
|
|||||||
unsigned char buf[256];
|
unsigned char buf[256];
|
||||||
char pass[256] = {0};
|
char pass[256] = {0};
|
||||||
|
|
||||||
if (!param->username) return 4;
|
if (!*param->username) return 4;
|
||||||
if (!param->pwtype && param->password) {
|
if (!param->pwtype && *param->password) {
|
||||||
if (pwl_table.ihashtable && hashresolv(&pwl_table, param->username, pass, NULL)) {
|
if (pwl_table.ihashtable && hashresolv(&pwl_table, param->username, pass, NULL)) {
|
||||||
switch(pass[0]){
|
switch(pass[0]){
|
||||||
case CL: {
|
case CL: {
|
||||||
|
|||||||
@ -401,7 +401,7 @@ int radsend(struct clientparam * param, int auth, int stop){
|
|||||||
total_length += (2+len);
|
total_length += (2+len);
|
||||||
|
|
||||||
/* Called-Station-ID */
|
/* Called-Station-ID */
|
||||||
if(param->hostname){
|
if(*param->hostname){
|
||||||
*ptr++ = PW_CALLED_STATION_ID;
|
*ptr++ = PW_CALLED_STATION_ID;
|
||||||
len = strlen((char *)param->hostname);
|
len = strlen((char *)param->hostname);
|
||||||
if(len > 253) len = 253;
|
if(len > 253) len = 253;
|
||||||
@ -443,7 +443,7 @@ int radsend(struct clientparam * param, int auth, int stop){
|
|||||||
|
|
||||||
|
|
||||||
/* Username */
|
/* Username */
|
||||||
if(param->username){
|
if(*param->username){
|
||||||
len = strlen((char *)param->username);
|
len = strlen((char *)param->username);
|
||||||
if(len>128)len=128;
|
if(len>128)len=128;
|
||||||
*ptr++ = PW_USER_NAME;
|
*ptr++ = PW_USER_NAME;
|
||||||
@ -502,7 +502,7 @@ int radsend(struct clientparam * param, int auth, int stop){
|
|||||||
total_length+=6;
|
total_length+=6;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(auth && param->password){
|
if(auth && *param->password){
|
||||||
len = strlen((char *)param->password);
|
len = strlen((char *)param->password);
|
||||||
if(len > 128) len = 128;
|
if(len > 128) len = 128;
|
||||||
*ptr++ = PW_PASSWORD;
|
*ptr++ = PW_PASSWORD;
|
||||||
|
|||||||
@ -12,12 +12,7 @@
|
|||||||
void * autochild(struct clientparam* param) {
|
void * autochild(struct clientparam* param) {
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
if(!param->clibuf){
|
len = sockfillbuf(param, CLIENT, 1, CONNECTION_S);
|
||||||
if(!(param->clibuf = malloc(SRVBUFSIZE))) return 0;
|
|
||||||
param->clibufsize = SRVBUFSIZE;
|
|
||||||
param->clioffset = param->cliinbuf = 0;
|
|
||||||
}
|
|
||||||
len = sockfillbuffcli(param, 1, CONNECTION_S);
|
|
||||||
if (len != 1){
|
if (len != 1){
|
||||||
param->res = 801;
|
param->res = 801;
|
||||||
dolog(param, (unsigned char *)"");
|
dolog(param, (unsigned char *)"");
|
||||||
|
|||||||
48
src/common.c
48
src/common.c
@ -561,9 +561,10 @@ int parsehostname(char *hostname, struct clientparam *param, uint16_t port){
|
|||||||
if(sp) *sp = ':';
|
if(sp) *sp = ':';
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if(hostname != (char *)param->hostname){
|
if(PARAMSTR(param, hostname, hostname + (se!=0))){
|
||||||
if(param->hostname) free(param->hostname);
|
if(se) *se = ']';
|
||||||
param->hostname = (unsigned char *)strdup(hostname + (se!=0));
|
if(sp) *sp = ':';
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
if(sp){
|
if(sp){
|
||||||
port = atoi(sp+1);
|
port = atoi(sp+1);
|
||||||
@ -576,6 +577,22 @@ int parsehostname(char *hostname, struct clientparam *param, uint16_t port){
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Copies a string into one of a connection's fixed fields. One too long for
|
||||||
|
it is refused rather than cut short, which could name another host or
|
||||||
|
another user; NULL empties it. The string may be part of the field. */
|
||||||
|
int paramstr(unsigned char *field, size_t size, const unsigned char *s){
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
if(!s){
|
||||||
|
*field = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
len = strlen((const char *)s);
|
||||||
|
if(len >= size) return 1;
|
||||||
|
memmove(field, s, len + 1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int parseusername(char *username, struct clientparam *param, int extpasswd){
|
int parseusername(char *username, struct clientparam *param, int extpasswd){
|
||||||
char *sb = NULL, *se = NULL, *sp = NULL;
|
char *sb = NULL, *se = NULL, *sp = NULL;
|
||||||
|
|
||||||
@ -584,13 +601,12 @@ int parseusername(char *username, struct clientparam *param, int extpasswd){
|
|||||||
*sb = 0;
|
*sb = 0;
|
||||||
*se = 0;
|
*se = 0;
|
||||||
if(sp) *sp = 0;
|
if(sp) *sp = 0;
|
||||||
if(*(sb+1)) {
|
if((*(sb+1) && PARAMSTR(param, password, sb+1)) ||
|
||||||
if(param->password) free(param->password);
|
(*username && PARAMSTR(param, username, username))){
|
||||||
param->password = (unsigned char *)strdup(sb+1);
|
*sb = ':';
|
||||||
}
|
*se = ':';
|
||||||
if(*username) {
|
if(sp) *sp = ':';
|
||||||
if(param->username) free(param->username);
|
return 1;
|
||||||
param->username = (unsigned char *)strdup(username);
|
|
||||||
}
|
}
|
||||||
username = se+1;
|
username = se+1;
|
||||||
}
|
}
|
||||||
@ -598,24 +614,22 @@ int parseusername(char *username, struct clientparam *param, int extpasswd){
|
|||||||
if(!sp) sp = strchr(username, ':');
|
if(!sp) sp = strchr(username, ':');
|
||||||
if(sp){
|
if(sp){
|
||||||
*sp = 0;
|
*sp = 0;
|
||||||
if(param->extpassword) free(param->extpassword);
|
if(PARAMSTR(param, extpassword, sp+1)) extpasswd = -1;
|
||||||
param->extpassword = (unsigned char *) strdup(sp+1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(param->extusername) free(param->extusername);
|
if(extpasswd < 0 || PARAMSTR(param, extusername, username)) extpasswd = -1;
|
||||||
param->extusername = (unsigned char *)strdup(username);
|
|
||||||
if(sb) *sb = ':';
|
if(sb) *sb = ':';
|
||||||
if(se) *se = ':';
|
if(se) *se = ':';
|
||||||
if(sp) *sp = ':';
|
if(sp) *sp = ':';
|
||||||
return 0;
|
return extpasswd < 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int parseconnusername(char *username, struct clientparam *param, int extpasswd, uint16_t port){
|
int parseconnusername(char *username, struct clientparam *param, int extpasswd, uint16_t port){
|
||||||
char *sb, *se;
|
char *sb, *se;
|
||||||
if(!username || !*username) return 1;
|
if(!username || !*username) return 1;
|
||||||
if ((sb=strchr(username, conf.delimchar)) == NULL){
|
if ((sb=strchr(username, conf.delimchar)) == NULL){
|
||||||
if(!param->hostname && param->remsock == INVALID_SOCKET) return 2;
|
if(!*param->hostname && param->remsock == INVALID_SOCKET) return 2;
|
||||||
if(param->hostname)parsehostname((char *)param->hostname, param, *SAPORT(¶m->req)? ntohs(*SAPORT(¶m->req)) : port);
|
if(*param->hostname)parsehostname((char *)param->hostname, param, *SAPORT(¶m->req)? ntohs(*SAPORT(¶m->req)) : port);
|
||||||
return parseusername(username, param, extpasswd);
|
return parseusername(username, param, extpasswd);
|
||||||
}
|
}
|
||||||
while ((se=strchr(sb+1, conf.delimchar)))sb=se;
|
while ((se=strchr(sb+1, conf.delimchar)))sb=se;
|
||||||
|
|||||||
51
src/conf.c
51
src/conf.c
@ -42,13 +42,14 @@ int runningservices = 0;
|
|||||||
_3proxy_mutex_t runningservices_mutex;
|
_3proxy_mutex_t runningservices_mutex;
|
||||||
_3proxy_sem_t serviceexited;
|
_3proxy_sem_t serviceexited;
|
||||||
|
|
||||||
int haveerror = 0;
|
|
||||||
int linenum = 0;
|
int linenum = 0;
|
||||||
|
|
||||||
struct counter_header cheader = {"3CF", (time_t)0};
|
struct counter_header cheader = {"3CF", (time_t)0};
|
||||||
struct counter_record crecord;
|
struct counter_record crecord;
|
||||||
|
|
||||||
int mainfunc (int argc, char** argv);
|
int mainprepare(int argc, char** argv, void **service);
|
||||||
|
int mainrun(void *service);
|
||||||
|
void maindrop(void *service);
|
||||||
|
|
||||||
struct proxydef childdef = {NULL, 0, 0, S_NOSERVICE, ""};
|
struct proxydef childdef = {NULL, 0, 0, S_NOSERVICE, ""};
|
||||||
|
|
||||||
@ -78,15 +79,8 @@ DWORD WINAPI startsrv(LPVOID data) {
|
|||||||
#else
|
#else
|
||||||
void * startsrv(void * data) {
|
void * startsrv(void * data) {
|
||||||
#endif
|
#endif
|
||||||
struct child *d = (struct child *)data;
|
/* counted by start_proxy_thread() before the thread is created */
|
||||||
|
mainrun(data);
|
||||||
/* counted here rather than where the service is listed, so every way
|
|
||||||
out of it is counted too; start_proxy_thread() waits for the service
|
|
||||||
to start, so it is counted by the time that returns */
|
|
||||||
_3proxy_mutex_lock(&runningservices_mutex);
|
|
||||||
runningservices++;
|
|
||||||
_3proxy_mutex_unlock(&runningservices_mutex);
|
|
||||||
mainfunc(d->argc, (char **)d->argv);
|
|
||||||
_3proxy_mutex_lock(&runningservices_mutex);
|
_3proxy_mutex_lock(&runningservices_mutex);
|
||||||
runningservices--;
|
runningservices--;
|
||||||
_3proxy_mutex_unlock(&runningservices_mutex);
|
_3proxy_mutex_unlock(&runningservices_mutex);
|
||||||
@ -156,36 +150,45 @@ unsigned char * dologname (unsigned char *buf, unsigned char *name, const unsign
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The service is set up here, in the thread reading the configuration, so
|
||||||
|
an error in its options stops the configuration; its own thread then
|
||||||
|
listens and serves. */
|
||||||
int start_proxy_thread(struct child * chp){
|
int start_proxy_thread(struct child * chp){
|
||||||
pthread_t thread;
|
pthread_t thread;
|
||||||
|
void *service;
|
||||||
|
int res;
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
HANDLE h;
|
HANDLE h;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_3proxy_sem_lock(conf.threadinit);
|
if((res = mainprepare(chp->argc, (char **)chp->argv, &service))) {
|
||||||
|
fprintf(stderr, "Service not started on line: %d%s\n", linenum, res == 2? ": insufficient memory": res == 3? ": too many filters":"");
|
||||||
|
return(40);
|
||||||
|
}
|
||||||
|
_3proxy_mutex_lock(&runningservices_mutex);
|
||||||
|
runningservices++;
|
||||||
|
_3proxy_mutex_unlock(&runningservices_mutex);
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#ifndef _WINCE
|
#ifndef _WINCE
|
||||||
h = (HANDLE)_beginthreadex((LPSECURITY_ATTRIBUTES )NULL, 16384+conf.stacksize, (void *)startsrv, (void *) chp, (DWORD)0, &thread);
|
h = (HANDLE)_beginthreadex((LPSECURITY_ATTRIBUTES )NULL, 16384+conf.stacksize, (void *)startsrv, service, (DWORD)0, &thread);
|
||||||
#else
|
#else
|
||||||
h = (HANDLE)CreateThread((LPSECURITY_ATTRIBUTES )NULL, 16384+conf.stacksize, (void *)startsrv, (void *) chp, (DWORD)0, &thread);
|
h = (HANDLE)CreateThread((LPSECURITY_ATTRIBUTES )NULL, 16384+conf.stacksize, (void *)startsrv, service, (DWORD)0, &thread);
|
||||||
#endif
|
#endif
|
||||||
if(h)CloseHandle(h);
|
if(h)CloseHandle(h);
|
||||||
|
else {
|
||||||
#else
|
#else
|
||||||
pthread_attr_init(&pa);
|
pthread_attr_init(&pa);
|
||||||
pthread_attr_setstacksize(&pa,threadstacksize(conf.stacksize));
|
pthread_attr_setstacksize(&pa,threadstacksize(conf.stacksize));
|
||||||
pthread_attr_setdetachstate(&pa,PTHREAD_CREATE_DETACHED);
|
pthread_attr_setdetachstate(&pa,PTHREAD_CREATE_DETACHED);
|
||||||
if(pthread_create(&thread, &pa, startsrv, (void *)chp)){
|
res = pthread_create(&thread, &pa, startsrv, service);
|
||||||
pthread_attr_destroy(&pa);
|
|
||||||
fprintf(stderr, "Failed to create service thread on line %d, try to set larger stacksize\n", linenum);
|
|
||||||
_3proxy_sem_unlock(conf.threadinit);
|
|
||||||
return(40);
|
|
||||||
}
|
|
||||||
pthread_attr_destroy(&pa);
|
pthread_attr_destroy(&pa);
|
||||||
|
if(res){
|
||||||
#endif
|
#endif
|
||||||
_3proxy_sem_lock(conf.threadinit);
|
_3proxy_mutex_lock(&runningservices_mutex);
|
||||||
_3proxy_sem_unlock(conf.threadinit);
|
runningservices--;
|
||||||
if(haveerror) {
|
_3proxy_mutex_unlock(&runningservices_mutex);
|
||||||
fprintf(stderr, "Service not started on line: %d%s\n", linenum, haveerror == 2? ": insufficient memory":"");
|
maindrop(service);
|
||||||
|
fprintf(stderr, "Failed to create service thread on line %d, try to set larger stacksize\n", linenum);
|
||||||
return(40);
|
return(40);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@ -41,7 +41,7 @@ int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) {
|
|||||||
*innbuf = i;
|
*innbuf = i;
|
||||||
return 702;
|
return 702;
|
||||||
}
|
}
|
||||||
sprintf(buf, "USER %.128s\r\n", param->extusername?param->extusername:(unsigned char *)"anonymous");
|
sprintf(buf, "USER %.128s\r\n", *param->extusername?param->extusername:(unsigned char *)"anonymous");
|
||||||
if((int)socksend(param, param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
|
if((int)socksend(param, param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
|
||||||
return 703;
|
return 703;
|
||||||
}
|
}
|
||||||
@ -53,10 +53,7 @@ int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) {
|
|||||||
res = atoi(buf)/100;
|
res = atoi(buf)/100;
|
||||||
if(res == 3){
|
if(res == 3){
|
||||||
sprintf(buf, "PASS %.128s\r\n",
|
sprintf(buf, "PASS %.128s\r\n",
|
||||||
param->extusername?
|
*param->extusername? param->extpassword : (unsigned char *)"3proxy@");
|
||||||
(param->extpassword?
|
|
||||||
param->extpassword:(unsigned char *)"")
|
|
||||||
:(unsigned char *)"3proxy@");
|
|
||||||
res = (int)strlen(buf);
|
res = (int)strlen(buf);
|
||||||
if((int)socksend(param, param->remsock, (unsigned char *)buf, res, conf.timeouts[STRING_S]) != (int)strlen(buf)){
|
if((int)socksend(param, param->remsock, (unsigned char *)buf, res, conf.timeouts[STRING_S]) != (int)strlen(buf)){
|
||||||
return 705;
|
return 705;
|
||||||
|
|||||||
@ -28,7 +28,7 @@ void * ftpprchild(struct clientparam* param) {
|
|||||||
#endif
|
#endif
|
||||||
struct pollfd fds;
|
struct pollfd fds;
|
||||||
|
|
||||||
if(!(buf = malloc(BUFSIZE))) RETURN(876);
|
buf = param->tmpbuf; /* a filter may replace it with one of its own */
|
||||||
param->ctrlsock = param->clisock;
|
param->ctrlsock = param->clisock;
|
||||||
param->operation = CONNECT;
|
param->operation = CONNECT;
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
@ -73,11 +73,11 @@ void * ftpprchild(struct clientparam* param) {
|
|||||||
/* The user name carries the server to log in to, and it arrives
|
/* The user name carries the server to log in to, and it arrives
|
||||||
with USER. Without it there is nothing to log in to, and what
|
with USER. Without it there is nothing to log in to, and what
|
||||||
follows would read the name and the host as if there were. */
|
follows would read the name and the host as if there were. */
|
||||||
if(!param->hostname || !param->extusername){
|
if(!*param->hostname || !*param->extusername){
|
||||||
socksend(param, param->ctrlsock, (unsigned char *)"503 Login with USER first\r\n", 27, conf.timeouts[STRING_S]);
|
socksend(param, param->ctrlsock, (unsigned char *)"503 Login with USER first\r\n", 27, conf.timeouts[STRING_S]);
|
||||||
RETURN(805);
|
RETURN(805);
|
||||||
}
|
}
|
||||||
param->extpassword = (unsigned char *)strdup((char *)buf+5);
|
if(PARAMSTR(param, extpassword, buf+5)){RETURN(806);}
|
||||||
inbuf = BUFSIZE;
|
inbuf = BUFSIZE;
|
||||||
res = ftplogin(param, (char *)buf, &inbuf);
|
res = ftplogin(param, (char *)buf, &inbuf);
|
||||||
param->res = res;
|
param->res = res;
|
||||||
@ -341,7 +341,7 @@ CLEANRET:
|
|||||||
dolog(param, (unsigned char *)((req && (param->res > 802))? req:NULL));
|
dolog(param, (unsigned char *)((req && (param->res > 802))? req:NULL));
|
||||||
}
|
}
|
||||||
if(req) free(req);
|
if(req) free(req);
|
||||||
if(buf) free(buf);
|
if(buf != param->tmpbuf) free(buf);
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -31,13 +31,13 @@ void param2hash_search(const struct hashtable *ht, void *index, uint8_t *hash){
|
|||||||
int oplen = 0, acllen = 0, ulen = 0, plen = 0, hlen = 0, a1len = 0, a2len = 0, a3len = 0, p1len=0, p2len = 0;
|
int oplen = 0, acllen = 0, ulen = 0, plen = 0, hlen = 0, a1len = 0, a2len = 0, a3len = 0, p1len=0, p2len = 0;
|
||||||
|
|
||||||
|
|
||||||
if((type & 2) && param->username) ulen = strlen((const char *)param->username) + 1;
|
if((type & 2) && *param->username) ulen = strlen((const char *)param->username) + 1;
|
||||||
if((type & 4) && param->password) plen = strlen((const char *)param->password) + 1;
|
if((type & 4) && *param->password) plen = strlen((const char *)param->password) + 1;
|
||||||
if((type & 1) && !(type & 8)) a1len = SAADDRLEN(¶m->sincr);
|
if((type & 1) && !(type & 8)) a1len = SAADDRLEN(¶m->sincr);
|
||||||
if((type & 16)) acllen = sizeof(param->srv->acl);
|
if((type & 16)) acllen = sizeof(param->srv->acl);
|
||||||
if((type & 64)) a2len = SAADDRLEN(¶m->req);
|
if((type & 64)) a2len = SAADDRLEN(¶m->req);
|
||||||
if((type & 128)) p1len = 2 ;
|
if((type & 128)) p1len = 2 ;
|
||||||
if((type & 256) && param->hostname) hlen = strlen((const char *)param->hostname) + 1;
|
if((type & 256) && *param->hostname) hlen = strlen((const char *)param->hostname) + 1;
|
||||||
if((type & 512)) oplen = sizeof(param->operation);
|
if((type & 512)) oplen = sizeof(param->operation);
|
||||||
if((type & 1024)) a3len = SAADDRLEN(¶m->srv->intsa);
|
if((type & 1024)) a3len = SAADDRLEN(¶m->srv->intsa);
|
||||||
if((type & 2048)) p2len = 2;
|
if((type & 2048)) p2len = 2;
|
||||||
@ -45,13 +45,13 @@ void param2hash_search(const struct hashtable *ht, void *index, uint8_t *hash){
|
|||||||
memset(hash, 0, ht->hash_size);
|
memset(hash, 0, ht->hash_size);
|
||||||
if(ulen + plen + a1len + acllen + a2len + p1len + hlen + oplen + a3len + p2len <= ht->hash_size){
|
if(ulen + plen + a1len + acllen + a2len + p1len + hlen + oplen + a3len + p2len <= ht->hash_size){
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
if((type & 2) && param->username){ memcpy(hash + offset, param->username, ulen); offset += ulen; }
|
if((type & 2) && *param->username){ memcpy(hash + offset, param->username, ulen); offset += ulen; }
|
||||||
if((type & 4) && param->password){ memcpy(hash + offset, param->password, plen); offset += plen; }
|
if((type & 4) && *param->password){ memcpy(hash + offset, param->password, plen); offset += plen; }
|
||||||
if((type & 1) && !(type & 8)){ memcpy(hash + offset, SAADDR(¶m->sincr), a1len); offset += a1len; }
|
if((type & 1) && !(type & 8)){ memcpy(hash + offset, SAADDR(¶m->sincr), a1len); offset += a1len; }
|
||||||
if((type & 16)){ memcpy(hash + offset, ¶m->srv->acl, acllen); offset += acllen; }
|
if((type & 16)){ memcpy(hash + offset, ¶m->srv->acl, acllen); offset += acllen; }
|
||||||
if((type & 64)){ memcpy(hash + offset, SAADDR(¶m->req), a2len); offset += a2len; }
|
if((type & 64)){ memcpy(hash + offset, SAADDR(¶m->req), a2len); offset += a2len; }
|
||||||
if((type & 128)){ memcpy(hash + offset, SAPORT(¶m->req), p1len); offset += 2; }
|
if((type & 128)){ memcpy(hash + offset, SAPORT(¶m->req), p1len); offset += 2; }
|
||||||
if((type & 256) && param->hostname){ memcpy(hash + offset, param->hostname, hlen); offset += hlen; }
|
if((type & 256) && *param->hostname){ memcpy(hash + offset, param->hostname, hlen); offset += hlen; }
|
||||||
if((type & 512)){ memcpy(hash + offset, ¶m->operation, oplen); offset += oplen; }
|
if((type & 512)){ memcpy(hash + offset, ¶m->operation, oplen); offset += oplen; }
|
||||||
if((type & 1024)){ memcpy(hash + offset, SAADDR(¶m->srv->intsa), a3len); offset += a3len; }
|
if((type & 1024)){ memcpy(hash + offset, SAADDR(¶m->srv->intsa), a3len); offset += a3len; }
|
||||||
if((type & 2048)){ memcpy(hash + offset, SAPORT(¶m->srv->intsa), p2len); offset += 2; }
|
if((type & 2048)){ memcpy(hash + offset, SAPORT(¶m->srv->intsa), p2len); offset += 2; }
|
||||||
@ -60,13 +60,13 @@ void param2hash_search(const struct hashtable *ht, void *index, uint8_t *hash){
|
|||||||
mdh_ctx *bctx = mdh_init(MDH_BLAKE2, ht->hash_size);
|
mdh_ctx *bctx = mdh_init(MDH_BLAKE2, ht->hash_size);
|
||||||
unsigned int blen = ht->hash_size;
|
unsigned int blen = ht->hash_size;
|
||||||
if(!bctx) { memcpy(param->hash, hash, ht->hash_size); return; }
|
if(!bctx) { memcpy(param->hash, hash, ht->hash_size); return; }
|
||||||
if((type & 2) && param->username)mdh_update(bctx, param->username, ulen);
|
if((type & 2) && *param->username)mdh_update(bctx, param->username, ulen);
|
||||||
if((type & 4) && param->password)mdh_update(bctx, param->password, plen);
|
if((type & 4) && *param->password)mdh_update(bctx, param->password, plen);
|
||||||
if((type & 1) && !(type & 8))mdh_update(bctx, SAADDR(¶m->sincr), a1len);
|
if((type & 1) && !(type & 8))mdh_update(bctx, SAADDR(¶m->sincr), a1len);
|
||||||
if((type & 16))mdh_update(bctx, ¶m->srv->acl, acllen);
|
if((type & 16))mdh_update(bctx, ¶m->srv->acl, acllen);
|
||||||
if((type & 64))mdh_update(bctx, SAADDR(¶m->req), a2len);
|
if((type & 64))mdh_update(bctx, SAADDR(¶m->req), a2len);
|
||||||
if((type & 128))mdh_update(bctx, SAPORT(¶m->req), 2);
|
if((type & 128))mdh_update(bctx, SAPORT(¶m->req), 2);
|
||||||
if((type & 256) && param->hostname)mdh_update(bctx, param->hostname, hlen);
|
if((type & 256) && *param->hostname)mdh_update(bctx, param->hostname, hlen);
|
||||||
if((type & 512))mdh_update(bctx, ¶m->operation, sizeof(param->operation));
|
if((type & 512))mdh_update(bctx, ¶m->operation, sizeof(param->operation));
|
||||||
if((type & 1024))mdh_update(bctx, SAADDR(¶m->srv->intsa), a3len);
|
if((type & 1024))mdh_update(bctx, SAADDR(¶m->srv->intsa), a3len);
|
||||||
if((type & 2048))mdh_update(bctx, SAPORT(¶m->srv->intsa), 2);
|
if((type & 2048))mdh_update(bctx, SAPORT(¶m->srv->intsa), 2);
|
||||||
|
|||||||
@ -54,8 +54,6 @@
|
|||||||
after it should be tried again. */
|
after it should be tried again. */
|
||||||
#define HTTPSRV_REWRITTEN 2
|
#define HTTPSRV_REWRITTEN 2
|
||||||
#define HTTPSRV_MAXBODY 1048576
|
#define HTTPSRV_MAXBODY 1048576
|
||||||
/* the most of a request this server keeps in case it hands it on */
|
|
||||||
#define HTTPSRV_MAXRAW 65536
|
|
||||||
/* lengths a reply is written with: a count, or one of these */
|
/* lengths a reply is written with: a count, or one of these */
|
||||||
#define HTTPSRV_LEN_CHUNKED (-1)
|
#define HTTPSRV_LEN_CHUNKED (-1)
|
||||||
#define HTTPSRV_LEN_NONE (-2)
|
#define HTTPSRV_LEN_NONE (-2)
|
||||||
@ -582,7 +580,7 @@ static const char * contenttype(const char *path)
|
|||||||
static int sendfilecontent(struct httpreq *r, int fd, uint64_t size)
|
static int sendfilecontent(struct httpreq *r, int fd, uint64_t size)
|
||||||
{
|
{
|
||||||
struct clientparam *param = r->param;
|
struct clientparam *param = r->param;
|
||||||
char buf[HTTPSRV_BLOCK];
|
char *buf = (char *)param->tmpbuf;
|
||||||
uint64_t sent = 0;
|
uint64_t sent = 0;
|
||||||
|
|
||||||
#ifdef HTTPSRV_SENDFILE
|
#ifdef HTTPSRV_SENDFILE
|
||||||
@ -627,7 +625,7 @@ static int sendfilecontent(struct httpreq *r, int fd, uint64_t size)
|
|||||||
if(lseek(fd, (off_t)sent, SEEK_SET) == (off_t)-1) return 1;
|
if(lseek(fd, (off_t)sent, SEEK_SET) == (off_t)-1) return 1;
|
||||||
while(sent < size){
|
while(sent < size){
|
||||||
uint64_t left = size - sent;
|
uint64_t left = size - sent;
|
||||||
int want = left > (uint64_t)sizeof(buf)? (int)sizeof(buf) : (int)left;
|
int want = left > (uint64_t)HTTPSRV_BLOCK? (int)HTTPSRV_BLOCK : (int)left;
|
||||||
int got;
|
int got;
|
||||||
|
|
||||||
got = (int)read(fd, buf, want);
|
got = (int)read(fd, buf, want);
|
||||||
@ -988,7 +986,7 @@ static int op_echo(struct httpreq *r, const unsigned char *params)
|
|||||||
Produces exactly N bytes of body. */
|
Produces exactly N bytes of body. */
|
||||||
static int op_data(struct httpreq *r, const unsigned char *params)
|
static int op_data(struct httpreq *r, const unsigned char *params)
|
||||||
{
|
{
|
||||||
char buf[HTTPSRV_BLOCK];
|
char *buf = (char *)r->param->tmpbuf;
|
||||||
int64_t size, block, delay, status;
|
int64_t size, block, delay, status;
|
||||||
int chunked;
|
int chunked;
|
||||||
uint64_t sent = 0;
|
uint64_t sent = 0;
|
||||||
@ -1141,11 +1139,12 @@ int httpopbyname(const unsigned char *name)
|
|||||||
*/
|
*/
|
||||||
static void httpsrv_drain(struct clientparam *param, uint64_t len)
|
static void httpsrv_drain(struct clientparam *param, uint64_t len)
|
||||||
{
|
{
|
||||||
char buf[HTTPSRV_BLOCK];
|
char *buf = (char *)param->tmpbuf;
|
||||||
|
|
||||||
|
param->climark = -1; /* answered here: the request is not needed again */
|
||||||
if(len > HTTPSRV_MAXBODY) len = HTTPSRV_MAXBODY;
|
if(len > HTTPSRV_MAXBODY) len = HTTPSRV_MAXBODY;
|
||||||
while(len){
|
while(len){
|
||||||
int want = (len > (uint64_t)sizeof(buf))? (int)sizeof(buf) : (int)len;
|
int want = (len > (uint64_t)HTTPSRV_BLOCK)? (int)HTTPSRV_BLOCK : (int)len;
|
||||||
int got = sockgetlinebuf(param, CLIENT, (unsigned char *)buf, want, EOF,
|
int got = sockgetlinebuf(param, CLIENT, (unsigned char *)buf, want, EOF,
|
||||||
conf.timeouts[STRING_S]);
|
conf.timeouts[STRING_S]);
|
||||||
|
|
||||||
@ -1162,7 +1161,7 @@ static void httpsrv_drain(struct clientparam *param, uint64_t len)
|
|||||||
and amount, which is what lets the answer be read. */
|
and amount, which is what lets the answer be read. */
|
||||||
static void httpsrv_linger(struct clientparam *param)
|
static void httpsrv_linger(struct clientparam *param)
|
||||||
{
|
{
|
||||||
char buf[HTTPSRV_BLOCK];
|
char *buf = (char *)param->tmpbuf;
|
||||||
struct pollfd fd;
|
struct pollfd fd;
|
||||||
uint64_t left = HTTPSRV_MAXBODY;
|
uint64_t left = HTTPSRV_MAXBODY;
|
||||||
time_t deadline = time(NULL) + conf.timeouts[LINGER_TO];
|
time_t deadline = time(NULL) + conf.timeouts[LINGER_TO];
|
||||||
@ -1179,33 +1178,12 @@ static void httpsrv_linger(struct clientparam *param)
|
|||||||
fd.events = POLLIN;
|
fd.events = POLLIN;
|
||||||
if(param->srv->so._poll(param->sostate, &fd, 1, timeo * 1000) <= 0) break;
|
if(param->srv->so._poll(param->sostate, &fd, 1, timeo * 1000) <= 0) break;
|
||||||
got = (int)param->srv->so._recv(param->sostate, param->clisock, buf,
|
got = (int)param->srv->so._recv(param->sostate, param->clisock, buf,
|
||||||
(left > sizeof(buf))? (int)sizeof(buf) : (int)left, 0);
|
(left > HTTPSRV_BLOCK)? (int)HTTPSRV_BLOCK : (int)left, 0);
|
||||||
if(got <= 0) break;
|
if(got <= 0) break;
|
||||||
left -= (uint64_t)got;
|
left -= (uint64_t)got;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Keeps the request as the client wrote it. Only what a handoff needs: the
|
|
||||||
request line and the headers, exactly as they came, since the proxy code
|
|
||||||
reads them again from the beginning. */
|
|
||||||
static int rawkeep(struct httpreq *r, const char *line, int len)
|
|
||||||
{
|
|
||||||
if(r->rawlen + len + 3 > r->rawsize){
|
|
||||||
int want = r->rawsize? r->rawsize * 2 : 2048;
|
|
||||||
unsigned char *grown;
|
|
||||||
|
|
||||||
while(want < r->rawlen + len + 3) want *= 2;
|
|
||||||
if(want > HTTPSRV_MAXRAW) return 1;
|
|
||||||
grown = realloc(r->raw, (size_t)want);
|
|
||||||
if(!grown) return 1;
|
|
||||||
r->raw = grown;
|
|
||||||
r->rawsize = want;
|
|
||||||
}
|
|
||||||
memcpy(r->raw + r->rawlen, line, (size_t)len);
|
|
||||||
r->rawlen += len;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hands the request to the proxy code, which reads it again from the client
|
/* Hands the request to the proxy code, which reads it again from the client
|
||||||
buffer and answers it as a proxy would, asking for its own credentials if
|
buffer and answers it as a proxy would, asking for its own credentials if
|
||||||
the configuration wants them. The connection stays with this service. */
|
the configuration wants them. The connection stays with this service. */
|
||||||
@ -1220,7 +1198,7 @@ static int proxypass(struct clientparam *param, struct httpreq *r)
|
|||||||
a request already being answered on behalf of another child is never
|
a request already being answered on behalf of another child is never
|
||||||
handed on again. */
|
handed on again. */
|
||||||
if(param->onerequest) return 1;
|
if(param->onerequest) return 1;
|
||||||
if(!r->raw || rawkeep(r, "\r\n", 2)) return 1; /* the end of the headers */
|
if(param->climark < 0) return 1; /* the request is no longer there */
|
||||||
|
|
||||||
/* What is open towards the server belongs to the request before this
|
/* What is open towards the server belongs to the request before this
|
||||||
one. It is no use for this request if it went somewhere else, and no
|
one. It is no use for this request if it went somewhere else, and no
|
||||||
@ -1255,7 +1233,9 @@ static int proxypass(struct clientparam *param, struct httpreq *r)
|
|||||||
r->lasthost[255] = 0;
|
r->lasthost[255] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pushbackcli(param, r->raw, r->rawlen)) return 1;
|
/* the proxy reads the request from where it began */
|
||||||
|
param->clioffset = (unsigned)param->climark;
|
||||||
|
param->climark = -1;
|
||||||
|
|
||||||
param->onerequest = 1;
|
param->onerequest = 1;
|
||||||
next = proxychild(param);
|
next = proxychild(param);
|
||||||
@ -1283,11 +1263,15 @@ static int httpsrv_request(struct clientparam *param, struct httpreq *r)
|
|||||||
struct httprule *rule;
|
struct httprule *rule;
|
||||||
int i, hdrs = 0;
|
int i, hdrs = 0;
|
||||||
|
|
||||||
|
/* The request is kept in the client buffer as it is read, so that one
|
||||||
|
handed to the proxy can be read there again from the start. One which
|
||||||
|
does not fit in the buffer is not answered. */
|
||||||
|
param->climark = (int)param->clioffset;
|
||||||
i = sockgetlinebuf(param, CLIENT, (unsigned char *)buf, sizeof(buf) - 1, '\n',
|
i = sockgetlinebuf(param, CLIENT, (unsigned char *)buf, sizeof(buf) - 1, '\n',
|
||||||
conf.timeouts[STRING_S]);
|
conf.timeouts[STRING_S]);
|
||||||
if(i <= 0 && !r->first) return 0; /* the client is done with us */
|
if(i <= 0 && !r->first) return 0; /* the client is done with us */
|
||||||
|
if(param->climark == -2) RETURN(710);
|
||||||
if(i < 5) RETURN(701);
|
if(i < 5) RETURN(701);
|
||||||
if(rawkeep(r, buf, i)) RETURN(710);
|
|
||||||
buf[i] = 0;
|
buf[i] = 0;
|
||||||
|
|
||||||
sp = strchr(buf, ' ');
|
sp = strchr(buf, ' ');
|
||||||
@ -1368,7 +1352,6 @@ static int httpsrv_request(struct clientparam *param, struct httpreq *r)
|
|||||||
(i = sockgetlinebuf(param, CLIENT, (unsigned char *)buf, sizeof(buf) - 1,
|
(i = sockgetlinebuf(param, CLIENT, (unsigned char *)buf, sizeof(buf) - 1,
|
||||||
'\n', conf.timeouts[STRING_S])) > 2){
|
'\n', conf.timeouts[STRING_S])) > 2){
|
||||||
hdrs++;
|
hdrs++;
|
||||||
if(rawkeep(r, buf, i)) RETURN(710);
|
|
||||||
buf[i] = 0;
|
buf[i] = 0;
|
||||||
if(!strncasecmp(buf, "host:", 5) && !r->proxy){
|
if(!strncasecmp(buf, "host:", 5) && !r->proxy){
|
||||||
sp = buf + 5;
|
sp = buf + 5;
|
||||||
@ -1393,13 +1376,10 @@ static int httpsrv_request(struct clientparam *param, struct httpreq *r)
|
|||||||
creds[clen] = 0;
|
creds[clen] = 0;
|
||||||
|
|
||||||
q = strchr(creds, ':');
|
q = strchr(creds, ':');
|
||||||
if(q){
|
if(q) *q = 0;
|
||||||
*q = 0;
|
/* credentials too long to keep are no credentials */
|
||||||
if(param->password) free(param->password);
|
if((q && PARAMSTR(param, password, q + 1)) || PARAMSTR(param, username, creds))
|
||||||
param->password = (unsigned char *)strdup(q + 1);
|
*param->username = *param->password = 0;
|
||||||
}
|
|
||||||
if(param->username) free(param->username);
|
|
||||||
param->username = (unsigned char *)strdup(creds);
|
|
||||||
}
|
}
|
||||||
else if(!strncasecmp(buf, "connection:", 11)){
|
else if(!strncasecmp(buf, "connection:", 11)){
|
||||||
sp = buf + 11;
|
sp = buf + 11;
|
||||||
@ -1422,6 +1402,7 @@ static int httpsrv_request(struct clientparam *param, struct httpreq *r)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(param->climark == -2) RETURN(710);
|
||||||
/* The headers ran past what this server reads, so the rest of the request
|
/* The headers ran past what this server reads, so the rest of the request
|
||||||
is still in the stream and there is no answering it: what follows would
|
is still in the stream and there is no answering it: what follows would
|
||||||
be read as the request after this one. */
|
be read as the request after this one. */
|
||||||
@ -1453,8 +1434,7 @@ static int httpsrv_request(struct clientparam *param, struct httpreq *r)
|
|||||||
if(colon) *colon = 0;
|
if(colon) *colon = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(param->hostname) free(param->hostname);
|
if(PARAMSTR(param, hostname, host)) RETURN(706);
|
||||||
param->hostname = (unsigned char *)strdup(host);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The request is answered here, so the address it was sent to is the
|
/* The request is answered here, so the address it was sent to is the
|
||||||
@ -1594,7 +1574,7 @@ void * httpsrvchild(struct clientparam *param)
|
|||||||
|
|
||||||
answered = httpsrv_request(param, &r);
|
answered = httpsrv_request(param, &r);
|
||||||
handoff = r.handoff;
|
handoff = r.handoff;
|
||||||
if(r.raw) free(r.raw);
|
param->climark = -1;
|
||||||
if(!answered) break;
|
if(!answered) break;
|
||||||
|
|
||||||
/* Log the request the way the proxy does: the parameters decide
|
/* Log the request the way the proxy does: the parameters decide
|
||||||
|
|||||||
@ -152,7 +152,7 @@ void * imappchild(struct clientparam* param) {
|
|||||||
socksend(param, param->clisock, buf, (int)strlen((char *)buf), conf.timeouts[STRING_S]);
|
socksend(param, param->clisock, buf, (int)strlen((char *)buf), conf.timeouts[STRING_S]);
|
||||||
}
|
}
|
||||||
if(parseconnusername((char *)ub, param, 0, 143)){RETURN(694);}
|
if(parseconnusername((char *)ub, param, 0, 143)){RETURN(694);}
|
||||||
if(*pb && !param->password) param->password = (unsigned char *)strdup((char *)pb);
|
if(*pb && !*param->password && PARAMSTR(param, password, pb)){RETURN(694);}
|
||||||
param->operation = CONNECT;
|
param->operation = CONNECT;
|
||||||
res = (*param->srv->authfunc)(param);
|
res = (*param->srv->authfunc)(param);
|
||||||
if(res) {RETURN(res);}
|
if(res) {RETURN(res);}
|
||||||
@ -227,7 +227,7 @@ void * imappchild(struct clientparam* param) {
|
|||||||
RETURN (mapsocket(param, 180));
|
RETURN (mapsocket(param, 180));
|
||||||
CLEANRET:
|
CLEANRET:
|
||||||
|
|
||||||
if(param->hostname&¶m->extusername) {
|
if(*param->hostname&&*param->extusername) {
|
||||||
sprintf((char *)buf, "%.128s@%.128s%c%hu", param->extusername, param->hostname, (*SAPORT(¶m->sinsr)==143)?0:':', ntohs(*SAPORT(¶m->sinsr)));
|
sprintf((char *)buf, "%.128s@%.128s%c%hu", param->extusername, param->hostname, (*SAPORT(¶m->sinsr)==143)?0:':', ntohs(*SAPORT(¶m->sinsr)));
|
||||||
dolog(param, buf);
|
dolog(param, buf);
|
||||||
}
|
}
|
||||||
|
|||||||
16
src/log.c
16
src/log.c
@ -155,7 +155,7 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
|
|||||||
i+=5;
|
i+=5;
|
||||||
break;
|
break;
|
||||||
case 'U':
|
case 'U':
|
||||||
if(param->username && *param->username){
|
if(*param->username){
|
||||||
for(len = 0; i< 4000 && param->username[len]; len++){
|
for(len = 0; i< 4000 && param->username[len]; len++){
|
||||||
buf[i] = param->username[len];
|
buf[i] = param->username[len];
|
||||||
if(param->srv->nonprintable && (buf[i] < 0x20 || strchr((char *)param->srv->nonprintable, buf[i]))) buf[i] = param->srv->replace;
|
if(param->srv->nonprintable && (buf[i] < 0x20 || strchr((char *)param->srv->nonprintable, buf[i]))) buf[i] = param->srv->replace;
|
||||||
@ -171,7 +171,7 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'n':
|
case 'n':
|
||||||
len = param->hostname? (int)strlen((char *)param->hostname) : 0;
|
len = (int)strlen((char *)param->hostname);
|
||||||
if (len > 0 && !strchr((char *)param->hostname, ':')) for(len = 0; param->hostname[len] && i < 4000; len++, i++){
|
if (len > 0 && !strchr((char *)param->hostname, ':')) for(len = 0; param->hostname[len] && i < 4000; len++, i++){
|
||||||
buf[i] = param->hostname[len];
|
buf[i] = param->hostname[len];
|
||||||
if(param->srv->nonprintable && (buf[i] < 0x20 || strchr((char *)param->srv->nonprintable, buf[i]))) buf[i] = param->srv->replace;
|
if(param->srv->nonprintable && (buf[i] < 0x20 || strchr((char *)param->srv->nonprintable, buf[i]))) buf[i] = param->srv->replace;
|
||||||
@ -338,10 +338,12 @@ void lognone(struct clientparam * param, const unsigned char *s) {
|
|||||||
clearstat(param);
|
clearstat(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
NOINLINE void logstdout(struct clientparam * param, const unsigned char *s) {
|
void logstdout(struct clientparam * param, const unsigned char *s) {
|
||||||
FILE *log;
|
FILE *log;
|
||||||
unsigned char tmpbuf[8192];
|
unsigned char *tmpbuf;
|
||||||
|
|
||||||
|
/* with no connection, an error from the main thread */
|
||||||
|
tmpbuf = param? param->tmpbuf : logparam.tmpbuf;
|
||||||
dobuf(param, tmpbuf, s, NULL);
|
dobuf(param, tmpbuf, s, NULL);
|
||||||
log = (param && param->srv && param->srv->stdlog)?param->srv->stdlog:conf.stdlog?conf.stdlog:stdout;
|
log = (param && param->srv && param->srv->stdlog)?param->srv->stdlog:conf.stdlog?conf.stdlog:stdout;
|
||||||
if(!param || !param->nolog)if(fprintf(log, "%s\n", tmpbuf) < 0) {
|
if(!param || !param->nolog)if(fprintf(log, "%s\n", tmpbuf) < 0) {
|
||||||
@ -351,10 +353,8 @@ NOINLINE void logstdout(struct clientparam * param, const unsigned char *s) {
|
|||||||
}
|
}
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
void logsyslog(struct clientparam * param, const unsigned char *s) {
|
void logsyslog(struct clientparam * param, const unsigned char *s) {
|
||||||
|
dobuf(param, param->tmpbuf, s, NULL);
|
||||||
unsigned char tmpbuf[8192];
|
if(!param->nolog)syslog(LOG_INFO, "%s", param->tmpbuf);
|
||||||
dobuf(param, tmpbuf, s, NULL);
|
|
||||||
if(!param->nolog)syslog(LOG_INFO, "%s", tmpbuf);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -276,6 +276,7 @@ static FILTER_ACTION pcre_filter_buffer(void *fc, struct clientparam *param, uns
|
|||||||
int replen, num;
|
int replen, num;
|
||||||
char * replace;
|
char * replace;
|
||||||
char * tmpbuf, *target, *newbuf;
|
char * tmpbuf, *target, *newbuf;
|
||||||
|
unsigned char *given = *buf_p;
|
||||||
int nreplaces=0;
|
int nreplaces=0;
|
||||||
#define pcrefd ((struct pcre_filter_data *)fc)
|
#define pcrefd ((struct pcre_filter_data *)fc)
|
||||||
|
|
||||||
@ -358,7 +359,9 @@ static FILTER_ACTION pcre_filter_buffer(void *fc, struct clientparam *param, uns
|
|||||||
return CONTINUE;
|
return CONTINUE;
|
||||||
}
|
}
|
||||||
memcpy(newbuf, *buf_p, ovector[0]);
|
memcpy(newbuf, *buf_p, ovector[0]);
|
||||||
pl->freefunc(*buf_p);
|
/* The buffer given is the caller's to free; only one
|
||||||
|
made by an earlier replacement here is ours. */
|
||||||
|
if(*buf_p != given) pl->freefunc(*buf_p);
|
||||||
*buf_p = (unsigned char *)newbuf;
|
*buf_p = (unsigned char *)newbuf;
|
||||||
*bufsize_p = newsize;
|
*bufsize_p = newsize;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -151,7 +151,7 @@ static int ldapfunc(struct clientparam *param)
|
|||||||
char escuser[512];
|
char escuser[512];
|
||||||
|
|
||||||
/* test proxy user auth ------------------------*/
|
/* test proxy user auth ------------------------*/
|
||||||
if(!param->username || !param->password) return 4;
|
if(!*param->username || !*param->password) return 4;
|
||||||
if(strlen(param->password)==0) return 4;
|
if(strlen(param->password)==0) return 4;
|
||||||
|
|
||||||
/* init ldap ---------------------- */
|
/* init ldap ---------------------- */
|
||||||
|
|||||||
@ -78,7 +78,7 @@ static int pamfunc(struct clientparam *param)
|
|||||||
NULL };
|
NULL };
|
||||||
|
|
||||||
/* test proxy user auth ------------------------*/
|
/* test proxy user auth ------------------------*/
|
||||||
if(!param->username || !param->password) return 4;
|
if(!*param->username || !*param->password) return 4;
|
||||||
/*if(strlen(param->password)==0) return 4;*/
|
/*if(strlen(param->password)==0) return 4;*/
|
||||||
|
|
||||||
#ifdef USERCASE
|
#ifdef USERCASE
|
||||||
|
|||||||
@ -31,7 +31,7 @@ extern "C" {
|
|||||||
PTOKEN_GROUPS ptg = (PTOKEN_GROUPS)tokenbuf;
|
PTOKEN_GROUPS ptg = (PTOKEN_GROUPS)tokenbuf;
|
||||||
|
|
||||||
|
|
||||||
if(!param->username || !param->password || param->pwtype != 0) return 4;
|
if(!*param->username || !*param->password || param->pwtype != 0) return 4;
|
||||||
dom = strchr((char *)param->username, '\\');
|
dom = strchr((char *)param->username, '\\');
|
||||||
if(dom)*dom++=0;
|
if(dom)*dom++=0;
|
||||||
if(!LogonUser( dom?dom:(char *)param->username,
|
if(!LogonUser( dom?dom:(char *)param->username,
|
||||||
|
|||||||
@ -54,7 +54,7 @@ unsigned char * conv_utf8_to_cp1251(unsigned char *s){
|
|||||||
|
|
||||||
|
|
||||||
static int aufunc(struct clientparam *param){
|
static int aufunc(struct clientparam *param){
|
||||||
if(!param->username || !param->password || param->pwtype != 0) return 4;
|
if(!*param->username || !*param->password || param->pwtype != 0) return 4;
|
||||||
conv_utf8_to_cp1251(param->username);
|
conv_utf8_to_cp1251(param->username);
|
||||||
conv_utf8_to_cp1251(param->password);
|
conv_utf8_to_cp1251(param->password);
|
||||||
return 4;
|
return 4;
|
||||||
|
|||||||
@ -68,7 +68,7 @@ void * pop3pchild(struct clientparam* param) {
|
|||||||
RETURN (mapsocket(param, 180));
|
RETURN (mapsocket(param, 180));
|
||||||
CLEANRET:
|
CLEANRET:
|
||||||
|
|
||||||
if(param->hostname&¶m->extusername) {
|
if(*param->hostname&&*param->extusername) {
|
||||||
sprintf((char *)buf, "%.128s@%.128s%c%hu", param->extusername, param->hostname, (*SAPORT(¶m->sinsr)==110)?0:':', ntohs(*SAPORT(¶m->sinsr)));
|
sprintf((char *)buf, "%.128s@%.128s%c%hu", param->extusername, param->hostname, (*SAPORT(¶m->sinsr)==110)?0:':', ntohs(*SAPORT(¶m->sinsr)));
|
||||||
dolog(param, buf);
|
dolog(param, buf);
|
||||||
}
|
}
|
||||||
|
|||||||
56
src/proxy.c
56
src/proxy.c
@ -157,9 +157,11 @@ static int send_st(struct clientparam *param, int idx){
|
|||||||
return socksend(param, param->clisock, (unsigned char *)proxy_stringtable[idx], pst_len(idx), conf.timeouts[STRING_S]);
|
return socksend(param, param->clisock, (unsigned char *)proxy_stringtable[idx], pst_len(idx), conf.timeouts[STRING_S]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef WITHMAIN
|
||||||
/* Makes room in a buffer whose size is tracked. A filter may hand back one
|
/* Makes room in a buffer whose size is tracked. A filter may hand back one
|
||||||
holding exactly what it produced, so nothing may be added to it without
|
holding exactly what it produced, so nothing may be added to it without
|
||||||
asking for the room first. Returns 1 when the room cannot be had. */
|
asking for the room first; without filters, as in a proxy built on its
|
||||||
|
own, there is nothing to ask. Returns 1 when the room cannot be had. */
|
||||||
static int growbuf(unsigned char **buf, int *bufsize, int need){
|
static int growbuf(unsigned char **buf, int *bufsize, int need){
|
||||||
unsigned char *newbuf;
|
unsigned char *newbuf;
|
||||||
|
|
||||||
@ -171,6 +173,16 @@ static int growbuf(unsigned char **buf, int *bufsize, int need){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Reads a body of a known length into one buffer, to be filtered whole.
|
||||||
|
One bigger than the connection's own is had for it, up to filtermaxsize;
|
||||||
|
with no limit set a body is only read whole if it fits the buffer.
|
||||||
|
Returns how much is there, less than len if the body did not all come. */
|
||||||
|
static uint64_t fillwhole(struct clientparam *param, DIRECTION which, uint64_t len){
|
||||||
|
if(conf.filtermaxsize && bufroom(param, which, (unsigned long)len)) return 0;
|
||||||
|
return sockfillbuf(param, which, (unsigned long)len, CONNECTION_S);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void freeptr(void *p){
|
static void freeptr(void *p){
|
||||||
void **pp = (void **)p;
|
void **pp = (void **)p;
|
||||||
if(*pp) { free(*pp); *pp = NULL; }
|
if(*pp) { free(*pp); *pp = NULL; }
|
||||||
@ -467,16 +479,11 @@ for(;;){
|
|||||||
sb = (unsigned char *)strchr((char *)username, ':');
|
sb = (unsigned char *)strchr((char *)username, ':');
|
||||||
if(sb){
|
if(sb){
|
||||||
*sb = 0;
|
*sb = 0;
|
||||||
if(param->password)free(param->password);
|
|
||||||
param->password = (unsigned char *)strdup((char *)sb+1);
|
|
||||||
param->pwtype = 0;
|
param->pwtype = 0;
|
||||||
}
|
}
|
||||||
else if(param->password){
|
/* credentials too long to keep are no credentials */
|
||||||
free(param->password);
|
if(PARAMSTR(param, password, sb? sb+1 : NULL) || PARAMSTR(param, username, username))
|
||||||
param->password = NULL;
|
*param->username = *param->password = 0;
|
||||||
}
|
|
||||||
if(param->username)free(param->username);
|
|
||||||
param->username = (unsigned char *)strdup((char *)username);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -512,11 +519,10 @@ for(;;){
|
|||||||
c = *se;
|
c = *se;
|
||||||
*se = 0;
|
*se = 0;
|
||||||
}
|
}
|
||||||
if(param->hostname && (!*param->hostname || isnumber(param->hostname[strlen((char *)param->hostname) - 1]))){
|
if(*param->hostname && isnumber(param->hostname[strlen((char *)param->hostname) - 1])){
|
||||||
free(param->hostname);
|
*param->hostname = 0;
|
||||||
param->hostname = NULL;
|
|
||||||
}
|
}
|
||||||
if(!param->hostname){
|
if(!*param->hostname){
|
||||||
if(parsehostname((char *)sb, param, 80)) RETURN(100);
|
if(parsehostname((char *)sb, param, 80)) RETURN(100);
|
||||||
}
|
}
|
||||||
newbuf = malloc(strlen((char *)req) + strlen((char *)(buf+inbuf)) + 8);
|
newbuf = malloc(strlen((char *)req) + strlen((char *)(buf+inbuf)) + 8);
|
||||||
@ -543,17 +549,9 @@ for(;;){
|
|||||||
if(i<=0)continue;
|
if(i<=0)continue;
|
||||||
username[i] = 0;
|
username[i] = 0;
|
||||||
sb = (unsigned char *)strchr((char *)username, ':');
|
sb = (unsigned char *)strchr((char *)username, ':');
|
||||||
if(sb){
|
if(sb) *sb = 0;
|
||||||
*sb = 0;
|
if(PARAMSTR(param, extpassword, sb? sb+1 : NULL) || PARAMSTR(param, extusername, username))
|
||||||
if(param->extpassword)free(param->extpassword);
|
*param->extusername = *param->extpassword = 0;
|
||||||
param->extpassword = (unsigned char *)strdup((char *)sb+1);
|
|
||||||
}
|
|
||||||
else if(param->extpassword){
|
|
||||||
free(param->extpassword);
|
|
||||||
param->extpassword = NULL;
|
|
||||||
}
|
|
||||||
if(param->extusername)free(param->extusername);
|
|
||||||
param->extusername = (unsigned char *)strdup((char *)username);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -606,7 +604,7 @@ for(;;){
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if(param->srv->needuser > 1 && !param->username) {RETURN(4);}
|
if(param->srv->needuser > 1 && !*param->username) {RETURN(4);}
|
||||||
if((res = (*param->srv->authfunc)(param))) {
|
if((res = (*param->srv->authfunc)(param))) {
|
||||||
if (res <= 10 || haveconnection || param->transparent) RETURN(res);
|
if (res <= 10 || haveconnection || param->transparent) RETURN(res);
|
||||||
param->srv->so._closesocket(param->sostate, param->remsock);
|
param->srv->so._closesocket(param->sostate, param->remsock);
|
||||||
@ -698,7 +696,7 @@ for(;;){
|
|||||||
}
|
}
|
||||||
else if(param->ndatfilterscli > 0 && contentlength64 > 0 && contentlength64 == (uint64_t)(unsigned long)contentlength64){
|
else if(param->ndatfilterscli > 0 && contentlength64 > 0 && contentlength64 == (uint64_t)(unsigned long)contentlength64){
|
||||||
uint64_t newlen64;
|
uint64_t newlen64;
|
||||||
newlen64 = (uint64_t) sockfillbuffcli(param, (unsigned long)contentlength64, CONNECTION_S);
|
newlen64 = fillwhole(param, CLIENT, contentlength64);
|
||||||
if(newlen64 == contentlength64) {
|
if(newlen64 == contentlength64) {
|
||||||
action = handledatfltcli(param, ¶m->clibuf, (int *)¶m->clibufsize, 0, (int *)¶m->cliinbuf);
|
action = handledatfltcli(param, ¶m->clibuf, (int *)¶m->clibufsize, 0, (int *)¶m->cliinbuf);
|
||||||
if(action == HANDLED){
|
if(action == HANDLED){
|
||||||
@ -1025,9 +1023,9 @@ for(;;){
|
|||||||
if(keepalive <= 1) {
|
if(keepalive <= 1) {
|
||||||
hlen += sprintf((char*)buf + hlen, "Connection: %s\r\n", keepalive? "keep-alive":"close");
|
hlen += sprintf((char*)buf + hlen, "Connection: %s\r\n", keepalive? "keep-alive":"close");
|
||||||
}
|
}
|
||||||
if(param->extusername){
|
if(*param->extusername){
|
||||||
hlen += sprintf((char*)buf + hlen, "%s: Basic ", (redirect)?"Proxy-Authorization":"Authorization");
|
hlen += sprintf((char*)buf + hlen, "%s: Basic ", (redirect)?"Proxy-Authorization":"Authorization");
|
||||||
sprintf((char*)username, "%.128s:%.128s", param->extusername, param->extpassword?param->extpassword:(unsigned char*)"");
|
sprintf((char*)username, "%.128s:%.128s", param->extusername, param->extpassword);
|
||||||
if(!(sb = en64(username, buf + hlen, (int)strlen((char *)username), bufsize - hlen))) {RETURN(21);}
|
if(!(sb = en64(username, buf + hlen, (int)strlen((char *)username), bufsize - hlen))) {RETURN(21);}
|
||||||
hlen = (int)(sb - buf);
|
hlen = (int)(sb - buf);
|
||||||
hlen += sprintf((char*)buf + hlen, "\r\n");
|
hlen += sprintf((char*)buf + hlen, "\r\n");
|
||||||
@ -1198,7 +1196,7 @@ for(;;){
|
|||||||
}
|
}
|
||||||
else if(param->ndatfilterssrv > 0 && contentlength64 > 0 && contentlength64 == (uint64_t)(unsigned long)contentlength64 && param->operation != HTTP_HEAD && res != 204 && res != 304){
|
else if(param->ndatfilterssrv > 0 && contentlength64 > 0 && contentlength64 == (uint64_t)(unsigned long)contentlength64 && param->operation != HTTP_HEAD && res != 204 && res != 304){
|
||||||
uint64_t newlen;
|
uint64_t newlen;
|
||||||
newlen = (uint64_t)sockfillbuffsrv(param, (unsigned long) contentlength64, CONNECTION_S);
|
newlen = fillwhole(param, SERVER, contentlength64);
|
||||||
if(newlen == contentlength64) {
|
if(newlen == contentlength64) {
|
||||||
action = handlepredatflt(param);
|
action = handlepredatflt(param);
|
||||||
if(action == HANDLED){
|
if(action == HANDLED){
|
||||||
|
|||||||
37
src/proxy.h
37
src/proxy.h
@ -22,6 +22,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stddef.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@ -36,8 +37,9 @@
|
|||||||
#define MAXNSERVERS 5
|
#define MAXNSERVERS 5
|
||||||
#define DEFAULT_MAXCHILD 500
|
#define DEFAULT_MAXCHILD 500
|
||||||
|
|
||||||
#define TCPBUFSIZE 65536
|
/* How much of a connection's buffer is read into at once: all of it, or
|
||||||
#define SRVBUFSIZE (param->srv->bufsize?param->srv->bufsize:((param->service == S_UDPPM)?UDPBUFSIZE:TCPBUFSIZE))
|
less if the service was told so with -b. */
|
||||||
|
#define SRVBUFSIZE(srv) (((srv)->bufsize > 0 && (srv)->bufsize < CLIENTBUFSIZE)? (unsigned)(srv)->bufsize : CLIENTBUFSIZE)
|
||||||
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
@ -116,17 +118,6 @@ void daemonize(void);
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Keeps a callee with a large frame out of the caller's frame, e.g. the
|
|
||||||
8K log buffer of logstdout() out of dolog(), which calls it in a branch
|
|
||||||
taken only when there is no service.
|
|
||||||
*/
|
|
||||||
#if defined(__GNUC__)
|
|
||||||
#define NOINLINE __attribute__((noinline))
|
|
||||||
#elif defined(_MSC_VER)
|
|
||||||
#define NOINLINE __declspec(noinline)
|
|
||||||
#else
|
|
||||||
#define NOINLINE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Thread stack size, stacksize command value is added to it. BSD libc uses
|
/* Thread stack size, stacksize command value is added to it. BSD libc uses
|
||||||
significantly more stack, e.g. in vfprintf() called by syslog().
|
significantly more stack, e.g. in vfprintf() called by syslog().
|
||||||
@ -239,6 +230,11 @@ extern struct extparam conf;
|
|||||||
|
|
||||||
extern int timeouts[12];
|
extern int timeouts[12];
|
||||||
|
|
||||||
|
/* directions sockmap() passes with splice(): -s1, -s2, -s3; with
|
||||||
|
SPLICE_AUTO (-s alone, -s5 to -s7) only when it pays */
|
||||||
|
#define SPLICE_DOWNLOAD 1
|
||||||
|
#define SPLICE_UPLOAD 2
|
||||||
|
#define SPLICE_AUTO 4
|
||||||
int sockmap(struct clientparam * param, int timeo, int usesplice);
|
int sockmap(struct clientparam * param, int timeo, int usesplice);
|
||||||
int udpsockmap(struct clientparam * param, int timeo);
|
int udpsockmap(struct clientparam * param, int timeo);
|
||||||
int udpbind(struct clientparam * param);
|
int udpbind(struct clientparam * param);
|
||||||
@ -253,8 +249,12 @@ int sockrecvfrom(struct clientparam *param, SOCKET sock, struct sockaddr * sin,
|
|||||||
|
|
||||||
int sockgetcharcli(struct clientparam * param, int timeosec, int timeousec);
|
int sockgetcharcli(struct clientparam * param, int timeosec, int timeousec);
|
||||||
int sockgetcharsrv(struct clientparam * param, int timeosec, int timeousec);
|
int sockgetcharsrv(struct clientparam * param, int timeosec, int timeousec);
|
||||||
unsigned long sockfillbuffcli(struct clientparam * param, unsigned long size, int timeosec);
|
unsigned long sockfillbuf(struct clientparam * param, DIRECTION which, unsigned long size, int timeosec);
|
||||||
unsigned long sockfillbuffsrv(struct clientparam * param, unsigned long size, int timeosec);
|
int bufroom(struct clientparam * param, DIRECTION which, unsigned long size);
|
||||||
|
int paramstr(unsigned char *field, size_t size, const unsigned char *s);
|
||||||
|
/* sets one of a connection's names or credentials; 1 if it is too long */
|
||||||
|
#define PARAMSTR(p, f, s) paramstr((p)->f, sizeof((p)->f), (const unsigned char *)(s))
|
||||||
|
void bufrelease(struct clientparam * param, DIRECTION which);
|
||||||
|
|
||||||
int sockgetlinebuf(struct clientparam * param, DIRECTION which, unsigned char * buf, int bufsize, int delim, int to);
|
int sockgetlinebuf(struct clientparam * param, DIRECTION which, unsigned char * buf, int bufsize, int delim, int to);
|
||||||
int getmultiline(struct clientparam * param, DIRECTION which, unsigned char * buf, int bufsize, const char *cap, int *found);
|
int getmultiline(struct clientparam * param, DIRECTION which, unsigned char * buf, int bufsize, const char *cap, int *found);
|
||||||
@ -267,7 +267,7 @@ void dolog(struct clientparam * param, const unsigned char *s);
|
|||||||
int dobuf(struct clientparam * param, unsigned char * buf, const unsigned char *s, const unsigned char * doublec);
|
int dobuf(struct clientparam * param, unsigned char * buf, const unsigned char *s, const unsigned char * doublec);
|
||||||
int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char *s, const unsigned char * doublec, struct tm* tm, char * format);
|
int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char *s, const unsigned char * doublec, struct tm* tm, char * format);
|
||||||
extern FILE * stdlog;
|
extern FILE * stdlog;
|
||||||
NOINLINE void logstdout(struct clientparam * param, const unsigned char *s);
|
void logstdout(struct clientparam * param, const unsigned char *s);
|
||||||
void logsyslog(struct clientparam * param, const unsigned char *s);
|
void logsyslog(struct clientparam * param, const unsigned char *s);
|
||||||
void lognone(struct clientparam * param, const unsigned char *s);
|
void lognone(struct clientparam * param, const unsigned char *s);
|
||||||
void logradius(struct clientparam * param, const unsigned char *s);
|
void logradius(struct clientparam * param, const unsigned char *s);
|
||||||
@ -382,7 +382,7 @@ void freefilter(struct filter *filter);
|
|||||||
void freeconf(struct extparam *confp);
|
void freeconf(struct extparam *confp);
|
||||||
struct passwords * copypwl (struct passwords *pwl);
|
struct passwords * copypwl (struct passwords *pwl);
|
||||||
void freepwl(struct passwords *pw);
|
void freepwl(struct passwords *pw);
|
||||||
void copyfilter(struct filter *, struct srvparam *srv);
|
int copyfilter(struct filter *, struct srvparam *srv);
|
||||||
FILTER_ACTION makefilters (struct srvparam *srv, struct clientparam *param);
|
FILTER_ACTION makefilters (struct srvparam *srv, struct clientparam *param);
|
||||||
FILTER_ACTION handlereqfilters(struct clientparam *param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p);
|
FILTER_ACTION handlereqfilters(struct clientparam *param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p);
|
||||||
FILTER_ACTION handleconnectflt(struct clientparam *param);
|
FILTER_ACTION handleconnectflt(struct clientparam *param);
|
||||||
@ -412,7 +412,6 @@ void pcre_pattern_free(void *re);
|
|||||||
int pcre_pattern_match(void *re, const unsigned char *subject, struct capture *caps, int maxcaps);
|
int pcre_pattern_match(void *re, const unsigned char *subject, struct capture *caps, int maxcaps);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int pushbackcli(struct clientparam * param, const unsigned char * data, int len);
|
|
||||||
int parsepattern(struct hostname *h, unsigned char *arg);
|
int parsepattern(struct hostname *h, unsigned char *arg);
|
||||||
int parsepathpattern(struct hostname *h, unsigned char *arg);
|
int parsepathpattern(struct hostname *h, unsigned char *arg);
|
||||||
int patternmatchcaps(const struct hostname *h, const unsigned char *str,
|
int patternmatchcaps(const struct hostname *h, const unsigned char *str,
|
||||||
@ -481,7 +480,7 @@ extern struct datatype datatypes[64];
|
|||||||
extern struct commands commandhandlers[];
|
extern struct commands commandhandlers[];
|
||||||
|
|
||||||
#ifdef WITHSPLICE
|
#ifdef WITHSPLICE
|
||||||
#define mapsocket(a,b) ((a->srv->usesplice && !a->ndatfilterssrv && !a->ndatfilterscli)?sockmap(a,b,1):sockmap(a,b,0))
|
#define mapsocket(a,b) ((a->srv->usesplice && !a->ndatfilterssrv && !a->ndatfilterscli)?sockmap(a,b,a->srv->usesplice):sockmap(a,b,0))
|
||||||
#else
|
#else
|
||||||
#define mapsocket(a,b) sockmap(a,b, 0)
|
#define mapsocket(a,b) sockmap(a,b, 0)
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
1159
src/proxymain.c
1159
src/proxymain.c
File diff suppressed because it is too large
Load Diff
@ -26,16 +26,11 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, struct soc
|
|||||||
|
|
||||||
user = redir->extuser;
|
user = redir->extuser;
|
||||||
pass = redir->extpass;
|
pass = redir->extpass;
|
||||||
if (!param->srvbufsize){
|
|
||||||
param->srvbufsize = SRVBUFSIZE;
|
|
||||||
param->srvbuf = malloc(param->srvbufsize);
|
|
||||||
if(!param->srvbuf) return 21;
|
|
||||||
}
|
|
||||||
buf = param->srvbuf;
|
buf = param->srvbuf;
|
||||||
username = buf + 2048;
|
username = buf + 2048;
|
||||||
if(user) {
|
if(user) {
|
||||||
if (*user == '*') {
|
if (*user == '*') {
|
||||||
if(!param->username) return 4;
|
if(!*param->username) return 4;
|
||||||
user = param->username;
|
user = param->username;
|
||||||
pass = param->password;
|
pass = param->password;
|
||||||
}
|
}
|
||||||
@ -415,15 +410,9 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
|
|||||||
else if(SAISNULL(&cur->addr) && !*SAPORT(&cur->addr)){
|
else if(SAISNULL(&cur->addr) && !*SAPORT(&cur->addr)){
|
||||||
int i;
|
int i;
|
||||||
if(cur->extuser){
|
if(cur->extuser){
|
||||||
if(param->extusername)
|
if(*cur->extuser == '*' && !*param->username) return 4;
|
||||||
free(param->extusername);
|
if(PARAMSTR(param, extusername, (*cur->extuser == '*')? param->username : cur->extuser)) return 21;
|
||||||
param->extusername = (unsigned char *)strdup((char *)((*cur->extuser == '*' && param->username)? param->username : cur->extuser));
|
if(cur->extpass && PARAMSTR(param, extpassword, (*cur->extuser == '*' && *param->password)?param->password : cur->extpass)) return 21;
|
||||||
if(cur->extpass){
|
|
||||||
if(param->extpassword)
|
|
||||||
free(param->extpassword);
|
|
||||||
param->extpassword = (unsigned char *)strdup((char *)((*cur->extuser == '*' && param->password)?param->password : cur->extpass));
|
|
||||||
}
|
|
||||||
if(*cur->extuser == '*' && !param->username) return 4;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i=0; redirs[i].name; i++){
|
for(i=0; redirs[i].name; i++){
|
||||||
@ -490,15 +479,9 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
|
|||||||
param->redirtype = redir->type;
|
param->redirtype = redir->type;
|
||||||
if(redir->type == R_TCP || redir->type ==R_HTTP) {
|
if(redir->type == R_TCP || redir->type ==R_HTTP) {
|
||||||
if(cur->extuser){
|
if(cur->extuser){
|
||||||
if(*cur -> extuser == '*' && !param->username) return 4;
|
if(*cur -> extuser == '*' && !*param->username) return 4;
|
||||||
if(param->extusername)
|
if(PARAMSTR(param, extusername, (*cur->extuser == '*')? param->username : cur->extuser)) return 21;
|
||||||
free(param->extusername);
|
if(cur->extpass && PARAMSTR(param, extpassword, (*cur->extuser == '*' && *param->password)?param->password : cur->extpass)) return 21;
|
||||||
param->extusername = (unsigned char *)strdup((char *)((*cur->extuser == '*' && param->username)? param->username : cur->extuser));
|
|
||||||
if(cur->extpass){
|
|
||||||
if(param->extpassword)
|
|
||||||
free(param->extpassword);
|
|
||||||
param->extpassword = (unsigned char *)strdup((char *)((*cur->extuser == '*' && param->password)?param->password : cur->extpass));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(redir->secure) return ssl_parent(param);
|
if(redir->secure) return ssl_parent(param);
|
||||||
return 0;
|
return 0;
|
||||||
@ -507,7 +490,7 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(!connected || !redir) return 0;
|
if(!connected || !redir) return 0;
|
||||||
res = clientnegotiate(redir, param, (struct sockaddr *)¶m->req, param->hostname);
|
res = clientnegotiate(redir, param, (struct sockaddr *)¶m->req, *param->hostname? param->hostname : NULL);
|
||||||
if(res) parentfail(param, redir);
|
if(res) parentfail(param, redir);
|
||||||
if(saved){
|
if(saved){
|
||||||
SOCKET s;
|
SOCKET s;
|
||||||
|
|||||||
@ -201,8 +201,8 @@ uint32_t udpresolve(int af, unsigned char * name, unsigned char * value, uint32_
|
|||||||
s2 = s1;
|
s2 = s1;
|
||||||
}
|
}
|
||||||
*s2 = 0;
|
*s2 = 0;
|
||||||
if(param->username)free(param->username);
|
/* a name longer than the field is no name to authenticate */
|
||||||
param->username = (unsigned char *)strdup ((char *)buf + k + 13);
|
if(PARAMSTR(param, username, buf + k + 13)) return 0;
|
||||||
|
|
||||||
return udpresolve(af,param->username, value, NULL, NULL, 2);
|
return udpresolve(af,param->username, value, NULL, NULL, 2);
|
||||||
}
|
}
|
||||||
|
|||||||
54
src/smtpp.c
54
src/smtpp.c
@ -33,26 +33,26 @@ int readreply (struct clientparam* param) {
|
|||||||
unsigned char * buf;
|
unsigned char * buf;
|
||||||
int res, i, bufsize = 640;
|
int res, i, bufsize = 640;
|
||||||
|
|
||||||
if(!(buf = malloc(bufsize))) return 0;
|
buf = param->tmpbuf; /* a filter may replace it with one of its own */
|
||||||
do {
|
do {
|
||||||
i = sockgetlinebuf(param, SERVER, buf, bufsize-1, '\n', conf.timeouts[STRING_L]);
|
i = sockgetlinebuf(param, SERVER, buf, bufsize-1, '\n', conf.timeouts[STRING_L]);
|
||||||
if(i < 1) break;
|
if(i < 1) break;
|
||||||
#ifndef WITHMAIN
|
#ifndef WITHMAIN
|
||||||
res = handlehdrfilterssrv(param, &buf, &bufsize, 0, &i);
|
res = handlehdrfilterssrv(param, &buf, &bufsize, 0, &i);
|
||||||
if(res != PASS) {
|
if(res != PASS) {
|
||||||
free(buf);
|
if(buf != param->tmpbuf) free(buf);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
socksend(param, param->clisock, buf, i, conf.timeouts[STRING_S]);
|
socksend(param, param->clisock, buf, i, conf.timeouts[STRING_S]);
|
||||||
} while (i > 3 && buf[3] == '-');
|
} while (i > 3 && buf[3] == '-');
|
||||||
if(i < 3) {
|
if(i < 3) {
|
||||||
free(buf);
|
if(buf != param->tmpbuf) free(buf);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
buf[i] = 0;
|
buf[i] = 0;
|
||||||
res = atoi((char *)buf);
|
res = atoi((char *)buf);
|
||||||
free(buf);
|
if(buf != param->tmpbuf) free(buf);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,14 +64,14 @@ int readcommand (struct clientparam* param) {
|
|||||||
#endif
|
#endif
|
||||||
int ret = 1;
|
int ret = 1;
|
||||||
|
|
||||||
if(!(buf = malloc(bufsize))) return 0;
|
buf = param->tmpbuf; /* a filter may replace it with one of its own */
|
||||||
i = sockgetlinebuf(param, CLIENT, buf, bufsize-1, '\n', conf.timeouts[STRING_L]);
|
i = sockgetlinebuf(param, CLIENT, buf, bufsize-1, '\n', conf.timeouts[STRING_L]);
|
||||||
if(i < 4) return 0;
|
if(i < 4) return 0;
|
||||||
#ifndef WITHMAIN
|
#ifndef WITHMAIN
|
||||||
if(!strncasecmp((char *)buf, "MAIL", 4) || !strncasecmp((char *)buf, "RCPT", 4) || !strncasecmp((char *)buf, "STARTTLS", 8) || !strncasecmp((char *)buf, "TURN", 4)){
|
if(!strncasecmp((char *)buf, "MAIL", 4) || !strncasecmp((char *)buf, "RCPT", 4) || !strncasecmp((char *)buf, "STARTTLS", 8) || !strncasecmp((char *)buf, "TURN", 4)){
|
||||||
res = handlehdrfilterscli(param, &buf, &bufsize, 0, &i);
|
res = handlehdrfilterscli(param, &buf, &bufsize, 0, &i);
|
||||||
if(res != PASS) {
|
if(res != PASS) {
|
||||||
free(buf);
|
if(buf != param->tmpbuf) free(buf);
|
||||||
if(res == HANDLED) return 2;
|
if(res == HANDLED) return 2;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -81,7 +81,7 @@ int readcommand (struct clientparam* param) {
|
|||||||
if(!strncasecmp((char *)buf, "STARTTLS", 8) || !strncasecmp((char *)buf, "TURN", 4)){
|
if(!strncasecmp((char *)buf, "STARTTLS", 8) || !strncasecmp((char *)buf, "TURN", 4)){
|
||||||
ret = 22;
|
ret = 22;
|
||||||
}
|
}
|
||||||
free(buf);
|
if(buf != param->tmpbuf) free(buf);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,12 +92,12 @@ int readdata (struct clientparam* param) {
|
|||||||
int res;
|
int res;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(!(buf = malloc(bufsize))) return 0;
|
buf = param->tmpbuf; /* a filter may replace it with one of its own */
|
||||||
while ((i = sockgetlinebuf(param, CLIENT, buf, bufsize-1, '\n', conf.timeouts[STRING_L])) > 0 && !(i==3 && buf[0] == '.')){
|
while ((i = sockgetlinebuf(param, CLIENT, buf, bufsize-1, '\n', conf.timeouts[STRING_L])) > 0 && !(i==3 && buf[0] == '.')){
|
||||||
#ifndef WITHMAIN
|
#ifndef WITHMAIN
|
||||||
res = handledatfltcli(param, &buf, &bufsize, 0, &i);
|
res = handledatfltcli(param, &buf, &bufsize, 0, &i);
|
||||||
if(res != PASS) {
|
if(res != PASS) {
|
||||||
free(buf);
|
if(buf != param->tmpbuf) free(buf);
|
||||||
if(res == HANDLED) return 1;
|
if(res == HANDLED) return 1;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -105,11 +105,11 @@ int readdata (struct clientparam* param) {
|
|||||||
socksend(param, param->remsock, buf, i, conf.timeouts[STRING_S]);
|
socksend(param, param->remsock, buf, i, conf.timeouts[STRING_S]);
|
||||||
}
|
}
|
||||||
if(i < 1) {
|
if(i < 1) {
|
||||||
free(buf);
|
if(buf != param->tmpbuf) free(buf);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
socksend(param, param->remsock, buf, i, conf.timeouts[STRING_S]);
|
socksend(param, param->remsock, buf, i, conf.timeouts[STRING_S]);
|
||||||
free(buf);
|
if(buf != param->tmpbuf) free(buf);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,7 +143,7 @@ void * smtppchild(struct clientparam* param) {
|
|||||||
return (void *)tlsprchild;
|
return (void *)tlsprchild;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else if(!param->hostname) socksend(param, param->clisock, (unsigned char *)"571 need AUTH first\r\n", 22, conf.timeouts[STRING_S]);
|
else if(!*param->hostname) socksend(param, param->clisock, (unsigned char *)"571 need AUTH first\r\n", 22, conf.timeouts[STRING_S]);
|
||||||
else {
|
else {
|
||||||
login = -1;
|
login = -1;
|
||||||
buf[i] = 0;
|
buf[i] = 0;
|
||||||
@ -172,8 +172,7 @@ void * smtppchild(struct clientparam* param) {
|
|||||||
i = de64(buf,username,255);
|
i = de64(buf,username,255);
|
||||||
if(i < 0) {RETURN(666);}
|
if(i < 0) {RETURN(666);}
|
||||||
username[i] = 0;
|
username[i] = 0;
|
||||||
if(param->extpassword) free(param->extpassword);
|
if(PARAMSTR(param, extpassword, username)) {RETURN(666);}
|
||||||
param->extpassword = (unsigned char *)strdup((char *)username);
|
|
||||||
}
|
}
|
||||||
else if(login == 2){
|
else if(login == 2){
|
||||||
if(i > 13) {
|
if(i > 13) {
|
||||||
@ -192,16 +191,23 @@ void * smtppchild(struct clientparam* param) {
|
|||||||
if(parseconnusername((char *)username+1, param, 0, 587)) {RETURN(670);}
|
if(parseconnusername((char *)username+1, param, 0, 587)) {RETURN(670);}
|
||||||
res = (int)strlen((char *)username+1) + 2;
|
res = (int)strlen((char *)username+1) + 2;
|
||||||
if(res < i){
|
if(res < i){
|
||||||
if(param->extpassword) free(param->extpassword);
|
if(PARAMSTR(param, extpassword, username + res)) {RETURN(670);}
|
||||||
param->extpassword = (unsigned char *)strdup((char *)username + res);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef WITHMAIN
|
#ifndef WITHMAIN
|
||||||
{
|
{
|
||||||
|
/* the host is filtered as a request, in the scratch buffer, where a
|
||||||
|
filter may also hand back a buffer of its own */
|
||||||
int action, reqbufsize, reqsize;
|
int action, reqbufsize, reqsize;
|
||||||
reqbufsize = reqsize = (int)strlen((char *)param->hostname) + 1;
|
unsigned char *req = param->tmpbuf;
|
||||||
action = handlereqfilters(param, ¶m->hostname, &reqbufsize, 0, &reqsize);
|
|
||||||
|
reqsize = (int)strlen((char *)param->hostname) + 1;
|
||||||
|
reqbufsize = CLIENTTMPBUFSIZE;
|
||||||
|
memcpy(req, param->hostname, reqsize);
|
||||||
|
action = handlereqfilters(param, &req, &reqbufsize, 0, &reqsize);
|
||||||
|
if(action == PASS && PARAMSTR(param, hostname, req)) action = REJECT;
|
||||||
|
if(req != param->tmpbuf) free(req);
|
||||||
if(action == HANDLED){
|
if(action == HANDLED){
|
||||||
RETURN(0);
|
RETURN(0);
|
||||||
}
|
}
|
||||||
@ -232,8 +238,8 @@ void * smtppchild(struct clientparam* param) {
|
|||||||
|
|
||||||
} while (i > 3 && buf[3] == '-');
|
} while (i > 3 && buf[3] == '-');
|
||||||
if(i<3) {RETURN(672);}
|
if(i<3) {RETURN(672);}
|
||||||
if(!command || (param->extusername && param->extpassword)){
|
if(!command || (*param->extusername && *param->extpassword)){
|
||||||
if(!param->extusername || !*param->extusername || !param->extpassword || !*param->extpassword || !login){
|
if(!*param->extusername || !*param->extpassword || !login){
|
||||||
socksend(param, param->clisock, (unsigned char *)"235 auth required\r\n", 19,conf.timeouts[STRING_S]);
|
socksend(param, param->clisock, (unsigned char *)"235 auth required\r\n", 19,conf.timeouts[STRING_S]);
|
||||||
}
|
}
|
||||||
if ((login & 1)) {
|
if ((login & 1)) {
|
||||||
@ -285,9 +291,9 @@ void * smtppchild(struct clientparam* param) {
|
|||||||
res = 1;
|
res = 1;
|
||||||
#ifndef WITHMAIN
|
#ifndef WITHMAIN
|
||||||
if(!strncasecmp(command, "MAIL", 4) || !strncasecmp(command, "RCPT", 4) || !strncasecmp(command, "STARTTLS", 8) || !strncasecmp(command, "TURN", 4)){
|
if(!strncasecmp(command, "MAIL", 4) || !strncasecmp(command, "RCPT", 4) || !strncasecmp(command, "STARTTLS", 8) || !strncasecmp(command, "TURN", 4)){
|
||||||
res = (int)strlen(command);
|
int clen = (int)strlen(command), csize = clen + 1;
|
||||||
command[res] = 0;
|
|
||||||
res = handlehdrfilterscli(param, (unsigned char **)&command, &res, 0, &res);
|
res = handlehdrfilterscli(param, (unsigned char **)&command, &csize, 0, &clen);
|
||||||
if(res != PASS) {
|
if(res != PASS) {
|
||||||
if(res == HANDLED) res = 2;
|
if(res == HANDLED) res = 2;
|
||||||
else RETURN(677);
|
else RETURN(677);
|
||||||
@ -321,7 +327,7 @@ void * smtppchild(struct clientparam* param) {
|
|||||||
|
|
||||||
CLEANRET:
|
CLEANRET:
|
||||||
|
|
||||||
if(param->hostname&¶m->extusername) {
|
if(*param->hostname&&*param->extusername) {
|
||||||
sprintf((char *)buf, "%.128s@%.128s%c%hu", param->extusername, param->hostname, *SAPORT(¶m->sinsr)==587?0:':',ntohs(*SAPORT(¶m->sinsr)));
|
sprintf((char *)buf, "%.128s@%.128s%c%hu", param->extusername, param->hostname, *SAPORT(¶m->sinsr)==587?0:':',ntohs(*SAPORT(¶m->sinsr)));
|
||||||
dolog(param, buf);
|
dolog(param, buf);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -70,112 +70,122 @@ int sockrecvfrom(struct clientparam *param, SOCKET sock, struct sockaddr * sin,
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sockgetcharcli(struct clientparam * param, int timeosec, int timeousec){
|
/* Starts an empty buffer over from its beginning, and goes back to the
|
||||||
int len;
|
connection's own buffer if a filter needed a bigger one. Does nothing
|
||||||
|
while anything is left unread. */
|
||||||
if(!param->clibuf){
|
void bufrelease(struct clientparam * param, DIRECTION which){
|
||||||
if(!(param->clibuf = malloc(SRVBUFSIZE))) return 0;
|
if(which){
|
||||||
param->clibufsize = SRVBUFSIZE;
|
if(param->srvinbuf != param->srvoffset) return;
|
||||||
param->clioffset = param->cliinbuf = 0;
|
param->srvinbuf = param->srvoffset = 0;
|
||||||
|
if(param->srvbuf == param->srvbufdata) return;
|
||||||
|
free(param->srvbuf);
|
||||||
|
param->srvbuf = param->srvbufdata;
|
||||||
|
param->srvbufsize = SRVBUFSIZE(param->srv);
|
||||||
}
|
}
|
||||||
if(param->cliinbuf && param->clioffset < param->cliinbuf){
|
else {
|
||||||
return (int)param->clibuf[param->clioffset++];
|
if(param->cliinbuf != param->clioffset) return;
|
||||||
|
param->cliinbuf = param->clioffset = 0;
|
||||||
|
if(param->clibuf == param->clibufdata) return;
|
||||||
|
free(param->clibuf);
|
||||||
|
param->clibuf = param->clibufdata;
|
||||||
|
param->clibufsize = SRVBUFSIZE(param->srv);
|
||||||
}
|
}
|
||||||
param->clioffset = param->cliinbuf = 0;
|
|
||||||
if ((len = sockrecvfrom(param, param->clisock, (struct sockaddr *)¶m->sincr, param->clibuf, param->clibufsize, timeosec*1000 + timeousec))<=0) return EOF;
|
|
||||||
param->cliinbuf = len;
|
|
||||||
param->clioffset = 1;
|
|
||||||
return (int)*param->clibuf;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Put bytes back in front of whatever the client has not been read yet, so a
|
/* Makes room for size bytes from the start of what is unread, which is
|
||||||
service which has already taken a request off the socket can hand it to
|
moved there: a body to be filtered whole is read into one buffer, which
|
||||||
another one, which reads it the way it reads anything else. */
|
may have to be bigger than the connection's own. Returns 1 when that
|
||||||
int pushbackcli(struct clientparam * param, const unsigned char * data, int len){
|
much cannot be had. */
|
||||||
unsigned left = 0;
|
int bufroom(struct clientparam * param, DIRECTION which, unsigned long size){
|
||||||
unsigned need;
|
unsigned char **buf = which? ¶m->srvbuf : ¶m->clibuf;
|
||||||
|
unsigned char *own = which? param->srvbufdata : param->clibufdata;
|
||||||
|
unsigned *inbuf = which? ¶m->srvinbuf : ¶m->cliinbuf;
|
||||||
|
unsigned *offset = which? ¶m->srvoffset : ¶m->clioffset;
|
||||||
|
unsigned *bufsize = which? ¶m->srvbufsize : ¶m->clibufsize;
|
||||||
|
unsigned left = *inbuf - *offset;
|
||||||
|
unsigned char *nb;
|
||||||
|
|
||||||
if(len <= 0) return 0;
|
if(*offset){
|
||||||
if(param->clibuf) left = param->cliinbuf - param->clioffset;
|
memmove(*buf, *buf + *offset, left);
|
||||||
need = (unsigned)len + left;
|
*inbuf = left;
|
||||||
|
*offset = 0;
|
||||||
if(!param->clibuf){
|
|
||||||
if(!(param->clibuf = malloc(need > SRVBUFSIZE? need : SRVBUFSIZE))) return 1;
|
|
||||||
param->clibufsize = need > SRVBUFSIZE? need : SRVBUFSIZE;
|
|
||||||
}
|
}
|
||||||
else if(param->clibufsize < need){
|
if(size <= *bufsize) return 0;
|
||||||
unsigned char *nb = realloc(param->clibuf, need);
|
if((unsigned long)(unsigned)size != size || !(nb = malloc(size))) return 1;
|
||||||
|
memcpy(nb, *buf, left);
|
||||||
if(!nb) return 1;
|
if(*buf != own) free(*buf);
|
||||||
param->clibuf = nb;
|
*buf = nb;
|
||||||
param->clibufsize = need;
|
*bufsize = (unsigned)size;
|
||||||
}
|
|
||||||
if(left) memmove(param->clibuf + len, param->clibuf + param->clioffset, left);
|
|
||||||
memcpy(param->clibuf, data, (size_t)len);
|
|
||||||
param->clioffset = 0;
|
|
||||||
param->cliinbuf = need;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long sockfillbuffcli(struct clientparam * param, unsigned long size, int timeosec){
|
int sockgetcharcli(struct clientparam * param, int timeosec, int timeousec){
|
||||||
int len;
|
int len;
|
||||||
|
unsigned keep = 0;
|
||||||
|
|
||||||
if(!param->clibuf) return 0;
|
if(param->cliinbuf && param->clioffset < param->cliinbuf){
|
||||||
if(param->cliinbuf == param->clioffset){
|
return (int)param->clibuf[param->clioffset++];
|
||||||
param->cliinbuf = param->clioffset = 0;
|
|
||||||
}
|
}
|
||||||
else if(param->clioffset){
|
if(param->climark == -2) return EOF; /* nothing more until it is cleared */
|
||||||
memmove(param->clibuf, param->clibuf + param->clioffset, param->cliinbuf - param->clioffset);
|
if(param->climark >= 0){
|
||||||
param->cliinbuf -= param->clioffset;
|
/* what was read since the mark stays, moved to the start */
|
||||||
param->clioffset = 0;
|
keep = param->cliinbuf - (unsigned)param->climark;
|
||||||
|
if(param->climark) memmove(param->clibuf, param->clibuf + param->climark, keep);
|
||||||
|
param->climark = 0;
|
||||||
|
param->clioffset = param->cliinbuf = keep;
|
||||||
|
if(keep >= param->clibufsize){
|
||||||
|
param->climark = -2;
|
||||||
|
return EOF;
|
||||||
}
|
}
|
||||||
if(size <= param->cliinbuf) return size;
|
|
||||||
size -= param->cliinbuf;
|
|
||||||
if((len = sockrecvfrom(param, param->clisock, (struct sockaddr *)¶m->sincr, param->clibuf + param->cliinbuf, (param->clibufsize - param->cliinbuf) < size? param->clibufsize - param->cliinbuf:size, timeosec*1000)) > 0){
|
|
||||||
param->cliinbuf += len;
|
|
||||||
}
|
}
|
||||||
return param->cliinbuf;
|
else bufrelease(param, CLIENT);
|
||||||
|
if ((len = sockrecvfrom(param, param->clisock, (struct sockaddr *)¶m->sincr, param->clibuf + keep, param->clibufsize - keep, timeosec*1000 + timeousec))<=0) return EOF;
|
||||||
|
param->cliinbuf = keep + len;
|
||||||
|
param->clioffset = keep + 1;
|
||||||
|
return (int)param->clibuf[keep];
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long sockfillbuffsrv(struct clientparam * param, unsigned long size, int timeosec){
|
/* Waits until size bytes are in the buffer, from its start, without taking
|
||||||
|
them: for a look at what comes before it is read the usual way, or for
|
||||||
|
something which has to be had whole. Stops short at the end of the
|
||||||
|
buffer, at the end of the stream, or when nothing comes in time; returns
|
||||||
|
how much is there, at most size. */
|
||||||
|
unsigned long sockfillbuf(struct clientparam * param, DIRECTION which, unsigned long size, int timeosec){
|
||||||
|
unsigned char *buf = which? param->srvbuf : param->clibuf;
|
||||||
|
unsigned *inbuf = which? ¶m->srvinbuf : ¶m->cliinbuf;
|
||||||
|
unsigned *offset = which? ¶m->srvoffset : ¶m->clioffset;
|
||||||
|
unsigned bufsize = which? param->srvbufsize : param->clibufsize;
|
||||||
|
unsigned want;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
if(!param->srvbuf) return 0;
|
if(*offset){
|
||||||
if(param->srvinbuf == param->srvoffset){
|
memmove(buf, buf + *offset, *inbuf - *offset);
|
||||||
param->srvinbuf = param->srvoffset = 0;
|
*inbuf -= *offset;
|
||||||
|
*offset = 0;
|
||||||
}
|
}
|
||||||
else if(param->srvoffset){
|
while(*inbuf < size && *inbuf < bufsize){
|
||||||
memmove(param->srvbuf, param->srvbuf + param->srvoffset, param->srvinbuf - param->srvoffset);
|
want = (size - *inbuf < bufsize - *inbuf)? (unsigned)(size - *inbuf) : bufsize - *inbuf;
|
||||||
param->srvinbuf -= param->srvoffset;
|
len = which?
|
||||||
param->srvoffset = 0;
|
sockrecvfrom(param, param->remsock, (struct sockaddr *)¶m->sinsr, buf + *inbuf, (int)want, timeosec*1000)
|
||||||
}
|
: sockrecvfrom(param, param->clisock, (struct sockaddr *)¶m->sincr, buf + *inbuf, (int)want, timeosec*1000);
|
||||||
if(size <= param->srvinbuf) return size;
|
if(len <= 0) break;
|
||||||
size -= param->srvinbuf;
|
*inbuf += len;
|
||||||
if((len = sockrecvfrom(param, param->remsock, (struct sockaddr *)¶m->sinsr, param->srvbuf + param->srvinbuf, (param->srvbufsize - param->srvinbuf) < size? param->srvbufsize - param->srvinbuf:size, timeosec*1000)) > 0){
|
if(which){
|
||||||
param->srvinbuf += len;
|
|
||||||
param->nreads++;
|
param->nreads++;
|
||||||
param->statssrv64 += len;
|
param->statssrv64 += len;
|
||||||
}
|
}
|
||||||
return param->srvinbuf;
|
}
|
||||||
|
return *inbuf < size? *inbuf : size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int sockgetcharsrv(struct clientparam * param, int timeosec, int timeousec){
|
int sockgetcharsrv(struct clientparam * param, int timeosec, int timeousec){
|
||||||
int len;
|
int len;
|
||||||
int bufsize;
|
|
||||||
|
|
||||||
if(!param->srvbuf){
|
|
||||||
bufsize = SRVBUFSIZE;
|
|
||||||
if(param->ndatfilterssrv > 0 && bufsize < 32768) bufsize = 32768;
|
|
||||||
if(!(param->srvbuf = malloc(bufsize))) return 0;
|
|
||||||
param->srvbufsize = bufsize;
|
|
||||||
param->srvoffset = param->srvinbuf = 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
if(param->srvinbuf && param->srvoffset < param->srvinbuf){
|
if(param->srvinbuf && param->srvoffset < param->srvinbuf){
|
||||||
return (int)param->srvbuf[param->srvoffset++];
|
return (int)param->srvbuf[param->srvoffset++];
|
||||||
}
|
}
|
||||||
param->srvoffset = param->srvinbuf = 0;
|
bufrelease(param, SERVER);
|
||||||
if ((len = sockrecvfrom(param, param->remsock, (struct sockaddr *)¶m->sinsr, param->srvbuf, param->srvbufsize, timeosec*1000 + timeousec))<=0) return EOF;
|
if ((len = sockrecvfrom(param, param->remsock, (struct sockaddr *)¶m->sinsr, param->srvbuf, param->srvbufsize, timeosec*1000 + timeousec))<=0) return EOF;
|
||||||
param->srvinbuf = len;
|
param->srvinbuf = len;
|
||||||
param->srvoffset = 1;
|
param->srvoffset = 1;
|
||||||
|
|||||||
185
src/sockmap.c
185
src/sockmap.c
@ -39,6 +39,18 @@ ssize_t splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t le
|
|||||||
|
|
||||||
#define MAXSPLICE 65536
|
#define MAXSPLICE 65536
|
||||||
|
|
||||||
|
/* With SPLICE_AUTO, when a direction allowed to splice actually does
|
||||||
|
(without it, an allowed direction always does).
|
||||||
|
A body of known length is spliced if at least SPLICE_MIN of it is left
|
||||||
|
to read once what is already buffered is counted: a smaller one, or one
|
||||||
|
read whole with its headers, is cheaper to copy.
|
||||||
|
A stream of unknown length starts copied and is spliced after
|
||||||
|
SPLICE_STREAK reads in a row of at least SPLICE_MIN each, and goes back to
|
||||||
|
copying after SPLICE_STREAK+1 splices in a row of less than SPLICE_SMALL. */
|
||||||
|
#define SPLICE_MIN 16384
|
||||||
|
#define SPLICE_SMALL 4096
|
||||||
|
#define SPLICE_STREAK 2
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MIN(a,b) ((a>b)?b:a)
|
#define MIN(a,b) ((a>b)?b:a)
|
||||||
@ -49,6 +61,9 @@ ssize_t splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t le
|
|||||||
before the sockets are closed. */
|
before the sockets are closed. */
|
||||||
#define SESSIONEND (!halfclose && (CLIENTTERMREAD || SERVERTERMREAD))
|
#define SESSIONEND (!halfclose && (CLIENTTERMREAD || SERVERTERMREAD))
|
||||||
|
|
||||||
|
/* usesplice is a mask of the directions passed with splice() rather than
|
||||||
|
through a buffer: SPLICE_DOWNLOAD, server to client, and SPLICE_UPLOAD,
|
||||||
|
client to server. */
|
||||||
int sockmap(struct clientparam * param, int timeo, int usesplice){
|
int sockmap(struct clientparam * param, int timeo, int usesplice){
|
||||||
int halfclose = param->srv->halfclose;
|
int halfclose = param->srv->halfclose;
|
||||||
uint64_t fromclient=0x7fffffffffffffff, fromserver =0x7fffffffffffffff;
|
uint64_t fromclient=0x7fffffffffffffff, fromserver =0x7fffffffffffffff;
|
||||||
@ -76,16 +91,30 @@ int sockmap(struct clientparam * param, int timeo, int usesplice){
|
|||||||
#ifdef WITHSPLICE
|
#ifdef WITHSPLICE
|
||||||
uint64_t inclientpipe = 0, inserverpipe = 0;
|
uint64_t inclientpipe = 0, inserverpipe = 0;
|
||||||
int TOCLIENTPIPE = 0, FROMCLIENTPIPE = 0, TOSERVERPIPE = 0, FROMSERVERPIPE = 0;
|
int TOCLIENTPIPE = 0, FROMCLIENTPIPE = 0, TOSERVERPIPE = 0, FROMSERVERPIPE = 0;
|
||||||
int pipesrv[2] = {-1,-1};
|
/* The client's data goes through pipecli, the server's through pipesrv.
|
||||||
int pipecli[2] = {-1,-1};
|
They belong to the connection: made when first needed, kept for the
|
||||||
|
next mapping, closed with the connection. */
|
||||||
|
int *pipecli = param->pipecli, *pipesrv = param->pipesrv;
|
||||||
|
/* allowed to splice (-s), splicing now, and a run of reads counted
|
||||||
|
towards switching; wantbuf: go back to copying once the pipe is empty */
|
||||||
|
int allowcli = 0, allowsrv = 0, splicecli = 0, splicesrv = 0, autosplice;
|
||||||
|
int streakcli = 0, streaksrv = 0, wantbufcli = 0, wantbufsrv = 0;
|
||||||
|
|
||||||
if((!param->nolongdatfilter && (param->ndatfilterscli > 0 || param->ndatfilterssrv))) usesplice = 0;
|
if((!param->nolongdatfilter && (param->ndatfilterscli > 0 || param->ndatfilterssrv))) usesplice = 0;
|
||||||
if(usesplice){
|
allowcli = (usesplice & SPLICE_UPLOAD) != 0;
|
||||||
TOCLIENTPIPE = FROMCLIENTPIPE = TOSERVERPIPE = FROMSERVERPIPE = 1;
|
allowsrv = (usesplice & SPLICE_DOWNLOAD) != 0;
|
||||||
TOCLIENTBUF = TOSERVERBUF = 0;
|
autosplice = (usesplice & SPLICE_AUTO) != 0;
|
||||||
if(pipe2(pipecli, O_NONBLOCK) < 0) RETURN (21);
|
if(!autosplice){
|
||||||
if(pipe2(pipesrv, O_NONBLOCK) < 0) RETURN (21);
|
splicecli = allowcli;
|
||||||
|
splicesrv = allowsrv;
|
||||||
}
|
}
|
||||||
|
TOCLIENTPIPE = FROMCLIENTPIPE = allowcli;
|
||||||
|
TOSERVERPIPE = FROMSERVERPIPE = allowsrv;
|
||||||
|
#else
|
||||||
|
#define splicecli 0
|
||||||
|
#define splicesrv 0
|
||||||
|
#define wantbufcli 0
|
||||||
|
#define wantbufsrv 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
inserverbuf = param->srvinbuf - param->srvoffset;
|
inserverbuf = param->srvinbuf - param->srvoffset;
|
||||||
@ -108,17 +137,10 @@ int sockmap(struct clientparam * param, int timeo, int usesplice){
|
|||||||
if(inserverbuf >= fromserver) FROMSERVER = 0;
|
if(inserverbuf >= fromserver) FROMSERVER = 0;
|
||||||
if(inclientbuf >= fromclient) FROMCLIENT = 0;
|
if(inclientbuf >= fromclient) FROMCLIENT = 0;
|
||||||
#ifdef WITHSPLICE
|
#ifdef WITHSPLICE
|
||||||
if(!usesplice)
|
/* a body of known length large enough is spliced from the start */
|
||||||
|
if(autosplice && allowsrv && param->waitserver64 && fromserver > inserverbuf && fromserver - inserverbuf >= SPLICE_MIN) splicesrv = 1;
|
||||||
|
if(autosplice && allowcli && param->waitclient64 && fromclient > inclientbuf && fromclient - inclientbuf >= SPLICE_MIN) splicecli = 1;
|
||||||
#endif
|
#endif
|
||||||
{
|
|
||||||
if(fromserver && !param->srvbuf && (!(param->srvbuf=malloc(SRVBUFSIZE)) || !(param->srvbufsize = SRVBUFSIZE))){
|
|
||||||
RETURN (21);
|
|
||||||
}
|
|
||||||
if(fromclient && !param->clibuf && (!(param->clibuf=malloc(SRVBUFSIZE)) || !(param->clibufsize = SRVBUFSIZE))){
|
|
||||||
RETURN (21);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
if(param->srvinbuf == param->srvoffset) param->srvinbuf =param->srvoffset = 0;
|
if(param->srvinbuf == param->srvoffset) param->srvinbuf =param->srvoffset = 0;
|
||||||
if(param->cliinbuf == param->clioffset) param->cliinbuf =param->clioffset = 0;
|
if(param->cliinbuf == param->clioffset) param->cliinbuf =param->clioffset = 0;
|
||||||
if(param->clibufsize == param->cliinbuf) TOCLIENTBUF = 0;
|
if(param->clibufsize == param->cliinbuf) TOCLIENTBUF = 0;
|
||||||
@ -239,7 +261,7 @@ log("done send to server from buf");
|
|||||||
inclientbuf -= res;
|
inclientbuf -= res;
|
||||||
fromclient -= res;
|
fromclient -= res;
|
||||||
param->clioffset += res;
|
param->clioffset += res;
|
||||||
if(param->clioffset == param->cliinbuf)param->clioffset = param->cliinbuf = 0;
|
bufrelease(param, CLIENT);
|
||||||
if(param->cliinbuf < param->clibufsize) TOCLIENTBUF = 1;
|
if(param->cliinbuf < param->clibufsize) TOCLIENTBUF = 1;
|
||||||
if(param->bandlimfunc) {
|
if(param->bandlimfunc) {
|
||||||
int sl1;
|
int sl1;
|
||||||
@ -285,15 +307,26 @@ log("done send to client from buf");
|
|||||||
inserverbuf -= res;
|
inserverbuf -= res;
|
||||||
fromserver -= res;
|
fromserver -= res;
|
||||||
param->srvoffset += res;
|
param->srvoffset += res;
|
||||||
if(param->srvoffset == param->srvinbuf)param->srvoffset = param->srvinbuf =0;
|
bufrelease(param, SERVER);
|
||||||
if(param->srvinbuf < param->srvbufsize) TOSERVERBUF = 1;
|
if(param->srvinbuf < param->srvbufsize) TOSERVERBUF = 1;
|
||||||
needaction = 0;
|
needaction = 0;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef WITHSPLICE
|
#ifdef WITHSPLICE
|
||||||
if(usesplice){
|
/* a direction going back to copying does once its pipe is empty */
|
||||||
if(inclientpipe && !inclientbuf && FROMCLIENTPIPE && TOSERVER){
|
if(wantbufcli && !inclientpipe){
|
||||||
|
splicecli = wantbufcli = streakcli = 0;
|
||||||
|
if(param->cliinbuf < param->clibufsize) TOCLIENTBUF = 1;
|
||||||
|
}
|
||||||
|
if(wantbufsrv && !inserverpipe){
|
||||||
|
splicesrv = wantbufsrv = streaksrv = 0;
|
||||||
|
if(param->srvinbuf < param->srvbufsize) TOSERVERBUF = 1;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
/* each direction goes through its pipe if spliced, through its
|
||||||
|
buffer otherwise; what was in the buffer before is sent first */
|
||||||
|
if(splicecli && inclientpipe && !inclientbuf && FROMCLIENTPIPE && TOSERVER){
|
||||||
#ifdef WITHLOG
|
#ifdef WITHLOG
|
||||||
log("send to server from pipe");
|
log("send to server from pipe");
|
||||||
#endif
|
#endif
|
||||||
@ -330,7 +363,7 @@ log(logbuf);
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(inserverpipe && !inserverbuf && FROMSERVERPIPE && TOCLIENT){
|
if(splicesrv && inserverpipe && !inserverbuf && FROMSERVERPIPE && TOCLIENT){
|
||||||
#ifdef WITHLOG
|
#ifdef WITHLOG
|
||||||
log("send to client from pipe");
|
log("send to client from pipe");
|
||||||
#endif
|
#endif
|
||||||
@ -360,12 +393,16 @@ log(logbuf);
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(fromclient>inclientpipe && FROMCLIENT && TOCLIENTPIPE && !SESSIONEND){
|
if(splicecli && !wantbufcli && fromclient>inclientpipe && FROMCLIENT && TOCLIENTPIPE && !SESSIONEND){
|
||||||
int error;
|
|
||||||
socklen_t len=sizeof(error);
|
|
||||||
#ifdef WITHLOG
|
#ifdef WITHLOG
|
||||||
log("read from client to pipe");
|
log("read from client to pipe");
|
||||||
#endif
|
#endif
|
||||||
|
if(pipecli[0] < 0 && pipe2(pipecli, O_NONBLOCK) < 0){
|
||||||
|
/* no pipe to be had: copy instead */
|
||||||
|
allowcli = splicecli = TOCLIENTPIPE = FROMCLIENTPIPE = 0;
|
||||||
|
if(param->cliinbuf < param->clibufsize) TOCLIENTBUF = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
errno = 0;
|
errno = 0;
|
||||||
res = splice(param->clisock, NULL, pipecli[1], NULL, (int)MIN((uint64_t)MAXSPLICE - inclientpipe, (uint64_t)fromclient-inclientpipe), SPLICE_F_NONBLOCK|SPLICE_F_MOVE);
|
res = splice(param->clisock, NULL, pipecli[1], NULL, (int)MIN((uint64_t)MAXSPLICE - inclientpipe, (uint64_t)fromclient-inclientpipe), SPLICE_F_NONBLOCK|SPLICE_F_MOVE);
|
||||||
#ifdef WITHLOG
|
#ifdef WITHLOG
|
||||||
@ -396,19 +433,26 @@ log("done read from client to pipe");
|
|||||||
graceclinum++;
|
graceclinum++;
|
||||||
graceclitraf += res;
|
graceclitraf += res;
|
||||||
gracesrvnum = gracesrvtraf = 0;
|
gracesrvnum = gracesrvtraf = 0;
|
||||||
|
if(autosplice && !param->waitclient64){
|
||||||
|
if(res >= SPLICE_SMALL) streakcli = 0;
|
||||||
|
else if(++streakcli > SPLICE_STREAK) wantbufcli = 1;
|
||||||
|
}
|
||||||
inclientpipe += res;
|
inclientpipe += res;
|
||||||
if(inclientpipe >= MAXSPLICE) TOCLIENTPIPE = 0;
|
if(inclientpipe >= MAXSPLICE) TOCLIENTPIPE = 0;
|
||||||
needaction = 0;
|
needaction = 0;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(fromserver > inserverpipe && FROMSERVER && TOSERVERPIPE && !SESSIONEND){
|
if(splicesrv && !wantbufsrv && fromserver > inserverpipe && FROMSERVER && TOSERVERPIPE && !SESSIONEND){
|
||||||
int error;
|
|
||||||
socklen_t len=sizeof(error);
|
|
||||||
errno = 0;
|
|
||||||
#ifdef WITHLOG
|
#ifdef WITHLOG
|
||||||
log("read from server to pipe\n");
|
log("read from server to pipe\n");
|
||||||
#endif
|
#endif
|
||||||
|
if(pipesrv[0] < 0 && pipe2(pipesrv, O_NONBLOCK) < 0){
|
||||||
|
allowsrv = splicesrv = TOSERVERPIPE = FROMSERVERPIPE = 0;
|
||||||
|
if(param->srvinbuf < param->srvbufsize) TOSERVERBUF = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
errno = 0;
|
||||||
res = splice(param->remsock, NULL, pipesrv[1], NULL, MIN(MAXSPLICE - inserverpipe, fromserver - inserverpipe), SPLICE_F_NONBLOCK|SPLICE_F_MOVE);
|
res = splice(param->remsock, NULL, pipesrv[1], NULL, MIN(MAXSPLICE - inserverpipe, fromserver - inserverpipe), SPLICE_F_NONBLOCK|SPLICE_F_MOVE);
|
||||||
#ifdef WITHLOG
|
#ifdef WITHLOG
|
||||||
log("server to pipe splice finished\n");
|
log("server to pipe splice finished\n");
|
||||||
@ -438,6 +482,10 @@ log("done read from server to pipe\n");
|
|||||||
gracesrvnum++;
|
gracesrvnum++;
|
||||||
gracesrvtraf += res;
|
gracesrvtraf += res;
|
||||||
graceclinum = graceclitraf = 0;
|
graceclinum = graceclitraf = 0;
|
||||||
|
if(autosplice && !param->waitserver64){
|
||||||
|
if(res >= SPLICE_SMALL) streaksrv = 0;
|
||||||
|
else if(++streaksrv > SPLICE_STREAK) wantbufsrv = 1;
|
||||||
|
}
|
||||||
param->nreads++;
|
param->nreads++;
|
||||||
param->statssrv64 += res;
|
param->statssrv64 += res;
|
||||||
inserverpipe += res;
|
inserverpipe += res;
|
||||||
@ -452,10 +500,9 @@ log("done read from server to pipe\n");
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if(fromclient > inclientbuf && FROMCLIENT && TOCLIENTBUF && !SESSIONEND){
|
if(!splicecli && fromclient > inclientbuf && FROMCLIENT && TOCLIENTBUF && !SESSIONEND){
|
||||||
#ifdef WITHLOG
|
#ifdef WITHLOG
|
||||||
log("read from client to buf");
|
log("read from client to buf");
|
||||||
#endif
|
#endif
|
||||||
@ -480,6 +527,17 @@ log("done read from client to buf");
|
|||||||
graceclinum++;
|
graceclinum++;
|
||||||
graceclitraf += res;
|
graceclitraf += res;
|
||||||
gracesrvnum = gracesrvtraf = 0;
|
gracesrvnum = gracesrvtraf = 0;
|
||||||
|
#ifdef WITHSPLICE
|
||||||
|
if(autosplice && allowcli && !param->waitclient64){
|
||||||
|
if(res < SPLICE_MIN) streakcli = 0;
|
||||||
|
else if(++streakcli >= SPLICE_STREAK){
|
||||||
|
/* a stream: splice from now on, after what is
|
||||||
|
buffered has been sent */
|
||||||
|
splicecli = TOCLIENTPIPE = FROMCLIENTPIPE = 1;
|
||||||
|
streakcli = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
inclientbuf += res;
|
inclientbuf += res;
|
||||||
param->cliinbuf += res;
|
param->cliinbuf += res;
|
||||||
if(param->clibufsize == param->cliinbuf) TOCLIENTBUF = 0;
|
if(param->clibufsize == param->cliinbuf) TOCLIENTBUF = 0;
|
||||||
@ -488,7 +546,7 @@ log("done read from client to buf");
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fromserver > inserverbuf && FROMSERVER && TOSERVERBUF && !SESSIONEND){
|
if(!splicesrv && fromserver > inserverbuf && FROMSERVER && TOSERVERBUF && !SESSIONEND){
|
||||||
#ifdef WITHLOG
|
#ifdef WITHLOG
|
||||||
log("read from server to buf");
|
log("read from server to buf");
|
||||||
#endif
|
#endif
|
||||||
@ -513,6 +571,15 @@ log("done read from server to buf");
|
|||||||
gracesrvnum++;
|
gracesrvnum++;
|
||||||
gracesrvtraf += res;
|
gracesrvtraf += res;
|
||||||
graceclinum = graceclitraf = 0;
|
graceclinum = graceclitraf = 0;
|
||||||
|
#ifdef WITHSPLICE
|
||||||
|
if(autosplice && allowsrv && !param->waitserver64){
|
||||||
|
if(res < SPLICE_MIN) streaksrv = 0;
|
||||||
|
else if(++streaksrv >= SPLICE_STREAK){
|
||||||
|
splicesrv = TOSERVERPIPE = FROMSERVERPIPE = 1;
|
||||||
|
streaksrv = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
param->nreads++;
|
param->nreads++;
|
||||||
param->statssrv64 += res;
|
param->statssrv64 += res;
|
||||||
inserverbuf += res;
|
inserverbuf += res;
|
||||||
@ -553,15 +620,8 @@ log("done read from server to buf");
|
|||||||
// if(!CLIENTTERMREAD || !CLIENTTERMWRITE){
|
// if(!CLIENTTERMREAD || !CLIENTTERMWRITE){
|
||||||
if(!after){
|
if(!after){
|
||||||
fds[fdsc].fd = param->clisock;
|
fds[fdsc].fd = param->clisock;
|
||||||
if(fromclient && !CLIENTTERMREAD && !FROMCLIENT && !SESSIONEND && ((
|
if(fromclient && !CLIENTTERMREAD && !FROMCLIENT && !SESSIONEND &&
|
||||||
#ifdef WITHSPLICE
|
((!splicecli && TOCLIENTBUF) || (splicecli && !wantbufcli)))
|
||||||
!usesplice &&
|
|
||||||
#endif
|
|
||||||
TOCLIENTBUF)
|
|
||||||
#ifdef WITHSPLICE
|
|
||||||
|| (usesplice)
|
|
||||||
#endif
|
|
||||||
))
|
|
||||||
cli_events |= POLLIN;
|
cli_events |= POLLIN;
|
||||||
if(!TOCLIENT && !CLIENTTERMWRITE && (inserverbuf
|
if(!TOCLIENT && !CLIENTTERMWRITE && (inserverbuf
|
||||||
#ifdef WITHSPLICE
|
#ifdef WITHSPLICE
|
||||||
@ -613,15 +673,8 @@ log("ready to write to client");
|
|||||||
// if(!SERVERTERMREAD || !SERVERTERMWRITE){
|
// if(!SERVERTERMREAD || !SERVERTERMWRITE){
|
||||||
if(!after){
|
if(!after){
|
||||||
fds[fdsc].fd = param->remsock;
|
fds[fdsc].fd = param->remsock;
|
||||||
if(fromserver && !SERVERTERMREAD && !FROMSERVER && !SESSIONEND && ((
|
if(fromserver && !SERVERTERMREAD && !FROMSERVER && !SESSIONEND &&
|
||||||
#ifdef WITHSPLICE
|
((!splicesrv && TOSERVERBUF) || (splicesrv && !wantbufsrv)))
|
||||||
!usesplice &&
|
|
||||||
#endif
|
|
||||||
TOSERVERBUF)
|
|
||||||
#ifdef WITHSPLICE
|
|
||||||
|| (usesplice)
|
|
||||||
#endif
|
|
||||||
))
|
|
||||||
srv_events |= POLLIN;
|
srv_events |= POLLIN;
|
||||||
if(!TOSERVER && !SERVERTERMWRITE && (inclientbuf
|
if(!TOSERVER && !SERVERTERMWRITE && (inclientbuf
|
||||||
#ifdef WITHSPLICE
|
#ifdef WITHSPLICE
|
||||||
@ -678,8 +731,8 @@ log("server terminated connection");
|
|||||||
fdsc++;
|
fdsc++;
|
||||||
// }
|
// }
|
||||||
#ifdef WITHSPLICE
|
#ifdef WITHSPLICE
|
||||||
if(usesplice){
|
{
|
||||||
if(fromclient>inclientpipe && !TOCLIENTPIPE && inclientpipe < MAXSPLICE){
|
if(splicecli && fromclient>inclientpipe && !TOCLIENTPIPE && inclientpipe < MAXSPLICE){
|
||||||
if(!after){
|
if(!after){
|
||||||
#ifdef WITHLOG
|
#ifdef WITHLOG
|
||||||
log("wait writing to client pipe");
|
log("wait writing to client pipe");
|
||||||
@ -700,7 +753,7 @@ log("ready to write to client pipe");
|
|||||||
}
|
}
|
||||||
fdsc++;
|
fdsc++;
|
||||||
}
|
}
|
||||||
if(inclientpipe && !FROMCLIENTPIPE){
|
if(splicecli && inclientpipe && !FROMCLIENTPIPE){
|
||||||
if(!after){
|
if(!after){
|
||||||
#ifdef WITHLOG
|
#ifdef WITHLOG
|
||||||
log("wait reading from client pipe");
|
log("wait reading from client pipe");
|
||||||
@ -719,7 +772,7 @@ log("ready reading from client pipe");
|
|||||||
}
|
}
|
||||||
fdsc++;
|
fdsc++;
|
||||||
}
|
}
|
||||||
if(fromserver>inserverpipe && !TOSERVERPIPE && inserverpipe < MAXSPLICE){
|
if(splicesrv && fromserver>inserverpipe && !TOSERVERPIPE && inserverpipe < MAXSPLICE){
|
||||||
if(!after){
|
if(!after){
|
||||||
#ifdef WITHLOG
|
#ifdef WITHLOG
|
||||||
log("wait writing to server pipe");
|
log("wait writing to server pipe");
|
||||||
@ -738,7 +791,7 @@ log("ready writing to server pipe");
|
|||||||
}
|
}
|
||||||
fdsc++;
|
fdsc++;
|
||||||
}
|
}
|
||||||
if(inserverpipe && !FROMSERVERPIPE){
|
if(splicesrv && inserverpipe && !FROMSERVERPIPE){
|
||||||
if(!after){
|
if(!after){
|
||||||
#ifdef WITHLOG
|
#ifdef WITHLOG
|
||||||
log("wait reading from server pipe");
|
log("wait reading from server pipe");
|
||||||
@ -822,12 +875,26 @@ log("timeout");
|
|||||||
CLEANRET:
|
CLEANRET:
|
||||||
|
|
||||||
#ifdef WITHSPLICE
|
#ifdef WITHSPLICE
|
||||||
if(pipecli[0] >= 0) close(pipecli[0]);
|
/* empty pipes stay with the connection for its next mapping; one still
|
||||||
if(pipecli[1] >= 0) close(pipecli[1]);
|
holding data, left by an error or a timeout, cannot be used again */
|
||||||
if(pipesrv[0] >= 0) close(pipesrv[0]);
|
if(inclientpipe && pipecli[0] >= 0){
|
||||||
if(pipesrv[1] >= 0) close(pipesrv[1]);
|
close(pipecli[0]);
|
||||||
|
close(pipecli[1]);
|
||||||
|
pipecli[0] = pipecli[1] = -1;
|
||||||
|
}
|
||||||
|
if(inserverpipe && pipesrv[0] >= 0){
|
||||||
|
close(pipesrv[0]);
|
||||||
|
close(pipesrv[1]);
|
||||||
|
pipesrv[0] = pipesrv[1] = -1;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
#undef SESSIONEND
|
#undef SESSIONEND
|
||||||
|
#ifndef WITHSPLICE
|
||||||
|
#undef splicecli
|
||||||
|
#undef splicesrv
|
||||||
|
#undef wantbufcli
|
||||||
|
#undef wantbufsrv
|
||||||
|
#endif
|
||||||
|
|||||||
43
src/socks.c
43
src/socks.c
@ -21,7 +21,7 @@ char tracebuf[256];
|
|||||||
|
|
||||||
static void printcommand(unsigned char * buf, int command, struct clientparam *param){
|
static void printcommand(unsigned char * buf, int command, struct clientparam *param){
|
||||||
sprintf((char *)buf, "%s ", commands[command]);
|
sprintf((char *)buf, "%s ", commands[command]);
|
||||||
if(param->hostname){
|
if(*param->hostname){
|
||||||
sprintf((char *)buf + strlen((char *)buf), "%.256s", param->hostname);
|
sprintf((char *)buf + strlen((char *)buf), "%.256s", param->hostname);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -37,7 +37,11 @@ void * sockschild(struct clientparam* param) {
|
|||||||
unsigned size;
|
unsigned size;
|
||||||
SASIZETYPE sasize;
|
SASIZETYPE sasize;
|
||||||
uint16_t port = 0;
|
uint16_t port = 0;
|
||||||
unsigned char * buf=NULL;
|
/* a filter may hand back a buffer of its own in place of this one */
|
||||||
|
unsigned char * buf = param->tmpbuf;
|
||||||
|
/* the line logged, made apart from buf: logging makes its own line in
|
||||||
|
the scratch buffer */
|
||||||
|
unsigned char logline[340];
|
||||||
unsigned char c;
|
unsigned char c;
|
||||||
unsigned char command=0;
|
unsigned char command=0;
|
||||||
struct pollfd fds[3];
|
struct pollfd fds[3];
|
||||||
@ -48,7 +52,6 @@ void * sockschild(struct clientparam* param) {
|
|||||||
|
|
||||||
param->service = S_SOCKS;
|
param->service = S_SOCKS;
|
||||||
|
|
||||||
if(!(buf = malloc(BUFSIZE))) {RETURN(21);}
|
|
||||||
memset(buf, 0, BUFSIZE);
|
memset(buf, 0, BUFSIZE);
|
||||||
if ((ver = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_L], 0)) != 5 && ver != 4) {
|
if ((ver = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_L], 0)) != 5 && ver != 4) {
|
||||||
RETURN(401);
|
RETURN(401);
|
||||||
@ -73,16 +76,14 @@ void * sockschild(struct clientparam* param) {
|
|||||||
if ((i = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(451);}
|
if ((i = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(451);}
|
||||||
if (i && (res = sockgetlinebuf(param, CLIENT, buf, i, 0, conf.timeouts[STRING_S])) != (int)i) {RETURN(441);}
|
if (i && (res = sockgetlinebuf(param, CLIENT, buf, i, 0, conf.timeouts[STRING_S])) != (int)i) {RETURN(441);}
|
||||||
buf[i] = 0;
|
buf[i] = 0;
|
||||||
if(!param->username) {
|
if(!*param->username) {
|
||||||
param->username = (unsigned char *)strdup((char *)buf);
|
if(PARAMSTR(param, username, buf)){RETURN(21);}
|
||||||
if(!param->username){RETURN(21);}
|
|
||||||
}
|
}
|
||||||
if ((i = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(445);}
|
if ((i = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(445);}
|
||||||
if (i && (res = sockgetlinebuf(param, CLIENT, buf, i, 0, conf.timeouts[STRING_S])) != (int)i) {RETURN(441);}
|
if (i && (res = sockgetlinebuf(param, CLIENT, buf, i, 0, conf.timeouts[STRING_S])) != (int)i) {RETURN(441);}
|
||||||
buf[i] = 0;
|
buf[i] = 0;
|
||||||
if(!param->password) {
|
if(!*param->password) {
|
||||||
param->password = (unsigned char *)strdup((char *)buf);
|
if(PARAMSTR(param, password, buf)){RETURN(21);}
|
||||||
if(!param->password){RETURN(21);}
|
|
||||||
}
|
}
|
||||||
buf[0] = 1;
|
buf[0] = 1;
|
||||||
buf[1] = 0;
|
buf[1] = 0;
|
||||||
@ -137,9 +138,7 @@ void * sockschild(struct clientparam* param) {
|
|||||||
default:
|
default:
|
||||||
RETURN(997);
|
RETURN(997);
|
||||||
}
|
}
|
||||||
if(param->hostname)free(param->hostname);
|
if(PARAMSTR(param, hostname, buf)){RETURN(21);}
|
||||||
param->hostname = (unsigned char *)strdup((char *)buf);
|
|
||||||
if(!param->hostname){RETURN(21);}
|
|
||||||
if (ver == 5) {
|
if (ver == 5) {
|
||||||
if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);}
|
if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);}
|
||||||
buf[0] = (unsigned char) res;
|
buf[0] = (unsigned char) res;
|
||||||
@ -151,17 +150,14 @@ void * sockschild(struct clientparam* param) {
|
|||||||
else {
|
else {
|
||||||
if(sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 1, 0, conf.timeouts[STRING_S]) < 0) {RETURN(441);}
|
if(sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 1, 0, conf.timeouts[STRING_S]) < 0) {RETURN(441);}
|
||||||
buf[127] = 0;
|
buf[127] = 0;
|
||||||
if(param->srv->needuser && *buf && !param->username) {
|
if(param->srv->needuser && *buf && !*param->username) {
|
||||||
param->username = (unsigned char *)strdup((char *)buf);
|
if(PARAMSTR(param, username, buf)){RETURN(21);}
|
||||||
if(!param->username){RETURN(21);}
|
|
||||||
}
|
}
|
||||||
if(!memcmp(SAADDR(¶m->req), "\0\0\0", 3)){
|
if(!memcmp(SAADDR(¶m->req), "\0\0\0", 3)){
|
||||||
param->service = S_SOCKS45;
|
param->service = S_SOCKS45;
|
||||||
if(sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 1, 0, conf.timeouts[STRING_S]) < 0) {RETURN(441);}
|
if(sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 1, 0, conf.timeouts[STRING_S]) < 0) {RETURN(441);}
|
||||||
buf[127] = 0;
|
buf[127] = 0;
|
||||||
if(param->hostname)free(param->hostname);
|
if(PARAMSTR(param, hostname, buf)){RETURN(21);}
|
||||||
param->hostname = (unsigned char *)strdup((char *)buf);
|
|
||||||
if(!param->hostname){RETURN(21);}
|
|
||||||
if(!getip46(param->srv->family, buf, (struct sockaddr *) ¶m->req)) RETURN(100);
|
if(!getip46(param->srv->family, buf, (struct sockaddr *) ¶m->req)) RETURN(100);
|
||||||
param->sinsr = param->req;
|
param->sinsr = param->req;
|
||||||
}
|
}
|
||||||
@ -346,7 +342,7 @@ fflush(stderr);
|
|||||||
switch(command) {
|
switch(command) {
|
||||||
case 1:
|
case 1:
|
||||||
if(param->redirectfunc){
|
if(param->redirectfunc){
|
||||||
if(buf)free(buf);
|
if(buf != param->tmpbuf) free(buf);
|
||||||
return (void *)param->redirectfunc;
|
return (void *)param->redirectfunc;
|
||||||
}
|
}
|
||||||
param->res = mapsocket(param, conf.timeouts[CONNECTION_L]);
|
param->res = mapsocket(param, conf.timeouts[CONNECTION_L]);
|
||||||
@ -421,12 +417,9 @@ fflush(stderr);
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(command > 3) command = 0;
|
if(command > 3) command = 0;
|
||||||
if(buf){
|
printcommand(logline, command, param);
|
||||||
printcommand(buf, command, param);
|
dolog(param, logline);
|
||||||
|
if(buf != param->tmpbuf) free(buf);
|
||||||
dolog(param, buf);
|
|
||||||
free(buf);
|
|
||||||
}
|
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
10
src/ssl.c
10
src/ssl.c
@ -453,11 +453,13 @@ int docli(struct clientparam* param){
|
|||||||
|
|
||||||
SSL_CONN ServerConn;
|
SSL_CONN ServerConn;
|
||||||
SSL_CERT ServerCert=NULL;
|
SSL_CERT ServerCert=NULL;
|
||||||
unsigned char *hostname;
|
unsigned char hostname[HOSTNAMELEN];
|
||||||
hostname = param->hostname;
|
|
||||||
param->hostname = (unsigned char *)PCONF->client_sni;
|
/* the name given to the server is the configured one, if any */
|
||||||
|
memcpy(hostname, param->hostname, sizeof(hostname));
|
||||||
|
if(PARAMSTR(param, hostname, PCONF->client_sni)) *param->hostname = 0;
|
||||||
ServerConn = dosrvcon(param, &ServerCert);
|
ServerConn = dosrvcon(param, &ServerCert);
|
||||||
param->hostname = hostname;
|
memcpy(param->hostname, hostname, sizeof(hostname));
|
||||||
_ssl_cert_free(ServerCert);
|
_ssl_cert_free(ServerCert);
|
||||||
|
|
||||||
if(!ServerConn) return 1;
|
if(!ServerConn) return 1;
|
||||||
|
|||||||
@ -199,6 +199,12 @@ int
|
|||||||
|
|
||||||
#define MAX_HASH_SIZE (64)
|
#define MAX_HASH_SIZE (64)
|
||||||
#define UDPBUFSIZE 16384
|
#define UDPBUFSIZE 16384
|
||||||
|
/* A connection's buffer for each side: 16K, and the 5 byte header of a TLS
|
||||||
|
record that big, which tlspr reads whole. */
|
||||||
|
#define CLIENTBUFSIZE (16384 + 64)
|
||||||
|
#define CLIENTTMPBUFSIZE 8192
|
||||||
|
#define HOSTNAMELEN 256
|
||||||
|
#define USERNAMELEN 128
|
||||||
|
|
||||||
extern char* NULLADDR;
|
extern char* NULLADDR;
|
||||||
typedef enum {
|
typedef enum {
|
||||||
@ -396,8 +402,6 @@ struct httpreq {
|
|||||||
int proxy; /* the client asked the way it asks a proxy */
|
int proxy; /* the client asked the way it asks a proxy */
|
||||||
int connect; /* and asked for a tunnel */
|
int connect; /* and asked for a tunnel */
|
||||||
int mayproxy; /* an access rule sent this to the local proxy */
|
int mayproxy; /* an access rule sent this to the local proxy */
|
||||||
unsigned char *raw; /* the request as it arrived, for handing on */
|
|
||||||
int rawlen, rawsize;
|
|
||||||
int drained; /* the body has been read and thrown away */
|
int drained; /* the body has been read and thrown away */
|
||||||
char *lasthost; /* where the last request on this connection went */
|
char *lasthost; /* where the last request on this connection went */
|
||||||
void *handoff; /* a child which takes the connection over */
|
void *handoff; /* a child which takes the connection over */
|
||||||
@ -527,7 +531,7 @@ struct filterp {
|
|||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MAX_FILTERS 16
|
#define MAX_FILTERS 256
|
||||||
|
|
||||||
/* Socket options for one kind of socket, -oc and the like: which of
|
/* Socket options for one kind of socket, -oc and the like: which of
|
||||||
sockopts[] are given, by their index there, and the value of each. */
|
sockopts[] are given, by their index there, and the value of each. */
|
||||||
@ -688,11 +692,6 @@ struct clientparam {
|
|||||||
TRAFCOUNTFUNC trafcountfunc;
|
TRAFCOUNTFUNC trafcountfunc;
|
||||||
|
|
||||||
|
|
||||||
struct filterp *filters,
|
|
||||||
**reqfilters, **connectfilters, **afterauthfilters,
|
|
||||||
**hdrfilterscli, **hdrfilterssrv,
|
|
||||||
**predatfilters, **datfilterscli, **datfilterssrv;
|
|
||||||
|
|
||||||
PROXYSERVICE service;
|
PROXYSERVICE service;
|
||||||
|
|
||||||
PROXYSERVICE clientstarttls;
|
PROXYSERVICE clientstarttls;
|
||||||
@ -735,14 +734,14 @@ struct clientparam {
|
|||||||
preauth,
|
preauth,
|
||||||
dstindep;
|
dstindep;
|
||||||
|
|
||||||
unsigned char *hostname,
|
unsigned char *clibuf,
|
||||||
*username,
|
|
||||||
*password,
|
|
||||||
*extusername,
|
|
||||||
*extpassword,
|
|
||||||
*clibuf,
|
|
||||||
*srvbuf;
|
*srvbuf;
|
||||||
|
|
||||||
|
/* splice() pipes for the client's and the server's data, -1 until
|
||||||
|
made; kept for the life of the connection */
|
||||||
|
int pipecli[2],
|
||||||
|
pipesrv[2];
|
||||||
|
|
||||||
unsigned cliinbuf,
|
unsigned cliinbuf,
|
||||||
srvinbuf,
|
srvinbuf,
|
||||||
clioffset,
|
clioffset,
|
||||||
@ -786,6 +785,34 @@ struct clientparam {
|
|||||||
member is only reached once every weighted one is in here. */
|
member is only reached once every weighted one is in here. */
|
||||||
struct chain *failedparents[MAXFAILEDPARENTS];
|
struct chain *failedparents[MAXFAILEDPARENTS];
|
||||||
int nfailedparents;
|
int nfailedparents;
|
||||||
|
/* Where in clibuf a request being read began, -1 when nothing is to be
|
||||||
|
kept, -2 once a request was too big for the buffer. While it is set,
|
||||||
|
refilling the buffer keeps everything from there on instead of
|
||||||
|
starting over, so the request can be read again from the buffer. */
|
||||||
|
int climark;
|
||||||
|
/* Names and credentials, empty when there are none. A value too long
|
||||||
|
for its field is refused, never cut short: set them with PARAMSTR. */
|
||||||
|
unsigned char hostname[HOSTNAMELEN],
|
||||||
|
username[USERNAMELEN],
|
||||||
|
password[USERNAMELEN],
|
||||||
|
extusername[USERNAMELEN],
|
||||||
|
extpassword[USERNAMELEN];
|
||||||
|
/* The filters this connection runs, which a new connection makes for
|
||||||
|
itself: the service's are not copied to it. Ordered for each stage. */
|
||||||
|
struct filterp filters[MAX_FILTERS],
|
||||||
|
*reqfilters[MAX_FILTERS], *connectfilters[MAX_FILTERS],
|
||||||
|
*afterauthfilters[MAX_FILTERS],
|
||||||
|
*hdrfilterscli[MAX_FILTERS], *hdrfilterssrv[MAX_FILTERS],
|
||||||
|
*predatfilters[MAX_FILTERS], *datfilterscli[MAX_FILTERS],
|
||||||
|
*datfilterssrv[MAX_FILTERS];
|
||||||
|
/* The connection's scratch buffer, for a log line and the like: for
|
||||||
|
something done at once, never for what has to outlive a call into
|
||||||
|
anything that could log. */
|
||||||
|
unsigned char tmpbuf[CLIENTTMPBUFSIZE];
|
||||||
|
/* Each side's data buffer, which clibuf and srvbuf point to unless a
|
||||||
|
filter needed a bigger one. */
|
||||||
|
unsigned char clibufdata[CLIENTBUFSIZE],
|
||||||
|
srvbufdata[CLIENTBUFSIZE];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct filemon {
|
struct filemon {
|
||||||
@ -796,7 +823,6 @@ struct filemon {
|
|||||||
|
|
||||||
|
|
||||||
struct extparam {
|
struct extparam {
|
||||||
_3proxy_sem_t threadinit;
|
|
||||||
int *timeouts;
|
int *timeouts;
|
||||||
struct ace * acl;
|
struct ace * acl;
|
||||||
#ifdef WITH_HTTPSRV
|
#ifdef WITH_HTTPSRV
|
||||||
|
|||||||
@ -16,12 +16,12 @@
|
|||||||
void * tcppmchild(struct clientparam* param) {
|
void * tcppmchild(struct clientparam* param) {
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
if(!param->hostname){
|
if(!*param->hostname){
|
||||||
#ifdef WITH_UN
|
#ifdef WITH_UN
|
||||||
if(!strncmp((char *)param->srv->target, "unix:", 5)){
|
if(!strncmp((char *)param->srv->target, "unix:", 5)){
|
||||||
make_un(param->srv->target + 5, (struct sockaddr_un *)¶m->sinsr);
|
make_un(param->srv->target + 5, (struct sockaddr_un *)¶m->sinsr);
|
||||||
make_un(param->srv->target + 5, (struct sockaddr_un *)¶m->req);
|
make_un(param->srv->target + 5, (struct sockaddr_un *)¶m->req);
|
||||||
param->hostname = (unsigned char *)strdup((char *)param->srv->target);
|
if(PARAMSTR(param, hostname, param->srv->target)) RETURN(100);
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
if(
|
if(
|
||||||
@ -46,7 +46,7 @@ void * tcppmchild(struct clientparam* param) {
|
|||||||
RETURN (mapsocket(param, conf.timeouts[CONNECTION_L]));
|
RETURN (mapsocket(param, conf.timeouts[CONNECTION_L]));
|
||||||
CLEANRET:
|
CLEANRET:
|
||||||
|
|
||||||
dolog(param, param->hostname);
|
dolog(param, *param->hostname? param->hostname : NULL);
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
94
src/tlspr.c
94
src/tlspr.c
@ -266,64 +266,30 @@ int parsehello(int type, unsigned char *hello, unsigned len, char *sni, int * sn
|
|||||||
return snifound;
|
return snifound;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tlstobufcli(struct clientparam *param){
|
/* Has one whole TLS record from one side at the start of its buffer, once
|
||||||
unsigned long len, newlen;
|
whatever is still buffered from the other side is passed on. Returns its
|
||||||
if(!param->clibuf){
|
length, or less than 0; the server's codes are one further on than the
|
||||||
if(!(param->clibuf = malloc(SRVBUFSIZE))) return -1;
|
client's, as the log has always had them. */
|
||||||
param->clibufsize = SRVBUFSIZE;
|
static int tlstobuf(struct clientparam *param, DIRECTION which){
|
||||||
param->clioffset = param->cliinbuf = 0;
|
unsigned *oinbuf = which? ¶m->cliinbuf : ¶m->srvinbuf;
|
||||||
}
|
unsigned *ooffset = which? ¶m->clioffset : ¶m->srvoffset;
|
||||||
if(param->srvinbuf != param->srvoffset){
|
unsigned char *obuf = which? param->clibuf : param->srvbuf;
|
||||||
len = socksend(param, param->clisock, param->srvbuf+param->srvoffset,param->srvinbuf-param->srvoffset, conf.timeouts[STRING_S]);
|
unsigned char *buf;
|
||||||
if(len != param->srvinbuf-param->srvoffset){
|
int e = which? 1 : 0;
|
||||||
return -2;
|
unsigned long len;
|
||||||
}
|
|
||||||
param->srvinbuf = param->srvoffset = 0;
|
|
||||||
}
|
|
||||||
len = sockfillbuffcli(param, 5, conf.timeouts[STRING_S]);
|
|
||||||
if(len < 5) return -2;
|
|
||||||
if(param->clibuf[1] != 3) {
|
|
||||||
return -3;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
len = 5 + size16(param->clibuf+3);
|
|
||||||
if(len > param->clibufsize) return -4;
|
|
||||||
for(newlen=param->cliinbuf; newlen < len; newlen=param->cliinbuf){
|
|
||||||
sockfillbuffcli(param, len, conf.timeouts[STRING_S]);
|
|
||||||
if(param->cliinbuf <= newlen) return -5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return (int)len;
|
|
||||||
}
|
|
||||||
|
|
||||||
int tlstobufsrv(struct clientparam *param){
|
if(*oinbuf != *ooffset){
|
||||||
unsigned long len, newlen;
|
len = *oinbuf - *ooffset;
|
||||||
|
if((unsigned long)socksend(param, which? param->remsock : param->clisock, obuf + *ooffset, (int)len, conf.timeouts[STRING_S]) != len)
|
||||||
if(param->cliinbuf != param->clioffset){
|
return which? -1 : -2;
|
||||||
len = socksend(param, param->remsock, param->clibuf+param->clioffset,param->cliinbuf-param->clioffset, conf.timeouts[STRING_S]);
|
*oinbuf = *ooffset = 0;
|
||||||
if(len != param->cliinbuf-param->clioffset){
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
param->cliinbuf = param->clioffset = 0;
|
|
||||||
}
|
|
||||||
if(!param->srvbuf){
|
|
||||||
if(!(param->srvbuf = malloc(SRVBUFSIZE))) return -1;
|
|
||||||
param->srvbufsize = SRVBUFSIZE;
|
|
||||||
param->srvoffset = param->srvinbuf = 0;
|
|
||||||
}
|
|
||||||
len = sockfillbuffsrv(param, 5, conf.timeouts[STRING_S]);
|
|
||||||
if(len < 5) return -3;
|
|
||||||
if(param->srvbuf[1] != 3) {
|
|
||||||
return -4;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
len = 5 + size16(param->srvbuf+3);
|
|
||||||
if(len > param->srvbufsize) return -5;
|
|
||||||
for(newlen=param->srvinbuf; newlen < len; newlen=param->srvinbuf){
|
|
||||||
sockfillbuffsrv(param, len, conf.timeouts[STRING_S]);
|
|
||||||
if(param->srvinbuf <= newlen) return -6;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if(sockfillbuf(param, which, 5, conf.timeouts[STRING_S]) < 5) return -2 - e;
|
||||||
|
buf = which? param->srvbuf : param->clibuf;
|
||||||
|
if(buf[1] != 3) return -3 - e;
|
||||||
|
len = 5 + size16(buf + 3);
|
||||||
|
if(len > (which? param->srvbufsize : param->clibufsize)) return -4 - e;
|
||||||
|
if(sockfillbuf(param, which, len, conf.timeouts[STRING_S]) < len) return -5 - e;
|
||||||
return (int)len;
|
return (int)len;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +309,7 @@ void * tlsprchild(struct clientparam* param) {
|
|||||||
if(res < 0) RETURN(0);
|
if(res < 0) RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
res = tlstobufcli(param);
|
res = tlstobuf(param, CLIENT);
|
||||||
if(res <= 0 || param->clibuf[0] != 22){
|
if(res <= 0 || param->clibuf[0] != 22){
|
||||||
if(param->srv->requirecert)RETURN(300-res);
|
if(param->srv->requirecert)RETURN(300-res);
|
||||||
}
|
}
|
||||||
@ -351,12 +317,10 @@ void * tlsprchild(struct clientparam* param) {
|
|||||||
lv = param->clibuf[2];
|
lv = param->clibuf[2];
|
||||||
res = parsehello(1, param->clibuf, (unsigned)res, sni, &snipos, &lv, proto);
|
res = parsehello(1, param->clibuf, (unsigned)res, sni, &snipos, &lv, proto);
|
||||||
if(res > 0){
|
if(res > 0){
|
||||||
if(param->hostname){
|
if(*param->hostname){
|
||||||
free(param->hostname);
|
if(PARAMSTR(param, hostname, sni)) RETURN (100);
|
||||||
param->hostname = NULL;
|
|
||||||
}
|
}
|
||||||
else if (parsehostname(sni, param, param->srv->targetport? ntohs(param->srv->targetport):starttlsport(stlsproto))) RETURN (100);
|
else if (parsehostname(sni, param, param->srv->targetport? ntohs(param->srv->targetport):starttlsport(stlsproto))) RETURN (100);
|
||||||
if (!param->hostname)param->hostname = (unsigned char *)strdup(sni);
|
|
||||||
if(param->srv->s_option && snipos && res > 1){
|
if(param->srv->s_option && snipos && res > 1){
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
@ -395,7 +359,7 @@ void * tlsprchild(struct clientparam* param) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(param->srv->requirecert > 1){
|
if(param->srv->requirecert > 1){
|
||||||
res = tlstobufsrv(param);
|
res = tlstobuf(param, SERVER);
|
||||||
if(res <= 0 || param->srvbuf[0] != 22) RETURN(340-res);
|
if(res <= 0 || param->srvbuf[0] != 22) RETURN(340-res);
|
||||||
lv = param->srvbuf[2];
|
lv = param->srvbuf[2];
|
||||||
res = parsehello(2, param->srvbuf, (unsigned)res, sni, &snipos, &lv, proto);
|
res = parsehello(2, param->srvbuf, (unsigned)res, sni, &snipos, &lv, proto);
|
||||||
@ -408,7 +372,7 @@ void * tlsprchild(struct clientparam* param) {
|
|||||||
len = param->srvinbuf;
|
len = param->srvinbuf;
|
||||||
if(socksend(param, param->clisock, param->srvbuf,len, conf.timeouts[STRING_S]) != len) RETURN(371);
|
if(socksend(param, param->clisock, param->srvbuf,len, conf.timeouts[STRING_S]) != len) RETURN(371);
|
||||||
param->srvinbuf = 0;
|
param->srvinbuf = 0;
|
||||||
res = tlstobufsrv(param);
|
res = tlstobuf(param, SERVER);
|
||||||
if(res <= 0) RETURN(380-res);
|
if(res <= 0) RETURN(380-res);
|
||||||
if(param->srvbuf[0]!= 22) break;
|
if(param->srvbuf[0]!= 22) break;
|
||||||
switch(param->srvbuf[5]){
|
switch(param->srvbuf[5]){
|
||||||
@ -430,7 +394,7 @@ void * tlsprchild(struct clientparam* param) {
|
|||||||
if(param->srv->requirecert > 3){
|
if(param->srv->requirecert > 3){
|
||||||
if(!reqcert) RETURN(374);
|
if(!reqcert) RETURN(374);
|
||||||
for(done=0;!done;) {
|
for(done=0;!done;) {
|
||||||
res = tlstobufcli(param);
|
res = tlstobuf(param, CLIENT);
|
||||||
if(res <= 0) RETURN(390-res);
|
if(res <= 0) RETURN(390-res);
|
||||||
len = res;
|
len = res;
|
||||||
if(param->clibuf[0]!= 22) break;
|
if(param->clibuf[0]!= 22) break;
|
||||||
@ -456,7 +420,7 @@ void * tlsprchild(struct clientparam* param) {
|
|||||||
RETURN (mapsocket(param, conf.timeouts[CONNECTION_L]));
|
RETURN (mapsocket(param, conf.timeouts[CONNECTION_L]));
|
||||||
CLEANRET:
|
CLEANRET:
|
||||||
|
|
||||||
sprintf(req, "%sv%d.%d %s %s", lv<0?"NONE":lv?"TLS":"SSL", lv<0?0:lv?1:3, lv<0?0:lv?lv-1:0, param->hostname?(char *)param->hostname:"-", proto);
|
sprintf(req, "%sv%d.%d %s %s", lv<0?"NONE":lv?"TLS":"SSL", lv<0?0:lv?1:3, lv<0?0:lv?lv-1:0, *param->hostname?(char *)param->hostname:"-", proto);
|
||||||
dolog(param, (unsigned char *)req);
|
dolog(param, (unsigned char *)req);
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -142,7 +142,6 @@ static void* transparent_filter_open(void * idata, struct srvparam * param){
|
|||||||
|
|
||||||
static FILTER_ACTION transparent_filter_client(void *fo, struct clientparam * param, void** fc){
|
static FILTER_ACTION transparent_filter_client(void *fo, struct clientparam * param, void** fc){
|
||||||
|
|
||||||
char addrbuf[64];
|
|
||||||
int res = 1;
|
int res = 1;
|
||||||
|
|
||||||
#ifdef WITH_NETFILTER
|
#ifdef WITH_NETFILTER
|
||||||
@ -164,9 +163,8 @@ static FILTER_ACTION transparent_filter_client(void *fo, struct clientparam * pa
|
|||||||
service decides as it would without the command. */
|
service decides as it would without the command. */
|
||||||
if(res) return PASS;
|
if(res) return PASS;
|
||||||
|
|
||||||
pl->myinet_ntop(*SAFAMILY(¶m->req), SAADDR(¶m->req), (char *)addrbuf, sizeof(addrbuf));
|
/* an address always fits the field */
|
||||||
if(param->hostname) pl->freefunc(param->hostname);
|
pl->myinet_ntop(*SAFAMILY(¶m->req), SAADDR(¶m->req), (char *)param->hostname, sizeof(param->hostname));
|
||||||
param->hostname = (unsigned char *)pl->strdupfunc(addrbuf);
|
|
||||||
param->sinsr = param->req;
|
param->sinsr = param->req;
|
||||||
return PASS;
|
return PASS;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -50,10 +50,6 @@ void * udppmchild(struct clientparam* param) {
|
|||||||
if(authres) { RETURN(authres); }
|
if(authres) { RETURN(authres); }
|
||||||
if((authres = udpbind(param))) { RETURN(authres); }
|
if((authres = udpbind(param))) { RETURN(authres); }
|
||||||
if(!param->srv->s_option)hashadd(&udp_table, param, ¶m, MAX_COUNTER_TIME);
|
if(!param->srv->s_option)hashadd(&udp_table, param, ¶m, MAX_COUNTER_TIME);
|
||||||
if(!param->srvbuf){
|
|
||||||
if(!(param->srvbuf = malloc(UDPBUFSIZE)))RETURN(11);
|
|
||||||
param->srvbufsize = UDPBUFSIZE;
|
|
||||||
}
|
|
||||||
if(!param->bandlimfunc || !(*param->bandlimfunc)(param, 0, param->srv->udplen)){
|
if(!param->bandlimfunc || !(*param->bandlimfunc)(param, 0, param->srv->udplen)){
|
||||||
if(param->udp_nhops){
|
if(param->udp_nhops){
|
||||||
for(i=1; i < param->udp_nhops; i++){
|
for(i=1; i < param->udp_nhops; i++){
|
||||||
|
|||||||
@ -93,7 +93,7 @@ static void udplog(struct clientparam *param)
|
|||||||
|
|
||||||
if(!param->srv->logfunc) return;
|
if(!param->srv->logfunc) return;
|
||||||
len = sprintf((char *)buf, "UDPMAP ");
|
len = sprintf((char *)buf, "UDPMAP ");
|
||||||
if(param->hostname) len += sprintf((char *)buf + len, "%.256s", param->hostname);
|
if(*param->hostname) len += sprintf((char *)buf + len, "%.256s", param->hostname);
|
||||||
else len += myinet_ntop(*SAFAMILY(¶m->req), SAADDR(¶m->req), (char *)buf + len, 64);
|
else len += myinet_ntop(*SAFAMILY(¶m->req), SAADDR(¶m->req), (char *)buf + len, 64);
|
||||||
sprintf((char *)buf + len, ":%hu", ntohs(*SAPORT(¶m->req)));
|
sprintf((char *)buf + len, ":%hu", ntohs(*SAPORT(¶m->req)));
|
||||||
param->srv->logfunc(param, buf);
|
param->srv->logfunc(param, buf);
|
||||||
@ -208,12 +208,6 @@ int udpsockmap(struct clientparam *param, int timeo)
|
|||||||
char lastname[256] = "";
|
char lastname[256] = "";
|
||||||
struct ace *lastace = NULL;
|
struct ace *lastace = NULL;
|
||||||
|
|
||||||
if (param->srvbufsize < UDPBUFSIZE) {
|
|
||||||
unsigned char *newbuf = realloc(param->srvbuf, UDPBUFSIZE);
|
|
||||||
if (!newbuf) return 21;
|
|
||||||
param->srvbuf = newbuf;
|
|
||||||
param->srvbufsize = UDPBUFSIZE;
|
|
||||||
}
|
|
||||||
cliaddr = param->sincr;
|
cliaddr = param->sincr;
|
||||||
if(param->ctrlsock != INVALID_SOCKET){
|
if(param->ctrlsock != INVALID_SOCKET){
|
||||||
sasize = sizeof(cliaddr);
|
sasize = sizeof(cliaddr);
|
||||||
@ -313,13 +307,11 @@ int udpsockmap(struct clientparam *param, int timeo)
|
|||||||
PROXYSOCKADDRTYPE newdst = dst;
|
PROXYSOCKADDRTYPE newdst = dst;
|
||||||
|
|
||||||
param->req = lastdst;
|
param->req = lastdst;
|
||||||
if (param->hostname) free(param->hostname);
|
if (PARAMSTR(param, hostname, lastname)) *param->hostname = 0;
|
||||||
param->hostname = *lastname? (unsigned char *)strdup(lastname) : NULL;
|
|
||||||
udplog(param);
|
udplog(param);
|
||||||
dst = newdst;
|
dst = newdst;
|
||||||
}
|
}
|
||||||
if (param->hostname) free(param->hostname);
|
if (PARAMSTR(param, hostname, dstname)) *param->hostname = 0;
|
||||||
param->hostname = dstname? (unsigned char *)strdup(dstname) : NULL;
|
|
||||||
param->req = dst;
|
param->req = dst;
|
||||||
if (!nhops) param->sinsr = dst;
|
if (!nhops) param->sinsr = dst;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user