Пошук несправностей при зависаннях і аваріях Lotus Domino, HTML, XML, DHTML, Інтернет-технології, статті

Lotus Domino є дуже надійним сервером. Але навіть самі надійні продукти можуть стикатися з проблемами, що викликають їх зависання або аварії. Якщо це відбувається, то чим швидше ви зможете ізолювати, проаналізувати і виправити проблему, тим раніше ваші користувачі продовжать щасливо працювати, а ви повернетеся до інших турбот.


В даній статті пропонуються деякі ідеї, які ви можете використовувати для виправлення проблем Notes / Domino. Ми почнемо з визначення відмінностей між зависанням сервера і аварією сервера, і тим, як ви можете вступити до кожної з цих ситуацій. Ми завершимо цю статтю оглядом нових функціональних можливостей щодо пошуку несправностей, включених в Notes / Domino 7, останній версії продукту. Ми припускаємо, що ви є досвідченим адміністратором Domino і знайомі з основними концепціями і термінологією Notes / Domino.


Що таке зависання і аварії сервера?


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


Аварія сервера


Аварія сервера Domino являє собою ситуацію, коли серверна програма завершується і більше не працює. Найчастіше, ви можете визначити завдання, яке виконував сервер перед завершенням роботи, переглянувши аварійний екран або log-файл NSD / RIP (в залежності від працюючої у вас версії Domino).


Спільними симптомами аварії сервера Domino є:


Існує кілька різних типів аварій сервера. Наприклад, одноразова аварія. Як випливає з назви, вона може виникнути один раз і ніколи більше не з’являтися. Одноразова аварія Domino може бути викликана пошкодженої пам’яттю або пошкодженим документом, до якого звернувся процес. Наприклад, припустимо, що поміщений в Mail.box документ пошкоджений. Коли маршрутизатор Domino звертається до Mail.box для перенаправлення документа його адресату, це призводить до аварії сервера Domino. Аналогічна ситуація може виникнути (а може й ні) в майбутньому. Зазвичай, одноразові аварії аналізувати найважче.


Відтворювана аварія – Це аварія, яку можна повторити, виконавши певну послідовність дій. Одним із прикладів є форма, яка містить неправильно закодовану кнопку, натискання якої завжди викликає аварію.


Періодичні аварії виникають за певним графіком. Вони не здаються пов’язаними з якими конкретними діями, а можуть відбуватися в один і той же час кожен день. У таких ситуаціях ви повинні точно ідентифікувати, що виконується на сервері в цей час і що може викликати проблему. Наприклад, уявіть, що на сервері Domino працює запланований агент (scheduled agent) запускається кожен місяць. Цей агент може викликати аварію сервера. В таких сценаріях ви повинні спочатку заборонити агента, що створює проблему, і потім розібратися, чому агент викликає проблему (і усунути причину).


ABEND – Це спеціальна форма аварії сервера. Термін ABEND – це комбінація слів “abnormal end” (аварійне завершення). ABEND-аварії не створюють файли RIP або NSD.


До причин аварій належать:


Звісно сервера


Звісно сервера Domino – це ситуація, коли сервер Domino все ще працює, але одна або більше задач на сервері не відповідає на запити. Ці завдання все ще можуть бути активні, але вони не роблять того, що повинні. Термін “зависання” визначає також стан, який іноді виникає, коли комп’ютерні програми не працюють так, як задумано. Велику частину часу зависання виникають через низькорівневого зациклення або постійної недоступності ресурсу, що викликає серйозні проблеми продуктивності. Зависання сервера найбільш часто приписуються проблем з ресурсами, тому вони іноді розглядаються як проблеми продуктивності.


Під час зависання програма здається паралізованою, повідомлення про помилки не відображаються, а екран завмирає, або додаток не відповідає на дії користувача. Введення з клавіатури або натискання кнопок миші не мають ніякого ефекту, незалежно від того, де знаходиться курсор, але програма все ще працює. На відміну від ABEND або аварії, зависання іноді проходить саме по собі, і додаток продовжує свою нормальну роботу без вашого втручання. Така ситуація більше може розглядатися як проблема продуктивності, а не як зависання.


Симптомами зависання сервера Domino є:


Зверніть увагу на те, що в ситуації з зависанням сервера, NSD / RIP ніколи не генеруються автоматично.


До причин зависань сервера відносяться проблеми ресурсів (недостатньо ресурсів), конфлікти зі сторонніми додатками і апаратні проблеми. У загальному випадку зависання сервера важче проаналізувати, чим аварії сервера. Одне останнє зауваження: аварії і зависання виникають не тільки на сервері Domino, вони також відбуваються і на Notes-клієнті.


Пошук несправностей


У даному розділі ми проаналізуємо загальні підходи до пошуку несправностей при аваріях і зависання сервера.


Пошук несправностей при аваріях сервера Domino


Якщо сталася аварія сервера Domino, і він не може перезапуститися, видаліть завдання з змінної Notes.ini Servertask і спробуйте звузити область пошуку і ідентифікувати завдання, що викликає аварію. Якщо ви підозрюєте, що викликає проблему конкретне завдання, відкрийте консоль сервера і скоротите число можливих повідомлень про помилки, що генеруються завданням. Наприклад, якщо маршрутизатор викликав аварію при зверненні до пошти в Mail.box, перейменуйте Mail.box і дайте можливість серверу знову створити Mail.box.


Якщо ви підозрюєте, що проблема полягає в пошкодженій базі даних, запустіть автономні завдання, які обслуговують цю базу даних. Якщо аварія виникає регулярно, перегляньте дії, що виконуються на сервері під час аварії.


Розгляньте наступні питання:


Пошук несправностей при аварії Notes-клієнта


По-перше, визначте, специфічна проблема для конкретного користувача. Якщо так, перевірте конфігурацію цього користувача і порівняйте її з конфігураціями інших користувачів. Також визначте, виникає Чи проблема через звернення до іншого додатком. Якщо так, перегляньте додаток разом з розробником.


Якщо ви підозрюєте, що проблема викликана пошкодженої базою даних або документом, запустіть службові завдання Updall, Fixup і Compact (з відповідними ключами). Також, спробуйте, по можливості, заново створити повнотекстовий індекс у базі даних, якщо вважаєте, що проблема виникла через погане індексу.


Пошук несправностей при зависаннях сервера Domino


Якщо на консолі сервера постійно з’являються проблеми c семафорами, перевірте, чи немає конфлікту в графіку завдань. Якщо система повільно реагує, перевірте ваші не Domino програми, щоб визначити, працюють вони теж повільно. Крім того (як загальне правило), переконайтеся в тому, що система оновлена ​​останніми латками (patch).


NSD-аналіз
Визначення процесу, який спричинив аварію на сервері, часто є першим кроком в усуненні аварії на сервері. В Domino 6 і старше NSD-файл може бути хорошим місцем для початку пошуку. NSD надає всю поточну інформацію про стан сервера (стек викликів для всіх потоків, інформацію про оперативну пам’ять і т.д.). У випадку аварії log-файл NSD буде генеруватися автоматично сервером Domino і буде збережений в каталозі dataIBM_TECHNICAL_SUPPORT. log-файл NSD буде мати назву, що включає в себе мітку часу генерування NSD. Наприклад: Nsd_W32I_KIRANTP_2006_01_17@17_17_18.log вказує на те, що цей NSD був створений 17 січня 2006 року. Коли NSD виконується, він прикріплюється до кожного процесу і потоку для дампа стека викликів. Це може допомогти вам визначити причину аварії сервера або робочої станції.


“Серцем” NSD-файлу є секція трасування стека. Ця секція надає схему проходження коду кожного потоку в існуючому процесі та його поточний стан. Це дуже корисно при аналізі аварії або зависання на сервері. Також, досліджуючи NSD-файл, ви можете знайти всі основні файли, згенеровані в каталозі Domino data і можете виконати основний аналіз трасування останнього стека викликів, які були зроблені аварійним процесом. У такому складному продукті, як Domino, трасування стека однакового дії на двох різних серверах може видати різні результати.


В NSD-файлі ви можете ідентифікувати виконуваний файл аварійного процесу, виконавши пошук за словами “fatal,” “panic” або “segmentation”. Визначаючи процес, ми можемо побачити, що йому передувало і, можливо, визначити, як виникла аварія. Якщо не було знайдено ні “panic”, ні “fatal”, іноді дамп може містити посилання на “segmentation fault” в функції. Це вказує на те, що процес спробував звернутися до загального сегменту пам’яті, який з якихось причин був пошкоджений і завершився аварійно без виклику “fatal_error” або “panic”.


Нижче наведено фрагмент NSD-файлу, який був створений при аварії серверного процесу:


### FATAL THREAD 39/83 [ nSERVER:07c0: 2764]
### FP=0743f548, PC=60197cf3, SP=0743ebd0, stksize=2424
Exception code: c0000005 (ACCESS_VIOLATION)
############################################################
@[ 1] 0x60197cf3 nnotes._Panic@4+483 (7430016,496dae76,0,496dace8)
@[ 2] 0x600018a4 nnotes._OSBBlockAddr@8+148 (1153f38,2000000,743f608,1)
@[ 3] 0x6000bd92 nnotes._CollectionNavigate@24+610 (0,743fc74,f,0)
@[ 4] 0x600626cc nnotes._ReadEntries@68+2860 (4c5440e8,4cfb8dba,800f,1)
@[ 5] 0x600b9f6f nnotes._NIFReadEntriesExt@72+351 (0,4cfb8dba,800f,1)
@[ 6] 0x10032d40 nserverl._ServerReadEntries@8+1424 (0,8d0c0035,4b64b5bc,4ae46dd6)
@[ 7] 0x100191fc nserverl._DbServer@8+2284 (41b0383,cb740064,0,23696f8)
@[ 8] 0x1002b8c8 nserverl._WorkThreadTask@8+1576 (4711d68,0,3,563fb10)
@[ 9] 0x100016cb nserverl._Scheduler@4+763 (0,563fb10,0,10ec334)
@[10] 0x6011e5e4 nnotes._ThreadWrapper@4+212 (0,10ec334,563fb10,0)
[11] 0x77e887dd KERNEL32.GetModuleFileNameA+465


Коли аварійний процес визначений, ви можете сфокусуватися на пошуку несправностей в цьому конкретному процесі.


ServerTasks
Якщо аварія сервера відбувається постійно (наприклад, кожні п’ять хвилин), корисно тимчасово видалити рядок ServerTasks = з файлу Notes.ini сервера. Тоді сервер може бути перезапущений і завдання можна буде завантажити поодинці для визначення процесу, що викликає аварію.


Panic-повідомлення
Коли Domino виявляє постійну помилку або умова, яку може привести до пошкодження даних або до будь-яких інших проблем, він негайно викликає підпрограму, звану Panic. Це спеціальна структура, використовувана для постійного моніторингу критичних частин коду під час його роботи. Вона допомагає якомога раніше виявити проблеми перед їх загостренням і можливим пошкодженням даних. Коли викликається panic, система негайно зупиняється (це можна розглядати як контрольовану аварію). При цьому генеруються повідомлення, іноді англійською, а іноді у вигляді коду (наприклад: PANIC: 04:3 C). Ви можете передати цей код в службу Lotus Software Technical Support для подальшого пошуку несправностей.


Інструментальні засоби для пошуку несправностей


У даному розділі розглядаються деякі з інструментальних засобів пошуку несправностей, доступні при виникненні аварії або зависання сервера Domino. Перед використанням цих коштів проконсультуйтеся з документацією з адміністрування Domino.


RIP (Domino R5)


RIP-файл генерується при аваріях сервера. Цей файл містить інформацію про те, що робив сервер під час аварії. Він повідомляє про будь аваріях системи, а не тільки пов’язаних з Domino. RIP-файли генеруються тільки в Domino 5.x. В Domino 6 і старше функції, раніше виконувані RIP, виконує NSD, він також має додаткові можливості, які відсутні в RIP.


Для генерування RIP-файлу необхідно на сервері Domino завантажити QNC.EXE. Програма QNC.EXE (часто звана “quincy”) є налагоджувальної програмою за умовчанням, що поставляється з Domino. Програма QNC.EXE зазвичай розташована в каталозі Domino. Для запуску QNC.EXE введіть “qnc-I” в рядку запрошення операційної системи. Ви можете також запустити QNC.EXE, набравши “qnc nserver” при завантаженні сервера. Якщо при аваріях сервера RIP-файли не генеруються, перевірте, чи запущений QNC.EXE. Зазвичай, RIP-файли створюються в каталозі data.


NSD (Domino 6 і старше)


Як згадувалося раніше, Domino 6 і старше надають функціональні можливості NSD. Це файл, який містить інформацію про стан сервера під час аварії. Додаткова інформація наведена вище в розділі “NSD-аналіз”.


Дамп пам’яті (Domino 6 і старше)


В Domino 6 і старше ви можете використовувати команду “sh memory dump” в консолі сервера для створення файлу з дампом пам’яті. Дамп пам’яті містить інформацію про використовувану Domino оперативної пам’яті в дане час. Вона дуже корисна при проблемах продуктивності і витоках пам’яті. Зазвичай, файли з дампом пам’яті формуються в каталозі dataIBM_TECHNICAL_SUPPORT. Назва файлу з дампом пам’яті містить мітку часу генерування NSD. Наприклад:


memory_ KIRANTP_2005_09_14@17_50_08.dmp


Примітка: Для запису доступної пам’яті в файл замість перегляду його на консолі сервера виконайте наступну команду: sh memory dump> memory.txt


Журнали HTTP-запитів


Для пошуку несправностей, пов’язаних з аваріями та зависаннями Web-сервера Domino, служба Lotus Software Technical Support часто просить вас створити журнал HTTP-запитів. Для дозволу налаштувань за умовчанням журналів запитів змініть файл Notes.ini на сервері і додайте рядок HTTPEnableThreadDebug = 1. Це встановить операцію ведення журналів HTTP-запитів в рівень за замовчуванням. Для установки фіксації в журналах більш докладної інформації зверніться до документації по адмініструванню Domino. Ви можете також дозволити ведення журналів HTTP-запитів динамічно, ввівши “tell http debug thread on / off” в консолі сервера Domino. При дозволеному веденні журналів HTTP-запитів Domino створює набір файлів з назвами htthr *. Log. Наприклад: htthr_a40_10_20050914@171556.log.


Можливість ведення журналів HTTP-запитів може використовуватися тільки для пошуку специфічних несправностей і, звичайно, з вказівками і допомогою служби Lotus Software Technical Support. Не використовуйте її для будь-яких інших цілей, наприклад, для загального адміністрування. Ці log-файли з часом збільшуються в розмірах, тому ви не повинні залишати дозволеними ці настройки тривалий проміжок часу, в іншому випадку ви займете весь доступний дисковий простір.


Автоматичний збір даних


Notes / Domino 6.0.1 представив інструментальне засіб автоматичного збору діагностичних даних, відоме також під назвою Automatic Data Collection, або, коротко, ADC. Automatic Data Collection просто означає, що при аваріях Notes-клієнта або сервера Domino програма збирає всі необхідні дані для налагодження аварії і передає їх в поштову базу даних після перезапуску клієнта або сервера. Таким чином, адміністратори мають одне місце в домені, в якому можуть побачити всі аварії, що відбулися у будь-якого клієнта і на будь-якому сервері. Це допоможе виключити ситуації, коли адміністратор або користувач не можуть отримати потрібні дані на аварійному клієнті або сервері.


Налаштування Notes.ini


Для пошуку проблем продуктивності та аварій ви можете дозволити такі налагоджувальні параметри Notes.ini:


Відновлення після аварій сервера


Ви можете налаштувати функцію відновлення для автоматичної обробки аварій Domino-сервера. При аваріях на сервері вона автоматично завершує роботу і перевантажує сервер без будь-якого втручання адміністратора. Domino записує інформацію про аварію в каталозі data. При перезавантаженні сервер Domino перевіряє, чи є це перезавантаженням після аварії. Якщо так, автоматично надсилається електронне лист людині, чи групі людей, зазначених у полі “Mail Fault Notification to”.


Фатальні помилки (такі як виняткові ситуації операційної системи або внутрішні panic-помилки) завершують кожен процес Domino і звільняють всі пов’язані з ними ресурси. Сценарій startup виявляє цю ситуацію і перезапускає сервер. Якщо ви використовуєте кілька серверних розділів, а аварія сталася в одному розділі, завершується і перезавантажується тільки цей розділ.


Нові функціональні можливості пошуку несправностей в Domino 7


В даному розділі коротко розглядаються нові функціональні можливості Domino 7, які можуть допомогти вам проаналізувати і усунути аварії і зависання сервера.


Domino Domain Monitoring


Однією з найбільш значних і корисних можливостей обслуговування сервера та пошуку несправностей в Domino 7 є Domino Domain Monitoring (DDM). Вона забезпечує єдине місце для моніторингу всіх серверів в домені (або декількох доменах). DDM використовує програми, звані пробниками (probe), для збору інформації з окремих серверів і передає її в спеціальну базу даних (DDM.nsf), в якій ви можете переглянути зібрані дані. Це дозволяє здійснювати моніторинг, аналіз і пошук несправностей на великій кількості серверів з однієї консолі Domino Administrator.


Activity Trends


Функція Activity Trends (тренди активності) дозволяє вам аналізувати “історичні” серверні дані, допомагаючи простежити тренди, які можна ідентифікувати тільки за певний період часу. Ви можете переглянути ці дані для передбачення та усунення майбутніх проблем. Ці дані збираються з log-файлу (Log.nsf) і завдання Catalog і записуються в базу даних Activity Trends (Activity.nsf). Завдання Activity Trends Collector обробляє ці дані і формує дані у вигляді трендів, які ви можете використовувати для побудови графіків і для розподілу ресурсів.


Запис історії рядка стану в log-файл


Тепер ви можете дозволити Notes-клієнту вести журнал повідомлення рядка стану в локальному log-файлі (Log.nsf) або в зовнішньому файлі, які ви призначите. Це допомагає шукати несправності на Notes-клієнті. Використовуйте налаштування Notes.ini logstatusbar = 1, щоб дозволити ведення журналу повідомлень рядка стану в Log.nsf. Для перегляду записаних повідомлень відкрийте Log.nsf і перейдіть в вид Miscellaneous Events. Повідомлення рядка стану додаються з Status Msg. Для запису повідомлень рядка стану в зовнішній файл використовуйте настройку Notes.ini Debug_Outfile = разом з налаштуванням Notes.ini logstatusbar = 1. Наприклад:
logstatusbar=1
Debug_Outfile=c: empStatusBarLogging.txt


При цьому повідомлення рядка стану будуть записуватися в файл StatusBarLogging.txt.


Файл Log.nsf також може надати знімок дій, записаних в рядку стану перед аварією Notes-клієнта.


Fault Analyzer


Fault Analyzer – це нова функціональна можливість, обробна все нові аварії, що надходять в поштову базу даних Automatic Data Collection. Завдання Fault Analyzer шукає базу даних, налаштовану на документи Fault Report, і визначає, чи відповідає отриманий стек вже відбувалася аварії. Ця можливість доповнює функцію Automatic Data Collection, аналізуючи стеки викликів, записані в поштовій базі даних Fault Report, і оцінюючи їх для визначення того, чи існують інші екземпляри тієї ж проблеми.


Fault Analyzer налаштовується одночасно з налаштуванням Automatic Data Collection (див. малюнок 1). Використовуйте документ Server Configuration для налаштування Automatic Data Collection на сервері і дозвольте або забороніть Fault Analyzer.


Рисунок 1. Налаштування Fault Analyzer

Якщо Fault Analyzer виявляє дублювання повідомлень про аварії, повідомляється про нову аварію як відповідь на оригінальну аварію, а приєднання або видаляються з відповіді (для економії місця в базі даних), або зберігаються разом з відповіддю.


Покращення Automatic Data Collection


Тепер при використанні інструментального кошти Automatic Data Collection для збору інформації про аварії на сервері спочатку перевіряється, чи запущений сервер під Domino Controller, і, якщо так, використовуються log-файли Controller. Якщо ні, перевіряється, чи дозволено ведення журналів в консолі, і, якщо так, використовується виводиться на консоль інформація. Нарешті, дані витягуються з Log.nsf, якщо не були встановлені ні Domino Controller, ні ведення журналів в консолі.


Тепер ви можете вибрати, які файли (використовуючи групові символи) збиратимуться програмою Automatic Data Collection, що працює на клієнтах або на серверах. На Notes-клієнтах вона налаштовується в документі Desktop Policy Settings (див. малюнок 2).


Рисунок 2. Налаштування Automatic Data Collection на Notes-клієнті

На серверах Domino вона налаштовується в документі Server Configuration (див. малюнок 3).


Рисунок 3. Налаштування Automatic Data Collection на сервері Domino

Функція Automatic Data Collection дозволяє вам збирати діагностичні файли з інших продуктів IBM, а також із продуктів сторонніх постачальників.


Існує ймовірність того, що інформація, передана Automatic Data Collection, може бути дуже об’ємною. Якщо це стає проблемою, ви можете налаштувати Automatic Data Collection на обмеження розміру NSD-приєднань і журналу консолі, переданих в базу даних Fault Reports (див. малюнок 3).


Shutdown Monitor


Часто потрібен тривалий час для завершення роботи сервера Domino після виконання команди quit або restart. Щоб скоротити затримку, завершення Domino при виконанні цих команд гарантує завдання Shutdown Monitor. Якщо сервер не завершує свою роботу в призначений час, він завершується примусово, а перед завершенням роботи генерується log-файл NSD. Граничний термін вказується в полі Server Shutdown Timeout розділу Automatic Server Restart документа Server в закладці Basics (див. рисунок 4).


Рисунок 4. Установка Server Shutdown Timeout

За замовчуванням Server Shutdown Timeout встановлений в 5 секунд. Ця функція може бути заборонена установкою параметра Notes.ini shutdown_monitor_disabled = 1.


Process Monitor (тільки платформи Windows)


Завдання Process Monitor виконує моніторинг процесів, які повинні працювати як частина середовища сервера Domino. Це завдання виконується тільки на платформах Microsoft Windows; дана функціональність реалізована в Domino для платформ Unix без використання окремого серверного завдання. Якщо який-небудь з цих процесів відсутня, завдання переводить сервер в стан panic і визначає, який процес був передчасно завершений. Завдання Process Monitor працює з програмою Nprocmon.exe, яка виконує моніторинг процесу Nserver.exe на ненормальне завершення.


Дана функціональна можливість може значно зменшити число проблем ненормального завершення, які, в іншому випадку, важко проаналізувати (бо часто важко визначити, який процес завершився і викликав проблему на сервері). Для заборони роботи завдання Process Monitor встановіть змінну process_monitor_disabled = 1 у файлі Notes.ini на сервері.


Висновок


У даній статті ми визначили відмінності між аварією і зависанням сервера Domino. Ми розглянули деякі процедури пошуку несправностей та інструментальні засоби, які ви можете використовувати для аналізу та виправлення проблем Notes / Domino. Ми також розглянули новіше функціональні можливості для пошуку несправностей, представлені в Notes / Domino 7. Ви можете звернутися до цієї статті у будь- час, коли зіткнетеся з аварією або зависанням Notes-клієнта або сервера Domino, що, як ми сподіваємося, не буде відбуватися занадто часто.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*