Jump to content
Калькуляторы

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г, можно еще добавить, если надо.

 

Share this post


Link to post
Share on other sites

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

 

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

Edited by photon

Share this post


Link to post
Share on other sites

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

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

 

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

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

TCP: Hash tables configured (established 131072 bind 43690)

 

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

 

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

 

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
Это называется 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

Share this post


Link to post
Share on other sites

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

Есть ВМ на гипер-в, линукс, центос: 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
 

 

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

Share this post


Link to post
Share on other sites
1 час назад, mse.rus77 сказал:

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

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

Share this post


Link to post
Share on other sites
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
 

Share this post


Link to post
Share on other sites
18 минут назад, mse.rus77 сказал:

 tx_send_full: 833486

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

Share this post


Link to post
Share on other sites
17 часов назад, jffulcrum сказал:

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this