Помогите найти причину отчего падает сервер.
# cd /var/crash
# kgdb -q /boot/kernel/kernel vmcore.N | tee backtrace.txt (N - это номер дампа)
(kgdb) bt
(kgdb) bt full
(kgdb) quit
Unread portion of the kernel message buffer:
Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address = 0x4
fault code = supervisor read, page not present
instruction pointer = 0x20:0xc04474d7
stack pointer = 0x28:0xcc59f9c4
frame pointer = 0x28:0xcc59fa3c
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, def32 1, gran 1
processor eflags = interrupt enabled, resume, IOPL = 0
current process = 24 (irq16: rl1)
trap number = 12
panic: page fault
cpuid = 0
Uptime: 5d14h35m48s
Physical memory: 247 MB
Dumping 61 MB: 46 30 14#0 doadump () at pcpu.h:195
in pcpu.h
(kgdb) bt
#0 doadump () at pcpu.h:195
#1 0xc051a9e7 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:409
#2 0xc051aca9 in panic (fmt=) at /usr/src/sys/kern/kern_shutdown.c:563
#3 0xc06eb9ec in trap_fatal (frame=0xcc59f984, eva=4)
at /usr/src/sys/i386/i386/trap.c:899
#4 0xc06ebc50 in trap_pfault (frame=0xcc59f984, usermode=0, eva=4)
at /usr/src/sys/i386/i386/trap.c:812
#5 0xc06ec5d2 in trap (frame=0xcc59f984) at /usr/src/sys/i386/i386/trap.c:490
#6 0xc06d2f5b in calltrap () at /usr/src/sys/i386/i386/exception.s:139
#7 0xc04474d7 in nat_new (fin=0xcc59fab4, np=0xc22d6a00, natsave=0x0, flags=)
at /usr/src/sys/contrib/ipfilter/netinet/ip_nat.c:2577
#8 0xc044ba32 in fr_checknatin (fin=0xcc59fab4, passp=0xcc59fab0)
at /usr/src/sys/contrib/ipfilter/netinet/ip_nat.c:4122
#9 0xc043d4f7 in fr_check (ip=0xc35a4d54, hlen=20, ifp=0xc1ddb400, out=0,
mp=0xcc59fb9c) at /usr/src/sys/contrib/ipfilter/netinet/fil.c:2572
#10 0xc044001f in fr_check_wrapper (arg=0x0, mp=0xcc59fb9c, ifp=0xc1ddb400,
dir=1) at /usr/src/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c:178
#11 0xc05b5418 in pfil_run_hooks (ph=0xc0791000, mp=0xcc59fbf4,
ifp=0xc1ddb400, dir=1, inp=0x0) at /usr/src/sys/net/pfil.c:78
#12 0xc05d6321 in ip_input (m=0xc35a4d00)
at /usr/src/sys/netinet/ip_input.c:417
#13 0xc05b4f95 in netisr_dispatch (num=2, m=0xc35a4d00)
at /usr/src/sys/net/netisr.c:185
#14 0xc05af6e1 in ether_demux (ifp=0xc1ddb400, m=0xc35a4d00)
at /usr/src/sys/net/if_ethersubr.c:834
#15 0xc05afad3 in ether_input (ifp=0xc1ddb400, m=0xc35a4d00)
at /usr/src/sys/net/if_ethersubr.c:692
#16 0xc0650ee8 in rl_rxeof (sc=0xc1de1000) at /usr/src/sys/pci/if_rl.c:1205
#17 0xc0651daa in rl_intr (arg=0xc1de1000) at /usr/src/sys/pci/if_rl.c:1362
#18 0xc04fdc0b in ithread_loop (arg=0xc1deda60)
at /usr/src/sys/kern/kern_intr.c:1036
#19 0xc04faa09 in fork_exit (callout=0xc04fda60 <ithread_loop>,
arg=0xc1deda60, frame=0xcc59fd38) at /usr/src/sys/kern/kern_fork.c:781
#20 0xc06d2fd0 in fork_trampoline () at /usr/src/sys/i386/i386/exception.s:205
(kgdb) bt full
#0 doadump () at pcpu.h:195
No locals.
#1 0xc051a9e7 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:409
_giantcnt = (kgdb) quit
> Помогите найти причину отчего падает сервер.А нельзя ли осведомиться хотя бы о версии используемой операционной системы?
То, что это FreeBSD, понятно по использованию kgdb, но дальнейшее... Моя лично экстрасенсорикой не владеть, а штатный телепат в отпуск уехал.
> 0xc04474d7 in nat_new (fin=0xcc59fab4, np=0xc22d6a00, natsave=0x0, flags=)
> at /usr/src/sys/contrib/ipfilter/netinet/ip_nat.c:2577Падает, скорее всего, из-за переполнения NAT таблицы. Но это предположение, точнее было бы посмотреть на:
frame 7
listА вообще, версию бы неплохо узнать, а релиз или стейбл ветки
>> 0xc04474d7 in nat_new (fin=0xcc59fab4, np=0xc22d6a00, natsave=0x0, flags=)
>> at /usr/src/sys/contrib/ipfilter/netinet/ip_nat.c:2577
> Падает, скорее всего, из-за переполнения NAT таблицы. Но это предположение, точнее было
> бы посмотреть на:
> frame 7
> list
> А вообще, версию бы неплохо узнать, а релиз или стейбл веткиВерсия старенькая.
FreeBSD jag.ker.ru 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Fri Jul 5 18:14:11 MSD 2013 55@jag.ker.ru:/usr/obj/usr/src/sys/SERV2 i386Я пробовал на тестовом сервере обновить эту систему до 8 версии, обновление прошло успешно, но падения не прекратились.
Сервер используется в качестве шлюза. Используется ipnat, ipf, еще стоит на нем squid и postfix.Вот статистика по ipnat (почти без нагрузки):
#ipnat -s
mapped in 6621462 out 5870774
added 464751 expired 463491
no memory 0 bad nat 0
inuse 1260
orphans 0
rules 48
wilds 0
hash efficiency 74.21%
bucket usage 45.68%
minimal length 0
maximal length 4
average length 1.348
TCP Entries per state
0 1 2 3 4 5 6 7 8 9 10 11
0 80 0 0 446 20 1 0 0 0 438 14#ipf -T list | grep nattable
ipf_nattable_sz min 0x1 max 0x7fffffff current 2047
ipf_nattable_max min 0x1 max 0x7fffffff current 30000Как думаете, по этой http://muff.kiev.ua/content/ipnat-tune статье можно оптимизировать ipnat?
> #ipf -T list | grep nattable
> ipf_nattable_sz min 0x1 max 0x7fffffff current 2047
> ipf_nattable_max min 0x1 max 0x7fffffff
> current 30000
> Как думаете, по этой http://muff.kiev.ua/content/ipnat-tune статье можно оптимизировать
> ipnat?Можно, но для начала было бы неплохо убедиться, что тут требуется именно LARGE_NAT.
При нагрузке то реально размер таблицы близок к 30000?
Возможно правила некорректно прописаны и порождают паразитные стейты, что и приводит к исчерпанию таблицы
>[оверквотинг удален]
>> ipf_nattable_sz min 0x1 max 0x7fffffff current 2047
>> ipf_nattable_max min 0x1 max 0x7fffffff
>> current 30000
>> Как думаете, по этой http://muff.kiev.ua/content/ipnat-tune статье можно оптимизировать
>> ipnat?
> Можно, но для начала было бы неплохо убедиться, что тут требуется именно
> LARGE_NAT.
> При нагрузке то реально размер таблицы близок к 30000?
> Возможно правила некорректно прописаны и порождают паразитные стейты, что и приводит к
> исчерпанию таблицыдописал в rc.conf:
ipfilter_flags="-T ipf_nattable_sz=10009,ipf_nattable_max=300000 -E"
при перезагрузке выходит сообщение:
Enabling ipfilter.
ioctl(SIOCIPFSET): Device busyТаблица nat записей не увеличилась. Подскажите, как это исправить?
>[оверквотинг удален]
>> LARGE_NAT.
>> При нагрузке то реально размер таблицы близок к 30000?
>> Возможно правила некорректно прописаны и порождают паразитные стейты, что и приводит к
>> исчерпанию таблицы
> дописал в rc.conf:
> ipfilter_flags="-T ipf_nattable_sz=10009,ipf_nattable_max=300000 -E"
> при перезагрузке выходит сообщение:
> Enabling ipfilter.
> ioctl(SIOCIPFSET): Device busy
> Таблица nat записей не увеличилась. Подскажите, как это исправить?# ipf -D -T ipf_nattable_sz=10009,ipf_nattable_max=300000 -E
# ipf -T list |grep -i nattвручную работает?
если да - значит с /etc/rc.conf нужно иначе поступать
если нет, что-то у вас с ipfilter не то, мб старый с багами?
> Enabling ipfilter.
> ioctl(SIOCIPFSET): Device busy
> Таблица nat записей не увеличилась. Подскажите, как это исправить?SIOCIPFSET отрабатывает только в том случае, если ipfilter загружен, но не активирован.
Иначе будет возвращаться EBUSY, как в твоём случае. Так что это некорректная инициализация.Т.е. надо сначала ipf -D, потом изменить параметры и только потом снова его включить.
Если в /etc/rc.d/ipfilter такого механизма (бегло пробежался, не нашёл), то можно это сделать через переопределение start_precmd (придётся патчить /etc/rc.d/ipfilter)
>> Enabling ipfilter.
>> ioctl(SIOCIPFSET): Device busy
>> Таблица nat записей не увеличилась. Подскажите, как это исправить?
> SIOCIPFSET отрабатывает только в том случае, если ipfilter загружен, но не активирован.
> Иначе будет возвращаться EBUSY, как в твоём случае. Так что это некорректная
> инициализация.
> Т.е. надо сначала ipf -D, потом изменить параметры и только потом снова
> его включить.
> Если в /etc/rc.d/ipfilter такого механизма (бегло пробежался, не нашёл), то можно это
> сделать через переопределение start_precmd (придётся патчить /etc/rc.d/ipfilter)Я вначале прописал без опции -D. IPf прописан в ядре.
В rc.conf прописал так:
# -- IPF
ipfilter_enable="YES" # Start ipf firewall
ipfilter_rules="/etc/ipf.rules" # loads rules definition text file
ipfilter_flags="-D -T ipf_nattable_sz=10009,ipf_nattable_max=300000 -E"
ipmon_enable="YES" # Start IP monitor log
ipmon_flags="-Ds" # D = start as daemon
# s = log to syslog
# v = log tcp window, ack, seq
# n = map IP & port to namesЗагрузился вроде нормально, размерность таблиц увеличилась.
Но отрубился инет на машине. При пинге пишет:
cannot resolve ya.ru: Host name lookup failure.
От чего это произошло?
> Загрузился вроде нормально, размерность таблиц увеличилась.
> Но отрубился инет на машине. При пинге пишет:
> cannot resolve ya.ru: Host name lookup failure.
> От чего это произошло?"У меня в подвале подземный стук, скажи мне, что там стучит."(c)
ты бы прежде чем сразу писать на форум сделал бы хоть какую-то диагностику, ну там ping 8.8.8.8 и шлюза дефолтного, правила показал бы.Задавай вопросы так, чтобы на них можно было ответить.