Недопустимый аргумент "ключ настройки" net.core.somaxconn "

Я попытался настроить linux-ядро после редактирования /etc/sysctl.conf и выполнить sysctl -p

показывает ошибку

Invalid argument" setting key "net.core.somaxconn"

Распределение Linux: Ubuntu 12.04.4 LTS, x86_64, 3.2.0-60-generic

$cat/etc/sysctl.conf

net.ipv4.conf.eth0.arp_notify = 1
vm.swappiness = 0
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.somaxconn = 262144
net.core.netdev_max_backlog = 262144
fs.file-max = 1048576
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_syn_backlog = 409600
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_orphans = 262144

Может ли увеличить net.core.somaxconn до 262144?

Ответ 1

Та же самая проблема, с которой я столкнулся, когда попытался настроить свой nginx. Это проблема с патчем, сделанным для ядра Ubuntu.

Поле sk_max_ack_backlog структуры sock определяется как unsigned short.

Поэтому аргумент отставания в inet_listen() не должен превышать USHRT_MAX. Аргумент backlog в системном вызове listen() усекается до значения somaxconn. Таким образом, значение somaxconn не должно превышать 65535 (USHRT_MAX).

Короче говоря, чтобы ваш net.core.somaxconn работал, вы не должны давать значение больше 65535

net.core.somaxconn = 65535

Это печально, но мы должны жить с этим до тех пор, пока вы не будете в порядке, чтобы перезагрузить ваше ядро.https://lists.ubuntu.com/archives/kernel-team/2013-October/033041.html