Как вычислить причины падения сервера

Тема в разделе "Lotus - Программирование", создана пользователем fedotxxl, 24 авг 2009.

  1. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Люди, кто сталкивался с проблемой - сервер периодически падает. Произвожу нагрузочное тестирование. Чаще работает даже при очень больших нагрузках, иногда падает и при маленьких. Считываю показатели по использованной памяти (lsi_info(50)) - каких-либо зависимостей не видно.
    Какие идеи есть? Какая полезная информация хранится в логах обвала, кроме агента и баз, которые были открыты?
     
  2. divankin

    divankin Senjor developer

    Регистрация:
    13 авг 2009
    Сообщения:
    182
    Симпатии:
    0
    Первая идея - попытаться вычислить, какой серверный агент не закончил свою работу, когда упал сервер.
    Еще кажется, HTTP задачка на шестых серверах иногда роняла сервер.
    Сервер вообще какой? Что на нем крутится?
     
  3. Alexander (Criz)

    Alexander (Criz) Гость

    начните с файла nsd. Там всё должно быть.. Если не разберётесь, выкладывайте сюда, все вместе посмотрим...
     
  4. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Divankin
    Я знаю какой агент, какие базы используются. Проблема в том, что агент исполняет ОЧЕНЬ большой объем работ. Поэтому хотелось бы знать, на каком методе заваливается. + заваливается абсолютно периодически, нет особых закономерностей.

    Alexander (Criz)
    Ссылка на NSD
     
  5. divankin

    divankin Senjor developer

    Регистрация:
    13 авг 2009
    Сообщения:
    182
    Симпатии:
    0
    Итак, мы знаем агент. (Кстати, а вы не думали разбить этот агент на несколько агентов, которые исполняют меньший объем работ?)
    Следующий этап - определить метод. Для этого печатайте в начале и в конце каждого метода в лог.
    Print GetThreadInfo(LSI_THREAD_PROC), "Start"
    .
    .
    .
    Print GetThreadInfo(LSI_THREAD_PROC), "End"
    Когда вы определите метод, то убираете все старые принты, и ставите в этом методе после каждой строки принт.

    Еще можно добавить информацию о текущем обрабатываемом документе. Тогда вы сможете понять на каком документе агент валится. Посмотреть на него внимательно.
    Если это всегда один и тот же документ, то можете сделать закладку типа
    If doc.UniversalID = "Унид найденного документа" Then
    STop
    End if
    и пройти по шагам в дебагере.
     
  6. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Разные точки падения обычно свидетельствуют о нехватке/утечке ресурсов. Таких, как память, хэндлы и т.п.
    Приведённый лог говорит, что в данном случае падение произошло при поиске документа во вьюшке (getDocumentByKey). БД E:\DominoData2\mechel\edms\1_Common\od.nsf сервер скорее всего MskDev2. Подозрительно много открытых хэндлов для БД od.nsf и открытых документов в этой БД. Не пытаетесь ли Вы держать открытыми сразу много документов, например поместив их в массив или List? Ещё видно, что много документов с NoteID=1081790 и NoteID=1081794 открыты в контексте разных хэндлов БД od.nsf, что приводит к открытию нового хэндла для данного документа.

    Ещё подозрительно такое сообщение
    OpenLog Error: agent 'AWF.RequestExecutor.TriggerEvent' in 'mechel\edms\0_Service\AWF_EC.nsf' on 'CN=MskDev2/O=MechelDev' produced the message: Error 4270 on line 14 in
     
  7. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    TIA
    Спасибо большое, прямо в точку!) Можно узнать, по каким строчкам вы все это выяснили?

    По поводу ошибки - все под контролем, так и нада =).
     
  8. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
  9. Alexander (Criz)

    Alexander (Criz) Гость

    TIA
    а где вы увидели что агент запущен из od.nsf в секции STACK FRAMES?
     
  10. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ну че вы глупые вопросы задаете? сервер уже взломан, логи прочитаны, код исправлен ;)
     
  11. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Alexander (Criz)
    Смотря какой агент. Агент, приведший к падению скорее не в od.nsf, а в AWF_EC.nsf и да, это видно в STACK FRAMES.
     
Загрузка...

Поделиться этой страницей