Ilya Evseev Posted February 11, 2012 Posted February 11, 2012 Имеется роутер с FreeBSD 8.2-p4, сетевые "em", трафик <200 mbps, клиентов <1000. Если трафик к клиентам маршрутизируется через внутренний layer3, роутер работает стабильно месяцами. Если клиентские vlan'ы (<100) дотянуты до роутера и роутер шлёт в них трафик напрямую, то каждые несколько дней роутер виснет намертво (см.картинку). Вопрос 1: кто-нибудь с этим сталкивался? Гугл нашёл очень похожее описание - http://forum.pfsense.org/index.php?topic=40769.0 но там дискуссия ведётся с сентября и закончилась ничем в январе. Вопрос 2: что в этой ситуации лучше/хуже - откат на 7.4, обновление до 8-STABLE, обновление до 9-RC? На других роутерах такой проблемы нет, но там либо другие сетевые (не Интел), либо существенно меньше нагрузка, либо более старая версия FreeBSD. Вставить ник Quote
Zohan Posted February 12, 2012 Posted February 12, 2012 Вопрос 2: что в этой ситуации лучше/хуже - откат на 7.4, обновление до 8-STABLE, обновление до 9-RC? Обновить до 9-RELEASE. Вставить ник Quote
Giga-Byte Posted February 12, 2012 Posted February 12, 2012 Вопрос 2: что в этой ситуации лучше/хуже - откат на 7.4, обновление до 8-STABLE, обновление до 9-RC? Обновить до 9-RELEASE. стандартная фраза техподдержки дибилинк, которая не даст полной уверенности. надо лечить причину а не следствие автор, научитесь пользоваться ddb, kgdb. навыки ещё пригодятся. я так понял PPTP у вас? arp нужен. на вскидку напомню - flowtable? я бы смотрел чего в 8-м фрейме - arpintr с дампом памяти. Вставить ник Quote
Ivan_83 Posted February 12, 2012 Posted February 12, 2012 Ещё можно попробовать воспользоваться netgraph для работы с валанами. Вставить ник Quote
Giga-Byte Posted February 13, 2012 Posted February 13, 2012 посмотрел сейчас исходник. без дампа памяти - гадание на кофейно гуще. говорите виснет раз в несколько дней - значит можно воспроизвести проблему. поэтому сохраните дамп памяти, выложите куда-нибудь, вместе с бинарником ядра. также настройте DDB, чтобы сам большинство работы сделал и послал резет процессору. netisr есть возможность выключить? (это конечно не решение проблемы, а воркарауд) Вставить ник Quote
Zohan Posted February 13, 2012 Posted February 13, 2012 Вопрос 2: что в этой ситуации лучше/хуже - откат на 7.4, обновление до 8-STABLE, обновление до 9-RC? Обновить до 9-RELEASE. стандартная фраза техподдержки дибилинк, которая не даст полной уверенности. надо лечить причину а не следствие ТС вообще хотел обновляться до 9-RC :) пусть выложит во время работы vmmstat -z Вставить ник Quote
Ivan_83 Posted February 13, 2012 Posted February 13, 2012 стандартная фраза техподдержки дибилинк, которая не даст полной уверенности.надо лечить причину а не следствие Для начала обновится, потом, если не пройдёт лечится. Там же много всего в коде исправляли. Вставить ник Quote
nuclearcat Posted February 13, 2012 Posted February 13, 2012 А если хуже станет - как откатывать назад? :) Вставить ник Quote
lagman Posted February 13, 2012 Posted February 13, 2012 А если хуже станет - как откатывать назад? :) http://www.freebsd.org/doc/ru/books/handbook/kernelconfig-trouble.html Вставить ник Quote
nuclearcat Posted February 13, 2012 Posted February 13, 2012 Там ровно ничего нет про откат системы назад, есть только как починить нерабочее новое ядро. А ведь новом ядре и системе могут всплыть еще более крутые глюки, и возможность отката должна быть. И ржачные моменты про: Если вы установили версию ядра отличную от той, с которой были собраны ваши системные утилиты, например, ядро от -CURRENT на системе -RELEASE, большая часть системных команд, таких как ps(1) и vmstat(8) не будут больше работать. Вам потребуется перекомпилировать и установить систему той же версии исходных текстов, что и ядро. Это одна из причин, по которой не следует использовать версию ядра, отличную от версии всей остальной системы. Вообще, архаизм. Вставить ник Quote
lagman Posted February 13, 2012 Posted February 13, 2012 Там ровно ничего нет про откат системы назад, есть только как починить нерабочее новое ядро. А ведь новом ядре и системе могут всплыть еще более крутые глюки, и возможность отката должна быть. Качаешь с фтп нужный тебе генерик, распаковываешь в /boot/kernel, ребутишься со старым новым ядром. Какие проблемы? Вставить ник Quote
YuryD Posted February 13, 2012 Posted February 13, 2012 Качаешь с фтп нужный тебе генерик, распаковываешь в /boot/kernel, ребутишься со старым новым ядром. Какие проблемы? Большие, рабочую ос получить можно в базовом варианте, а весь пересобранный мир, как-то сложно... Вставить ник Quote
nuclearcat Posted February 13, 2012 Posted February 13, 2012 А как быть с обновленным юзерспейсом? Как его откатить назад? Вставить ник Quote
DVM-Avgoor Posted February 13, 2012 Posted February 13, 2012 А как быть с обновленным юзерспейсом? Как его откатить назад? Точно так же. Причем не факт что у вас будет не работать что-либо кроме ps/vmstat (что работает со структурами ядра). В плане обновления в пределах major-ветки проблем обычно минимум. Вставить ник Quote
Сильвер Posted February 13, 2012 Posted February 13, 2012 А как быть с обновленным юзерспейсом? Как его откатить назад? freebsd-update имеет ключ -r http://www.freebsd.org/doc/handbook/updating-upgrading-freebsdupdate.html Вставить ник Quote
lagman Posted February 13, 2012 Posted February 13, 2012 А как быть с обновленным юзерспейсом? Как его откатить назад? Каким образом связаны поддержка вланов в ядре и обновленный юзерспейс? Идите буратиньте в другом месте, гражданин ;) Вставить ник Quote
nuclearcat Posted February 13, 2012 Posted February 13, 2012 В том, что топикстартеру посоветовали накатить новую систему, чтоб избавиться от бага, это значит обновить _всё_, и возможно наловить новых глюков. Вставить ник Quote
Ilya Evseev Posted February 13, 2012 Author Posted February 13, 2012 автор, научитесь пользоваться ddb, kgdb. навыки ещё пригодятся. Уважаемый, я умею ими пользоваться, но чтобы ловить проблему, необходимо одно из трёх: 1) watchdog, который перезапустит повисший сервер, 2) "специально подготовленный сержант", который нажмёт ресет, 3) готовность к даунтайму не менее получаса днём и х.з. сколько ночью. Встроенного ватчдога там нет, внешнего тоже (пока?) нет, остальное неприемлемо. я так понял PPTP у вас? Нет. Причём здесь PPTP? Ему не был бы нужен прямой доступ в клиентские vlan'ы. на вскидку напомню - flowtable? Ок, попробую выключить, но вряд ли дело в нём. На других серверах с ядром 8.2 (конфиг ядра и системы одинаковые) и похожей нагрузкой ничего не виснет. Главное отличие - вместо Интелов на них используются встроенные Броадкомы. также настройте DDB, чтобы сам большинство работы сделал и послал резет процессору. Получит ли DDB управление, если даже kdb_backtrace виснет раньше, чем успевает распечатать полный листинг и отправить сервер в ребут? netisr есть возможность выключить? (это конечно не решение проблемы, а воркарауд) Что значит выключить? Его можно вызывать либо из обработчика прерывания от сетевой карты, либо в отдельном потоке(потоках). У меня используется первый вариант: # sysctl net.isr net.isr.numthreads: 1 net.isr.defaultqlimit: 256 net.isr.maxqlimit: 10240 net.isr.bindthreads: 0 net.isr.maxthreads: 1 net.isr.direct: 1 net.isr.direct_force: 1 /boot/loader.conf ichwd_load="YES" netgraph_load="YES" dummynet_load="YES" ng_ipfw_load="YES" ng_netflow_load="YES" kern.coredump=0 kern.hz=4000 # Intel network cards hw.em.rxd=4096 hw.em.txd=4096 hw.em.enable_msi=1 hw.em.rx_int_delay=600 hw.em.tx_int_delay=600 hw.em.rx_abs_int_delay=1000 hw.em.tx_abs_int_delay=1000 /etc/sysctl.conf kern.ipc.somaxconn=512 net.inet.ip.fw.verbose=1 net.link.ether.inet.log_arp_wrong_iface=0 net.inet.ip.dummynet.io_fast=1 net.inet.ip.dummynet.expire=0 net.inet.ip.fastforwarding=0 net.inet.ip.redirect=0 net.inet.ip.fw.dyn_buckets=2048 # default=256 net.inet.ip.dummynet.hash_size=512 # default=64 # Drop SYN without RST on closed ports net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1 # Igor Sysoev settings for Intel network cards: # http://dadv.livejournal.com/49013.html dev.em.0.rx_int_delay=600 dev.em.0.tx_int_delay=600 dev.em.0.rx_abs_int_delay=1000 dev.em.0.tx_abs_int_delay=1000 dev.em.0.rx_processing_limit=1024 dev.em.1.rx_int_delay=600 dev.em.1.tx_int_delay=600 dev.em.1.rx_abs_int_delay=1000 dev.em.1.tx_abs_int_delay=1000 dev.em.1.rx_processing_limit=1024 В том, что топикстартеру посоветовали накатить новую систему, чтоб избавиться от бага, это значит обновить _всё_, и возможно наловить новых глюков. Понимаю Ваш сарказьм, коллега, но в данном случае переезд на Линукс рискует принести ещё больше головняка :) Вставить ник Quote
Сильвер Posted February 13, 2012 Posted February 13, 2012 (edited) Если клиентские vlan'ы (<100) дотянуты до роутера и роутер шлёт в них трафик напрямую, то каждые несколько дней роутер виснет намертво (см.картинку). Вопрос 2: что в этой ситуации лучше/хуже - откат на 7.4, обновление до 8-STABLE, обновление до 9-RC? Попробуйте поставить http://people.freebsd.org/~avg/stop_scheduler_on_panic.8.x.diff Если usb-клавиатура то и http://people.freebsd.org/~avg/stop_scheduler_on_panic.usb.diff и попробуйте снять дамп. http://www.freebsd.org/doc/en/books/developers-handbook/kerneldebug.html#KERNELDEBUG-OBTAIN Если дамп снимется, тогда будет что обсуждать. В 9-Stable эти MFC уже есть. Edited February 13, 2012 by Сильвер Вставить ник Quote
Ilya Evseev Posted February 13, 2012 Author Posted February 13, 2012 пусть выложит во время работы vmmstat -z Смотреть надо только на все строки, или только с ненулевым failures? Без виланов всё красиво: # vmstat -z | egrep -v ' 0$' ITEM SIZE LIMIT USED FREE REQUESTS FAILURES 64 Bucket: 268, 0, 173, 9, 219, 13 128 Bucket: 524, 0, 2297, 6, 3399, 687 # netstat -m | grep -i den 0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters) 0/0/0 requests for jumbo clusters denied (4k/9k/16k) 0 requests for sfbufs denied За подсказку в любом случае спасибо! :) Вставить ник Quote
Zohan Posted February 13, 2012 Posted February 13, 2012 На других серверах с ядром 8.2 (конфиг ядра и системы одинаковые) и похожей нагрузкой ничего не виснет. Главное отличие - вместо Интелов на них используются встроенные Броадкомы. Если это главное и единственное отличие, то логично предположить, что проблема в дровах Интела в связке с Фряхой. В 9-ке более новые дрова на интеловские карты. И как вы делаете Вланы - цисколайк? Вставить ник Quote
Ilya Evseev Posted February 13, 2012 Author Posted February 13, 2012 Если это главное и единственное отличие, то логично предположить, что проблема в дровах Интела в связке с Фряхой. В 9-ке более новые дрова на интеловские карты. Более новые - не есть обязательно хорошо. Потому что в них могли не починить этот баг, а добавить другие. На форуме pfsense написано, что у них данная проблема возникла именно после очередного обновления. Поэтому я и рассматриваю откат на 7.4 как один из вариантов. К сожалению, фактов для принятия решения пока маловато. И как вы делаете Вланы - цисколайк? Вот так: for n in `jot - 100 199`; do v="vlan$n" a="10.10.$n.2/24" ifconfig $v create ifconfig $v inet $a vlan $n vlandev em0 up done Вставить ник Quote
make.kernel Posted February 13, 2012 Posted February 13, 2012 В том, что топикстартеру посоветовали накатить новую систему, чтоб избавиться от бага, это значит обновить _всё_, и возможно наловить новых глюков. Только я в этом мире гружу фрю с флешек с подмонтированием винтов где нужно и куда нужно или еще кто-то? В виртуалке пересобрал мир+ядро+пактыпортапгрейдом, проверил, что все запускается, mdconfig прицепил образ, проинсталил систему потом в chroot проинсталил пакеты, нарисовал конфиги, при первом старте подправил ошибки. Геморойно немного, зато старую флешку потом воткнуть можно, если новая заглючит и парк серверов нада планировать изначально под такую схему. Вставить ник Quote
YuryD Posted February 14, 2012 Posted February 14, 2012 Только я в этом мире гружу фрю с флешек с подмонтированием винтов где нужно и куда нужно или еще кто-то? С флэшками не балуюсь, но у меня есть резервный сервер, на котором и тренируюсь, в конце-концов погасить-поднять порты на каталисте можно и из дома. Вставить ник Quote
Giga-Byte Posted February 14, 2012 Posted February 14, 2012 (edited) тема почему я презираю фряшников перешла в другие тематические темы :)))) на счет netisr, да неверно выразился, директ-ладно. у вас роутер или сервер доступа? kern.hz=4000 зачем это? net.inet.ip.dummynet.io_fast=1 ? если ватчдога нет, плата не на Intel-чипах чтоли? на других тоже не интел? пы.сы. ватчдог DDB-у может помешать сделать свою работу. стоит 7.2 с mpd5.3 на PPPoE серверах и молча работает... уже больше 3-х лет наверное. В том, что топикстартеру посоветовали накатить новую систему, чтоб избавиться от бага, это значит обновить _всё_, и возможно наловить новых глюков. полностью согласен. надо выяснить причину падений. вплоть до анализа данных в mbuf-е Edited February 14, 2012 by Giga-Byte Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.