Назад | Перейти на главную страницу

Как отладить тихое зависание при выключении Solaris 10?

Мы испытываем загадочное зависание при выключении недавно созданного блока Oracle / Sun Solaris 10 SPARC. Это повторяется (в том же месте ... насколько мы можем судить). Мы даем ему возможность поработать несколько раз в течение 5-10 минут, но ничего не вышло.

Я никогда раньше не видел этого.

Последнее, что отображается на консоли, это то, что syslogd был отправлен сигнал 15. Перед нами отключение snmpdx на коробке последней вещью на консоли было то, что snmpdx был отправлен сигнал 15 (после syslogd был отправлен сигнал 15).

Хотя это было очень редко, в прошлые дни Solaris я бы лучше понял из опыта, где может быть проблема, и затем мог бы сузить круг вопросов с помощью глупой (но эффективной) отладки. echo положения в /etc/*.d скрипты. С SMF на картинке, я не совсем уверен, с чего начать.

Мы создали аварийный дамп через sync на {ok} запросите дальнейший анализ, а затем позвольте окну подняться, потому что это рабочий сервер и наше запланированное окно простоя закрывается.

/var/adm/messages ничего полезного не показывает.

Как бы вы отладили эту ситуацию? Есть ли способ перестать скрывать то, что происходит при выключении, чтобы показать, например, все, что делается? (Мне никогда не нравилось, что многое скрывается, начиная с Solaris 10, и во время загрузки)

mdb ps файла savecore показывает, что во время зависания выполнялись следующие процессы (afsd - это клиент OpenAFS, и многие из них ожидаются):

> > ::ps
S    PID   PPID   PGID    SID    UID      FLAGS             ADDR NAME
R      0      0      0      0      0 0x00000001 00000000018387c0 sched
R    108      0      0      0      0 0x00020001 00000600110fe010 zpool-silmaril-p
R      3      0      0      0      0 0x00020001 0000060010b29848 fsflush
R      2      0      0      0      0 0x00020001 0000060010b2a468 pageout
R      1      0      0      0      0 0x4a024000 0000060010b2b088 init
R   1327      1   1327    329      0 0x4a024002 00000600176ab0c0 reboot
R    747      1      7      7      0 0x42020001 0000060017f9d0e0 afsd
R    749      1      7      7      0 0x42020001 00000600180104d0 afsd
R    752      1      7      7      0 0x42020001 0000060017cb44b8 afsd
R    754      1      7      7      0 0x42020001 0000060017fc8068 afsd
R    756      1      7      7      0 0x42020001 0000060017fcb0e8 afsd
R    760      1      7      7      0 0x42020001 00000600177f4048 afsd
R    762      1      7      7      0 0x42020001 000006001800f8b0 afsd
R    764      1      7      7      0 0x42020001 000006001800ec90 afsd
R    378      1    378    378      0 0x42020000 0000060013aee480 inetd
R      7      1      7      7      0 0x42020000 0000060010b28008 svc.startd
R    329      7    329    329      0 0x4a024000 00000600110ff850 sh
Z    317      7    317    317      0 0x4a014002 0000060013b3a490 sac 

При использовании SMF вы все еще можете использовать старомодные эхо-сигналы в скриптах. Просто зайдите в / lib / svc / method и отредактируйте. Из этого списка процессов я бы сказал, что это связано с AFS, но я этим не пользовался.

/ var / svc / log содержит файлы журналов для всех служб, подпадающих под управление SMF. По крайней мере, это отправная точка для устранения проблем с процессами SMF.

Я согласен с Дэвидом, убедитесь, что с этого сервера нет подключений NFS, которые могут оставаться открытыми, и что этот сервер не монтирует другие файловые системы NFS, которые могут быть недоступны.

Мне сразу приходят в голову две вещи. Во-первых, я использовал NFS, чтобы сделать это, когда клиент заканчивался, а сервер был недоступен.

В качестве альтернативы, при отладке я бы посмотрел на использование -x вариант sh или ksh при запуске, предполагая, что вы все еще можете добраться до скриптов.

Прошло некоторое время, но насколько я помню, если вы загрузите коробку с аргументами ядра -v -m verbose, вы получите сообщения ядра (-v) и сообщения SVCS (-m verbose), отображаемые на консоли. По крайней мере, так вы могли бы лучше понять, что он пытается сделать ...

tail /var/svc/log/rc6.log поможет, если вы выполнили init 6. Однако любой экземпляр проблем с fmd может вызвать его зависание.