Ответ 1
Для используемой памяти подключений TCP зависит от
-
размер sk_buff (внутренняя сетевая структура, используемая ядром linux)
-
буфер чтения и записи для подключения
размер буферов может быть изменен по мере необходимости
[email protected]:~# sysctl -A | grep net | grep mem
проверить эти переменные
они определяют максимальное использование буфера памяти по умолчанию для всех сетевых подключений в ядре
net.core.wmem_max = 131071
net.core.rmem_max = 131071
net.core.wmem_default = 126976
net.core.rmem_default = 126976
они определяют использование буферной памяти для соединений tcp
net.ipv4.tcp_mem = 378528 504704 757056
net.ipv4.tcp_wmem = 4096 16384 4194304
net.ipv4.tcp_rmem = 4096 87380 4194304
указанные три значения являются размерами "min default max". Поэтому для начала использования linux будет использоваться значение по умолчанию для буфера чтения и записи для каждого соединения. По мере увеличения количества соединений эти буферы будут уменьшены [максимально до указанного минимального значения] То же самое относится к максимальному значению буфера.
Эти значения могут быть установлены с помощью этого sysctl -w KEY=KEY VALUE
например. Следующая команда обеспечивает, чтобы буферы чтения и записи для каждого соединения составляли 4096 каждый.
sysctl -w net.ipv4.tcp_rmem='4096 4096 4096'
sysctl -w net.ipv4.tcp_wmem='4096 4096 4096'