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

Freebsd 7.1 маршрутизатор - самопроизвольное зависание сети

Привет всем. Опишу проблему, может кто-то уже сталкивался с таким, и знает лекарство :)

 

Есть роутер, на нем FreeBSD 7.1 (недавно release слитый и поставленный). Роутинг между vlan-ами (VPN-сервера доступа, Интернет). Из ПО используем: ipf для фильтрации, ipnat для NAT-а, ipfw для пайпов (шейпинг анлимщиков), dhcpd раздает адреса, quagga (пока без всего, просто заполняет интерфейсы ip-адресами), ng_netflow.

 

Сетевая Intel Pro1000 (em). Система в SMP. polling-а нет (т.е. выключен).

 

Проблема следующая - после нормальной работы где-то в течение 5-6 дней подряд, начинает отваливаться сетевая часть. Т.е. с роутера пакеты никуда не ходят, хотя интерфейсы up. Консоль доступна как обычно, никаких перегрузок не наблюдается. Такое впечатление, что где-то идет бесконечный цикл, т.к. если написать top -S, то видно что ни процесс dummynet, ни irq18: em0, ни em0 taskq не получают процессорного времени (т.е. state у них всё время "-"). Помогает ребут, после которого всё снова работает 5-6 дней. От чего такое происходит - пока не выяснил.

 

Может, кто-то сталкивался с таким, подскажете?

Share this post


Link to post
Share on other sites

Какой чипсет сетевухи? Если сетевая onboard, то еще модель материнской платы.

Edited by G.Y.S.

Share this post


Link to post
Share on other sites

mpd у меня на этом сервере нет, он на другом, и работает отлично :)

 

7.1-STABLE - последняя стоит.

 

SMP отключать очень не хочется, т.к. именно ради него поставил core 2 duo. В однопроцессорном режиме была слишком большая нагрузка на процессор без polling-а.

 

Сетевая Intel PRO/1000 MT Desktop Adapter

Share this post


Link to post
Share on other sites

>недавно release слитый и поставленный

Ваша цитата. А теперь вы говорите не про релиз, а про STABE. Ну ладно. Тогда может sysctl.conf и loader.conf показать общественности?

Share this post


Link to post
Share on other sites
... skip ...

Сетевая Intel PRO/1000 MT Desktop Adapter

Не хочу ставить акцент в качестве причины проблемы, дабы не увести в сторону от истинной причины,но ставить на сервак декстопную сетевую, пусть даже и Интел..

По меньшей мере не солидно.. ;)

Edited by AlKov

Share this post


Link to post
Share on other sites

оно от Server Adapter вроде отличается только ноамером чипа, и идентификаторами. По функционалу - один в один с серверной. На винде серверная часть отрезается драйвером.

Share this post


Link to post
Share on other sites

sysctl.conf:

 

net.inet.ip.intr_queue_maxlen=50

net.inet.icmp.log_redirect=0

net.inet.ip.redirect=0

net.inet.tcp.blackhole=1

net.inet.udp.blackhole=1

 

loader.conf - без изменений

 

 

Со STABLE - да, извиняюсь, перепутал :)

Edited by networks

Share this post


Link to post
Share on other sites

полностью помереть в сетевом плане фря вроде может если какой-то процесс упрется в zonelimit, статус при этом в топе у него будет zoneli.

Лечится только перезагрузкой. По поводу того, как избежать - читать Сысоева про высоконагруженный веб-сервер.

Если причина, конечно, в этом.

Share this post


Link to post
Share on other sites
оно от Server Adapter вроде отличается только ноамером чипа, и идентификаторами. По функционалу - один в один с серверной. На винде серверная часть отрезается драйвером.
Гм.. Интересная логика...

Так и серверная МВ отличается от десктопной только номерами чипов и идентификаторами. А функционал тот-же!!

И нафига тогда серверы строят на "серверном" железе?? А некоторые индивидумы даже "специально заточенное" оборудование ставят типа Cisco!! Наверное, с жиру бесятся.. :)

 

P.S. Извиняюсь за оффтоп - не утерпел.. ;)

Share this post


Link to post
Share on other sites

Право ваше не верить, но есть мнение, что унификация производства удешевляет его. Если есть возможность отключить софтово(в драйвере) функции, то почему бы не делать один и тот же чип для разных сегментов с разными возможностями, которые переключаются в софте?

Это так, к слову. Насчет серверного железа - опять таки бабка надвое сказала. Найдите в спеках разницу между Xeon 3XXX и коркой соответствующей. Думаю, искать устанете.

Убедите меня, что специальная заточка в железе с номером чипа отличающемся на единицу есть, тогда я возьму слова назад

Share this post


Link to post
Share on other sites

Во многих случаях нету, я перешивал интеловские сетевухи из десктоп в сервер и получал более 20 % прибавки скорости

Share this post


Link to post
Share on other sites

Аппаратная разница в сетевухах Desktop и Server иногда есть, а иногда и нет.

У меня был случай, когда зависал серверный SCSI адаптер, установленный в PC, под нагрузкой. А в сервере работал нормально.

По той простой причине, что в сервере проточное охлаждение, а в PC этим делом туго.

 

Поэтому неизвестно, виновато ли это в проблемах ТС.

Проверьте чтоль чип на нагрев. Но почему-то мне кажется не в этом дело.

 

 

Share this post


Link to post
Share on other sites

У кого-нибудь еще есть идеи? А то скоро опять отрубится :)

Share this post


Link to post
Share on other sites

У кого-нибудь еще есть идеи? А то скоро опять отрубится :)

Попробуйте net.isr.direct=0 в sysctl.conf

Share this post


Link to post
Share on other sites

net.inet.ip.intr_queue_maxlen=50 в любом случае надо увеличить минимум в 2, а луче в в 4-ре раза

Share this post


Link to post
Share on other sites

net.isr.direct пока попробую.

 

А про intr_queue_maxlen - где-то можно посмотреть статистику, хватает ли значения 50, или не хватает?

Share this post


Link to post
Share on other sites

net.inet.ip.intr_queue_drops: 4867 - это много, или мало?

 

uptime:

17:20 up 2 days, 19:38, 1 user, load averages: 0,09 0,17 0,18

Share this post


Link to post
Share on other sites

достаточно что бы увеличить net.inet.ip.intr_queue_maxlen

Share this post


Link to post
Share on other sites
net.inet.ip.intr_queue_drops: 4867 - это много, или мало?

 

uptime:

17:20 up 2 days, 19:38, 1 user, load averages: 0,09 0,17 0,18

Это немного, из-за них зависаний быть не должно, но то, что они есть, тоже не гуд. Выставь intr_queue_maxlen например в 200.

Зависания-то прекратились?

Share this post


Link to post
Share on other sites

net.inet.ip.intr_queue_drops: 21013

 

За сегодня возросло до этого значения. Не знаю, может это связано с переключением net.isr.direct -> 0 ?

 

Завтра попробую поставить intr_queue_maxlen -> 200, и посмотреть, будет ли это влиять на рост intr_queue_drops

 

С зависаниями - пока не знаю :) Виснет раз в 5-6 дней, с последнего зависания прошло еще только три дня.

Edited by networks

Share this post


Link to post
Share on other sites

Поставил net.inet.ip.intr_queue_maxlen=200. intr_queue_drops расти перестал.

 

Тем не менее, сейчас опять предзависное состояние. Т.е. доступ по ssh периодически лагает, и происходит потеря пакетов до некоторых узлов.

 

По TOP перегрузки нет, netstat -w 1 ошибок не выдает. Даже не знаю, что посмотреть..

Share this post


Link to post
Share on other sites

Похоже проблема где-то в dummynet, т.к. при выгрузке всех правил, ограничивающих скорость абонентов, тормоза прекратились. Когда загрузил их обратно - опять начались проблемы.

 

Причем интересно, что после перезагрузки в течение нескольких дней всё работает нормально, а потом начинаются тормоза, постепенно приводящие к полному зависанию сетевой части.

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