Перейти к содержимому
Калькуляторы

Out of socket memory - как бороться?

Собственно, возникает момент (редко, но всегда в ЧНН), когда логи усыпаны такими сообщениями:

 

TCP: too many of orphaned sockets

TCP: too many of orphaned sockets

TCP: too many of orphaned sockets

Out of socket memory

Out of socket memory

TCP: too many of orphaned sockets

 

начинают в случайном порядке рваться TCP-соединения, в следствие чего отваливаются pptp-подключения.

 

 

"Out of socket memory" - как узнать подробности?

"TCP: too many of orphaned sockets" - это уже следтвие - изза нехватки ресурсов соединяние закрываются, и образуется много "бездомных" сокетов.

 

как отмониторить такое состояние? график ESTABLISHED/TIME_WAIT показывает резкий скачок TIME_WAIT именно в момент глюка, но это не причина, а опять же - следствие...

как бороться? что крутить? памяти щас 8г, можно еще добавить, если надо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Собственно, возникает момент (редко, но всегда в ЧНН), когда логи усыпаны такими сообщениями:

 

TCP: too many of orphaned sockets

TCP: too many of orphaned sockets

TCP: too many of orphaned sockets

Out of socket memory

Out of socket memory

TCP: too many of orphaned sockets

Это называется SYN-flood. Как минимум нужно сделать так:

 

/etc/sysctl.conf

net.inet.tcp.syncookies=1

 

/boot/loader.conf

kern.ipc.maxsockets=32768

net.inet.tcp.tcbhashsize=4096

net.inet.tcp.hostcache.hashsize=1024

 

Подробнее про тюнинг TCP можно прочитать здесь: http://opennet.ru/base/net/tune_freebsd.txt.html

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

tcp syncookies уже включены, и в логах матершины по этому поводу нет.

maxsockets уже давно стоит в значении 262144

 

аналогов ручек "hashsize" в линуксе вроде нет,

но при загрузке видно сообщение:

TCP: Hash tables configured (established 131072 bind 43690)

 

т.е. вроде тоже достаточно

 

да, забыл добавить - у меня linux :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да, забыл добавить - у меня linux :)

Ну в Линуксе нужно крутить другие параметры: net.ipv4.tcp_max_orphans, tcp_fin_timeout и т. д. http://www.mjmwired.net/kernel/Documentati...g/ip-sysctl.txt
Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это называется SYN-flood. Как минимум нужно сделать так:

/etc/sysctl.conf

net.inet.tcp.syncookies=1

 

/boot/loader.conf

kern.ipc.maxsockets=32768

net.inet.tcp.tcbhashsize=4096

net.inet.tcp.hostcache.hashsize=1024

Подробнее про тюнинг TCP можно прочитать здесь: <a href="http://opennet.ru/base/net/tune_freebsd.txt.html" target="_blank">http://opennet.ru/base/net/tune_freebsd.txt.html</a>

kern.ipc.maxsockets=32768

тюнится прекрасно из /etc/sysctl.conf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Коллеги, немного понекрофилю и апну темку.

Есть ВМ на гипер-в, линукс, центос: CentOS Linux release 7.5.1804 (Core)

Linux server.domain.local 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

 

крутится там nginx и проксирует коннекты, за последнее время, второй раз ловим глюк - отваливается eth1 (eth0 с реальником работает нормально), отваливается серая сеть, собственно, куда и проксируются коннекты.

в логе Apr 9 15:33:43 server kernel: TCP: too many orphaned sockets

на коммутаторе в арпе пропадает запись, пока не ребутну ВМ-ку.

 

куда копать? на графиках не вижу аномальщины и всплесков коннектов, отвал при штатной работе.

 

по коннектам обычно так:

netstat -nap | grep 172.29 | grep EST | wc -l
46748
 

 

спасибо за внимание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, mse.rus77 сказал:

отваливается eth1

Вывод с ethtool -i и ethtool -S для данного адаптера покажите

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, jffulcrum сказал:

Вывод с ethtool -i и ethtool -S для данного адаптера покажите

Спасибо за ответ, прилагаю вывод:

[root@server]# ethtool -i eth1
driver: hv_netvsc
version:
firmware-version: N/A
expansion-rom-version:
bus-info:
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

[root@server]# ethtool -S eth1
NIC statistics:
     tx_scattered: 0
     tx_no_memory: 0
     tx_no_space: 0
     tx_too_big: 0
     tx_busy: 0
     tx_send_full: 833486
     rx_comp_busy: 0
     vf_rx_packets: 0
     vf_rx_bytes: 0
     vf_tx_packets: 0
     vf_tx_bytes: 0
     vf_tx_dropped: 0
     tx_queue_0_packets: 847432528
     tx_queue_0_bytes: 63615032969
     rx_queue_0_packets: 146582294
     rx_queue_0_bytes: 10673185493
     tx_queue_1_packets: 54877
     tx_queue_1_bytes: 2971546
     rx_queue_1_packets: 145900459
     rx_queue_1_bytes: 10624779364
     tx_queue_2_packets: 54124
     tx_queue_2_bytes: 2930744
     rx_queue_2_packets: 146876720
     rx_queue_2_bytes: 10689833245
     tx_queue_3_packets: 54213
     tx_queue_3_bytes: 2935294
     rx_queue_3_packets: 147424054
     rx_queue_3_bytes: 10729487463
     tx_queue_4_packets: 54154
     tx_queue_4_bytes: 2932088
     rx_queue_4_packets: 145956549
     rx_queue_4_bytes: 10628702084
     tx_queue_5_packets: 54540
     tx_queue_5_bytes: 2953556
     rx_queue_5_packets: 147178163
     rx_queue_5_bytes: 10711538079
     tx_queue_6_packets: 54150
     tx_queue_6_bytes: 2931740
     rx_queue_6_packets: 147107767
     rx_queue_6_bytes: 10710524561
     tx_queue_7_packets: 55113
     tx_queue_7_bytes: 2984210
     rx_queue_7_packets: 146007648
     rx_queue_7_bytes: 10630071639
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

18 минут назад, mse.rus77 сказал:

 tx_send_full: 833486

Вам надо либо сам Centos обновлять, либо ставить 'Linux Integration Services' с сайта MS последний, чтобы обновить hv_netvsc. Отвалы сетки вы полечите, но в целом пора начинать думать или о распределении нагрузки на несколько серверов, или о переезде на железо. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

17 часов назад, jffulcrum сказал:

Вам надо либо сам Centos обновлять, либо ставить 'Linux Integration Services' с сайта MS последний, чтобы обновить hv_netvsc. Отвалы сетки вы полечите, но в целом пора начинать думать или о распределении нагрузки на несколько серверов, или о переезде на железо. 

спасибо, проведу эксперименты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.