в настоящее время я настраиваю nginx для приема C1M, я делаю это в своем Virtual BOX с Centos 7.0 и RAM 10G.
Вот моя конфигурация sysctl.conf.
fs.file-max = 9999999
fs.nr_open = 9999999
net.core.netdev_max_backlog = 4096
net.core.rmem_max = 16777216
net.core.somaxconn = 3240000
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 16384
net.ipv4.ip_forward = 0
net.ipv4.ip_local_port_range = 1 65535
net.ipv4.tcp_rmem = 8192 873800 8388608
net.ipv4.tcp_wmem = 4096 655360 8388608
net.ipv4.tcp_mem = 8388608 8388608 8388608
net.ipv4.tcp_fin_timeout = 7
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_max_syn_backlog = 3240000
net.ipv4.tcp_max_tw_buckets = 6000000
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_slow_start_after_idle = 0
vm.min_free_kbytes = 65536
vm.overcommit_memory = 2
net.nf_conntrack_max = 237680
net.netfilter.nf_conntrack_max = 237680
net.ipv4.ip_conntrack_max = 131072
net.ipv4.netfilter.ip_conntrack_max = 1048576
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
В nginx.conf я установил worker_connection равным 1000000, worker_process 4, worker_rlimit_nofile 1000000
Я установил свой открытый файл с помощью ulimit -n 2000000, но я получаю только активное соединение около 65 КБ, как это.
Active connections: 65318
server accepts handled requests
768234 768234 1549023
Reading: 0 Writing: 61245 Waiting: 4073
I try with wrk -t3 -c67000 -d40s http://my-ip:80
Есть ли какие-то пропущенные конфигурации, которые я делаю? Спасибо за ваш ответ.
Байю Пермади,
Вы запускаете свой тестовый инструмент с нескольких компьютеров или с одного? Похоже, вы работаете с одним, поэтому виноват диапазон локальных портов.
Количество активных подключений ограничено количеством доступных сокетов.
розетка clien_ip + client_port + server_port + server_ip
. Максимальный номер порта составляет около 65к, поэтому единственный способ увеличить количество подключений - использовать дополнительный IP.
Например, используйте виртуальные интерфейсы. Или добавьте виртуальный адаптер к машине virtualbox.
В любом случае, для хорошего тестирования производительности вы должны использовать распределенных клиентов (генераторы нагрузки), потому что тесты с одним или несколькими клиентами часто становятся тестом производительности клиента, а не сервера =)