При этом обнаружилось, что PF имеет странную особенность после некоторого количества запросов тормозить поток запросов без превышения лимитов и сильно задерживать ответы (см. ниже "longest request"). Последняя часть длинной серии запросов (5-20%) имеет аномально долгое завершение.
Код: Выделить всё
Server Software: nginx
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /
Document Length: 1152 bytes
Concurrency Level: 500
Time taken for tests: 245.439 seconds
Complete requests: 1000000
Failed requests: 1
(Connect: 0, Receive: 0, Length: 1, Exceptions: 0)
Write errors: 0
Total transferred: 1390998609 bytes
HTML transferred: 1151998848 bytes
Requests per second: 4074.33 [#/sec] (mean)
Time per request: 122.719 [ms] (mean)
Time per request: 0.245 [ms] (mean, across all concurrent requests)
Transfer rate: 5534.56 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 54 381.1 6 9409
Processing: 0 68 364.5 19 26733
Waiting: 0 67 363.7 19 26733
Total: 10 122 533.0 25 26739
Percentage of the requests served within a certain time (ms)
50% 25
66% 26
75% 27
80% 27
90% 30
95% 255
98% 3025
99% 3027
100% 26739 (longest request)
Код: Выделить всё
Server Software: nginx
Server Hostname: 10.8.1.7
Server Port: 80
Document Path: /
Document Length: 1152 bytes
Concurrency Level: 250
Time taken for tests: 34.783 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 13570000 bytes
HTML transferred: 11520000 bytes
Requests per second: 287.49 [#/sec] (mean)
Time per request: 869.587 [ms] (mean)
Time per request: 3.478 [ms] (mean, across all concurrent requests)
Transfer rate: 380.98 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 481 2237.7 1 22007
Processing: 1 12 5.1 10 30
Waiting: 1 11 5.4 10 30
Total: 2 493 2236.5 15 22013
Percentage of the requests served within a certain time (ms)
50% 15
66% 16
75% 18
80% 20
90% 26
95% 3011
98% 6211
99% 6219
100% 22013 (longest request)

Конфиг PF сейчас используется совсем простой, тестовый:
Код: Выделить всё
set skip on lo0
#scrub in all
pass in proto tcp from any to self port 65000
pass in quick proto tcp from 10.0.0.0/8 to self port 80
# Allow all outgoing connections
# pass out quick all
pass out quick from self to any
# Block all
# block drop in all
Обойтись без файрволла на сервере невозможно, поскольку он много всего разруливает.
Большая просьба к знающим подсказать природу этого эффекта и как это преодолеть.
