ArcheRAWG Posted February 7, 2022 Share Posted February 7, 2022 Если вы увидели такое сообщение на сервере, значит пришло время посмотреть и оценить сетевую нагрузку на сервер. Посмотреть текущее состояние буферов можно так: # netstat -m 1026/2709/3735 mbufs in use (current/cache/total) 1024/1766/2790/132096 mbuf clusters in use (current/cache/total/max) 1024/768 mbuf+clusters out of packet secondary zone in use (current/cache) 0/802/802/66048 4k (page size) jumbo clusters in use (current/cache/total/max) 0/0/0/33024 9k jumbo clusters in use (current/cache/total/max) 0/0/0/16512 16k jumbo clusters in use (current/cache/total/max) 2304K/7417K/9721K bytes allocated to network (current/cache/total) 0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters) 0/0/0 requests for jumbo clusters denied (4k/9k/16k) 0/0/0 sfbufs in use (current/peak/max) 0 requests for sfbufs denied 0 requests for sfbufs delayed 15 requests for I/O initiated by sendfile 0 calls to protocol drain routines или # vmstat -z | grep mbuf mbuf_packet: 256, 0, 1024, 768, 9163111497, 0 mbuf: 256, 0, 2, 1941, 6166886673, 0 mbuf_cluster: 2048, 132096, 1792, 998, 14208, 0 mbuf_jumbo_page: 4096, 66048, 0, 802, 166262704, 0 mbuf_jumbo_9k: 9216, 33024, 0, 0, 0, 0 mbuf_jumbo_16k: 16384, 16512, 0, 0, 0, 0 mbuf_ext_refcnt: 4, 0, 0, 672, 11055, 0 Так же можно ещё посмотреть количество коллизий на интерфейсах: # netstat -id Если кратко объяснить, что оно такое: нехватка системных буферов для выполнения операций. Как правило такая проблема появляться на плохих сетевых карточках и не всегда зависит от большой нагрузки. К примеру, я наблюдал такую ситуацию, когда в кроне выставлен пинг (8 пакетов) на хост каждый 5 минут и за сутки появлялось такое сообщение на шлюзе, который обслуживает 20 человек с каналом загрузки до 10мбит. Но что же сделать, что бы избавиться от этого раз и навсегда? Самый правильный способ — поставить хорошие сетевые карточки, например, Intel (igb). Второй вариант даёт результат с вероятностью 50%. Он представляет собой небольшой тюниг переменных системы и ядра. Опишу его ниже. — увеличиваем количество nmbclusters и буферов: echo 'kern.ipc.nmbclusters=524288' >> /boot/loader.conf echo 'kern.ipc.maxsockbuf=1048576' >> /boot/loader.conf echo 'hw.igb.rxd=4096' >> /boot/loader.conf echo 'hw.igb.txd=4096' >> /boot/loader.conf где igb — имя сетевой карты, на которой возникают проблемы (если у вас другая — замените соответственно на другое имя) Примечание. На 64-битных системах с большим объёмом памяти можно выставить значения kern.ipc.nmbclusters=1000000 — увеличиваем размер буфера net.inet.tcp.sendbuf_max=16777216 net.inet.tcp.recvbuf_max=16777216 net.inet.tcp.sendbuf_inc=16384 net.inet.tcp.recvbuf_inc=524288 — увеличиваем количество пользователей и значение буферов пересобираем ядро с такими параметрами maxusers 512 options NBUF=4096 Если вы используете netgraph, можно ещё увеличить такие значения: net.graph.maxdgram=524288 net.graph.recvspace=524288 Если же после этого тюнинга продолжают появляться такие ошибки — попробуйте либо увеличить значения либо поставить всё же нормальную сетевую карточку. Открыть запись Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now