ОС периодически перезагружается или происходит crash. Раз в несколько часов. Машина используется как роутер в сети, шлюз в Инет, прокси-сервер (squid 3.0.STABLE1), веб-сервер (Apache/2.2.6). Так же настроена почта (sendmail + popper). Одна из подсетей nat'ится в Инет. Работает фаервол (ipfw). Ядро пересобирал.
К сети подключена через dial-up модем для выделенной линии.
В логах толком ничего нет. Зависимости между запуском задач и ротацией логов не вижу.
Машина находится все время практически в не нагруженном состоянии.
Железо пробовал менять. Подозреваю, что проблемы в конфигурации. В FreeBSD новичок.
Подскажите, в какую сторону копать?
>Железо пробовал менять. Подозреваю, что проблемы в конфигурации. В FreeBSD новичок.
>Подскажите, в какую сторону копать?Копайте в сторону выяснения причин. Для этого:
1. Включить "makeoptions DEBUG=-g" в ядро;
2. Включить сохранение дампа памяти ядра:
# echo 'dumpdev="AUTO"' >> /etc/rc.conf
# /etc/rc.d/dumpon startЖдать следующей паники и получать backtrace из сохраненного дампа.
http://freebsd.org.ua/doc/ru_RU.KOI8-R/books/developers-hand...
>1. Включить "makeoptions DEBUG=-g" в ядро;Так это потребует полной пересборки всего, что стоит на сервере
>>1. Включить "makeoptions DEBUG=-g" в ядро;
>
>Так это потребует полной пересборки всего, что стоит на сервереЭто потребует только пересборку ядра. И ровным счётом никак не скажется ни на чём.
Пересобрал ядро. Включил опцию отладки.После очередного падения получил (info.0):
Dump header from device /dev/ad6s1b
Architecture: i386
Architecture Version: 2
Dump Length: 527630336B (503 MB)
Blocksize: 512
Dumptime: Mon Jan 28 17:05:56 2008
Hostname: xxx.yyyy.ru
Magic: FreeBSD Kernel Dump
Version String: FreeBSD 6.2-RELEASE #0: Tue Jan 22 10:17:03 VOLT 2008
root@yyyy.ru:/usr/obj/usr/src/sys/SCC
Panic String: page fault
Dump Parity: 847684964
Bounds: 0
Dump Status: goodЕщё огромный файл в полгига - дамп ОЗУ, насколько понимаю.
Вот опции, которые добавлял к стандартному конфигу при пересборке ядра:
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100000
options IPFIREWALL_FORWARD
options DUMMYNETЯ так понимаю, что что-то с адресацией в ОЗУ или на жестком диске. Просто когда ОС ставилась, редактор ругался на геометрию диска. Но все разбил нормально.
Есть большое подозрение на squid, так как он достаточно интенсивно должен работать с жестким диском. А можно как-нибудь заставить его работать только с ОЗУ и кэш держать только в нем. Объем проходящего трафика не большой, размер этого "оперативного" кэша можно ограничить. Прозрачный прокси не хочется включать, так как соединение через модем и прокси хорошо помогает.
Прочитал http://www.opennet.me/openforum/vsluhforumID1/76603.html
После # kgdb -q /boot/kernel/kernel vmcore.0 | tee backtrace.txt
получил (backtrace.txt):
(no debugging symbols found)...(kgdb) bt
#0 0xc0675252 in doadump ()
#1 0xc06757ae in boot ()
#2 0xc0675ad5 in panic ()
#3 0xc089a2dc in trap_fatal ()
#4 0xc0899a4e in trap ()
#5 0xc08860ba in calltrap ()
#6 0xc0873700 in siointr1 ()
#7 0xc0873322 in siointr ()
#8 0xc0889e95 in intr_execute_handlers ()
#9 0xc088c552 in lapic_handle_intr ()
#10 0xc0886473 in Xapic_isr1 ()
#11 0xc0b52129 in ?? ()
#12 0xd4032d00 in ?? ()
#13 0xc088e21c in cpu_idle ()
(kgdb) bt full
#0 0xc0675252 in doadump ()
No symbol table info available.
#1 0xc06757ae in boot ()
No symbol table info available.
#2 0xc0675ad5 in panic ()
No symbol table info available.
#3 0xc089a2dc in trap_fatal ()
No symbol table info available.
#4 0xc0899a4e in trap ()
No symbol table info available.
#5 0xc08860ba in calltrap ()
No symbol table info available.
#6 0xc0873700 in siointr1 ()
No symbol table info available.
#7 0xc0873322 in siointr ()
No symbol table info available.
#8 0xc0889e95 in intr_execute_handlers ()
No symbol table info available.
#9 0xc088c552 in lapic_handle_intr ()
No symbol table info available.
#10 0xc0886473 in Xapic_isr1 ()
No symbol table info available.
#11 0xc0b52129 in ?? ()
No symbol table info available.
#12 0xd4032d00 in ?? ()
No symbol table info available.
#13 0xc088e21c in cpu_idle ()
No symbol table info available.И еще: после перезагрузки squid не перезапускается (в лог пишет, что процесс запущен, однако, скорее всего, это из-за существующего pid-файла). Прекрасно запускается ручками.
>[оверквотинг удален]
>получил (backtrace.txt):
>(no debugging symbols found)...(kgdb) bt
>#0 0xc0675252 in doadump ()
>#1 0xc06757ae in boot ()
>#2 0xc0675ad5 in panic ()
>#3 0xc089a2dc in trap_fatal ()
>#4 0xc0899a4e in trap ()
>#5 0xc08860ba in calltrap ()
>#6 0xc0873700 in siointr1 ()
>#7 0xc0873322 in siointr ()Попробуйте так:
# kgdb -q /usr/obj/usr/src/sys/<ИМЯ ВАШЕГО ЯДРА>/kernel.debug vmcore.0 | tee backtrace.txtУ вас используется что-то что работает с последовательными портами? Если нет, попробуйте в качестве временного решения убрать из ядра "device sio".
>У вас используется что-то что работает с последовательными портами?Да, конечно, это модем. Он на последовательном порте висит.
Вот после вашего предложения, что получил:
Unread portion of the kernel message buffer:
kernel trap 12 with interrupts disabled
Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address = 0xc3b85000
fault code = supervisor read, page not present
instruction pointer = 0x20:0xc0873700
stack pointer = 0x28:0xd4032c34
frame pointer = 0x28:0xd4032c44
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, def32 1, gran 1
processor eflags = resume, IOPL = 0
current process = 10 (idle: cpu0)
trap number = 12
panic: page fault
cpuid = 0
Uptime: 3h55m26s
Dumping 503 MB (2 chunks)
chunk 0: 1MB (159 pages) ... ok
chunk 1: 503MB (128656 pages) 487 471 455 439 423 407 391 375 359 343 327 311 295 279>#0 doadump () at pcpu.h:165
in pcpu.h
>Вот после вашего предложения, что получил:Ну и теперь результат команд bt и bt full покажите...
(kgdb) bt
#0 doadump () at pcpu.h:165
#1 0xc06757ae in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:409
#2 0xc0675ad5 in panic (fmt=0xc08f0c8f "%s") at /usr/src/sys/kern/kern_shutdown.c:565
#3 0xc089a2dc in trap_fatal (frame=0xd4032bf4, eva=3283636224)
at /usr/src/sys/i386/i386/trap.c:837
#4 0xc0899a4e in trap (frame=
{tf_fs = -738000888, tf_es = -1066991576, tf_ds = -1020788696, tf_edi = -7813588, tf_esi = -1019145216, tf_ebp = -737989564, tf_isp = -737989600, tf_ebx = -1011331072, tf_edx = 1016, tf_ecx = 1016, tf_eax = -1019144704, tf_trapno = 12, tf_err = 0, tf_eip = -1064880384, tf_cs = 32, tf_eflags = 589954, tf_esp = 17664, tf_ss = -1020770816})
at /usr/src/sys/i386/i386/trap.c:270
#5 0xc08860ba in calltrap () at /usr/src/sys/i386/i386/exception.s:139
#6 0xc0873700 in siointr1 (com=0xc3411400) at /usr/src/sys/dev/sio/sio.c:1613
#7 0xc0873322 in siointr (arg=0xc3411400) at /usr/src/sys/dev/sio/sio.c:1391
#8 0xc0889e95 in intr_execute_handlers (isrc=0xc32b48c8, iframe=0xd4032c94)
at /usr/src/sys/i386/i386/intr_machdep.c:270
#9 0xc088c552 in lapic_handle_intr (frame=
{if_vec = 58, if_fs = 8, if_es = 40, if_ds = -1061879768, if_edi = -1019710464, if_esi = -1019710440, if_ebp = -737989416, if_ebx = 0, if_edx = 0, if_ecx = 0, if_eax = 1000, if_eip = -1061871319, if_cs = 32, if_eflags = 524870, if_esp = -737989384, if_ss = -1061892314}) at /usr/src/sys/i386/i386/local_apic.c:621
#10 0xc0886473 in Xapic_isr1 () at apic_vector.s:110
#11 0xc0b52129 in ?? ()
#12 0xd4032d00 in ?? ()
#13 0xc088e21c in cpu_idle () at /usr/src/sys/i386/i386/machdep.c:1144
(kgdb) bt full
#0 doadump () at pcpu.h:165
No locals.
#1 0xc06757ae in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:409
first_buf_printf = 1
#2 0xc0675ad5 in panic (fmt=0xc08f0c8f "%s") at /usr/src/sys/kern/kern_shutdown.c:565
td = (struct thread *) 0xc3284600
bootopt = 260
newpanic = 0
ap = 0xc3284600 "\220<(ГАl(Г"
buf = "page fault", '\0' <repeats 245 times>
#3 0xc089a2dc in trap_fatal (frame=0xd4032bf4, eva=3283636224)
at /usr/src/sys/i386/i386/trap.c:837
code = 40
type = 12
ss = 40
esp = 0
softseg = {ssd_base = 0, ssd_limit = 1048575, ssd_type = 27, ssd_dpl = 0,
ssd_p = 1, ssd_xx = 0, ssd_xx1 = 0, ssd_def32 = 1, ssd_gran = 1}
msg = 0x0
#4 0xc0899a4e in trap (frame=
{tf_fs = -738000888, tf_es = -1066991576, tf_ds = -1020788696, tf_edi = -7813588, tf_esi = -1019145216, tf_ebp = -737989564, tf_isp = -737989600, tf_ebx = -1011331072, tf_edx = 1016, tf_ecx = 1016, tf_eax = -1019144704, tf_trapno = 12, tf_err = 0, tf_eip = -1064880384, tf_cs = 32, tf_eflags = 589954, tf_esp = 17664, tf_ss = -1020770816})
at /usr/src/sys/i386/i386/trap.c:270
td = (struct thread *) 0xc3284600
p = (struct proc *) 0xc3283c90
sticks = 524423
i = 0
ucode = 0
type = 12
code = 0
eva = 3283636224
#5 0xc08860ba in calltrap () at /usr/src/sys/i386/i386/exception.s:139
No locals.
#6 0xc0873700 in siointr1 (com=0xc3411400) at /usr/src/sys/dev/sio/sio.c:1613
ocount = 4287153708
int_ctl = 0 '\0'
int_ctl_new = 0 '\0'
line_status = 44 ','
modem_status = 0 '\0'
ioptr = (u_char *) 0xc3b85000 <Address 0xc3b85000 out of bounds>
recv_data = 69 'E'
#7 0xc0873322 in siointr (arg=0xc3411400) at /usr/src/sys/dev/sio/sio.c:1391
com = (struct com_s *) 0xc3411400
#8 0xc0889e95 in intr_execute_handlers (isrc=0xc32b48c8, iframe=0xd4032c94)
at /usr/src/sys/i386/i386/intr_machdep.c:270
td = (struct thread *) 0xc3284600
ie = (struct intr_event *) 0xc32cab00
ih = (struct intr_handler *) 0xc33f3840
vector = -1019267008
thread = 0
#9 0xc088c552 in lapic_handle_intr (frame=
{if_vec = 58, if_fs = 8, if_es = 40, if_ds = -1061879768, if_edi = -1019710464, if_esi = -1019710440, if_ebp = -737989416, if_ebx = 0, if_edx = 0, if_ecx = 0, if_eax = 1000, if_eip = -1061871319, if_cs = 32, if_eflags = 524870, if_esp = -737989384, if_ss = -1061892314}) at /usr/src/sys/i386/i386/local_apic.c:621
isrc = (struct intsrc *) 0xc3411600
#10 0xc0886473 in Xapic_isr1 () at apic_vector.s:110
No locals.
#11 0xc0b52129 in ?? ()
No symbol table info available.
#12 0xd4032d00 in ?? ()
No symbol table info available.
#13 0xc088e21c in cpu_idle () at /usr/src/sys/i386/i386/machdep.c:1144
No locals.
У меня такая же фигня была, когда модем на втором коме сидел.
>У меня такая же фигня была, когда модем на втором коме сидел.
>У меня модем на COM1.
Да и не похоже на модем.
"page fault" - скорее ошибка при операциях со страницами памяти.
Поставил FreeBSD 7.0.Проблема повторилась. Пробовал отключать сервисы.
Завел тред здесь http://otvety.google.ru/otvety/thread?tid=400bc59fafb7df43
Пробовал советы. Бесполезно.
Может это баг? Профи, откликнитесь...
>Поставил FreeBSD 7.0.
>
>Проблема повторилась. Пробовал отключать сервисы.
>Завел тред здесь http://otvety.google.ru/otvety/thread?tid=400bc59fafb7df43
>Пробовал советы. Бесполезно.
>Может это баг? Профи, откликнитесь...у меня такие же симптомы как и в вашем описании.
Изначально FreeBSD 6.2 release, postfix-current-2.6.20080814,4, apache-2.2.9_5, mpd-3.18_5 , squid-2.7.4, dialup server 2 модема через mgetty-1.1.35_1 ну и firewall(IPFW)+router+gateway.Сервер переодически(может прорабтать 2 недели или почти месяц , а может упасть 2 раза за час) валится причем не зависимо от нагрузки. Сначала была вероятность кривого железа. Переставил (благо есть возможность) на новую машину сервер dell 2600 (до этого был 2650 тоже dell). Ничего не изменилось :( причем не просто падает а виснет намертво даже дамп снять не могу. Проапгрейдился до FreeBSD 7.1-PRERELEASE #1 (ничаянно :) хотел до 7.0 релиз да тег не тот выставил) Также ничего не изменилось, правда пару раз дамп снять удалось. Откатил ядро до 7.0 релиз, без изменений. С дампами не разбирался еще но заметил другую вещь. Если я с дома вешаюсь модемом на БСДу и в ssh сессии запускаю компиляцию то сервак падает. Отцепил модемы убрал настройки диалапа. Пока работаю 2 дня 7 чвасов без проблем. Подключался также ssh клиентом только с инета все нормально компились/перекомпились с серваком все ништяк. Возможно действительно дело в комах, только куда копнуть дальше, сервер то диалаповый нужен, незнаю. До этого был диалаповый сервак БСД 4 без проблем. сейчас перевеил модем на обыкновенную машину (не сервер) пентиум 3 кажется с 6 БСДой все пашет нормально . пока тестю , что дальше х.з. :(
>Сервер переодически(может прорабтать 2 недели или почти месяц , а мож.......root# cat info.0
Dump header from device /dev/amrd0s1b
Architecture: i386
Architecture Version: 2
Dump Length: 205033472B (195 MB)
Blocksize: 512
Dumptime: Thu Sep 25 15:44:07 2008
Hostname: server.ru
Magic: FreeBSD Kernel Dump
Version String: FreeBSD 7.1-PRERELEASE #1: Thu Sep 18 08:55:22 MSD 2008
vsh@server.ru:/usr/obj/usr/src/sys/VSH
Panic String: page fault
Dump Parity: 3199973179
Bounds: 0
Dump Status: good
root# cat backtrace.txt.0
Reading symbols from /boot/kernel/acpi.ko...Reading symbols from /boot/kernel/acpi.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/acpi.ko
Reading symbols from /boot/kernel/linux.ko...Reading symbols from /boot/kernel/linux.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/linux.ko
Reading symbols from /boot/kernel/ng_socket.ko...Reading symbols from /boot/kernel/ng_socket.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/ng_socket.ko
Reading symbols from /boot/kernel/netgraph.ko...Reading symbols from /boot/kernel/netgraph.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/netgraph.ko
Reading symbols from /boot/kernel/ng_iface.ko...Reading symbols from /boot/kernel/ng_iface.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/ng_iface.ko
Reading symbols from /boot/kernel/ng_ppp.ko...Reading symbols from /boot/kernel/ng_ppp.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/ng_ppp.ko
Reading symbols from /boot/kernel/ng_bpf.ko...Reading symbols from /boot/kernel/ng_bpf.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/ng_bpf.ko
Reading symbols from /boot/kernel/ng_vjc.ko...Reading symbols from /boot/kernel/ng_vjc.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/ng_vjc.ko
Reading symbols from /boot/kernel/fire_saver.ko...Reading symbols from /boot/kernel/fire_saver.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/fire_saver.ko
Reading symbols from /boot/kernel/ng_pptpgre.ko...Reading symbols from /boot/kernel/ng_pptpgre.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/ng_pptpgre.ko
Reading symbols from /boot/kernel/ng_ksocket.ko...Reading symbols from /boot/kernel/ng_ksocket.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/ng_ksocket.ko
Reading symbols from /boot/kernel/ng_mppc.ko...Reading symbols from /boot/kernel/ng_mppc.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/ng_mppc.ko
Reading symbols from /boot/kernel/rc4.ko...Reading symbols from /boot/kernel/rc4.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/rc4.ko
Reading symbols from /boot/kernel/if_gre.ko...Reading symbols from /boot/kernel/if_gre.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/if_gre.ko
#0 doadump () at pcpu.h:196
in pcpu.h
(kgdb) bt
#0 doadump () at pcpu.h:196
#1 0xc078fb97 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:418
#2 0xc078fe59 in panic (fmt=) at /usr/src/sys/kern/kern_shutdown.c:572
#3 0xc0aa9b9c in trap_fatal (frame=0xe4390a24, eva=0) at /usr/src/sys/i386/i386/trap.c:939
#4 0xc0aa9e00 in trap_pfault (frame=0xe4390a24, usermode=0, eva=0) at /usr/src/sys/i386/i386/trap.c:852
#5 0xc0aaa792 in trap (frame=0xe4390a24) at /usr/src/sys/i386/i386/trap.c:530
#6 0xc0a90f4b in calltrap () at /usr/src/sys/i386/i386/exception.s:159
#7 0xc0aa7bee in generic_bcopy () at /usr/src/sys/i386/i386/support.s:498
(kgdb) bt full
#0 doadump () at pcpu.h:196
No locals.
#1 0xc078fb97 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:418
_giantcnt = (kgdb) quit
У меня наблюдается прямая зависимость от нагрузки. Когда народ в Инет не лезет, то сервер стоит нормально, если прет (и много, человек 20), то он начинает падать. И машину менял и ось, короче теже грабли. Думаю канал забивается 33,6 ведь..
Стоит просто сервер в локалке с PHP, MYSQL, Proftpd и прочей лабудой. Работает до выключения света. UPSa нет(