После обновления сервера Windows Domino с 8.5.3 до 9 важный агент не запускался после ошибки времени выполнения дважды за две недели. У нас есть 3 экземпляра менеджера агентов, работающих в дневное время (07:00 - 16:30) и 5 в ночное время. Существует довольно много баз данных, в которых агенты запускаются каждые 5 минут, но большинство из них запускаются менее чем за 1 секунду.
Этот важный запланированный (каждые 5 минут) агент LotusScript запускается в течение 24 часов, достигает лимита времени и запускается снова (большую часть времени он проводит в спящем режиме). Иногда останавливается из-за ошибки выполнения. Последний раз это было вчера, когда он остановился в 11:30, и он не запускался до сегодняшнего дня в 14:20, когда я отключил и включил агент.
Перед этим включением / отключением я проверил, что все 3 экземпляра Agent Manager простаивают, но по какой-то причине они больше не принимают этот агент. Вот статус Amgr перед отключением / включением:
> Tell Amgr Status
29.07.2013 14:17:38 AMgr: Status report at '29.07.2013 14:17:38'
29.07.2013 14:17:38 Agent Manager has been running since '29.07.2013 14:05:27'
29.07.2013 14:17:38 There are currently '3' Agent Executives running
29.07.2013 14:17:38 There are currently '520' agents in the Scheduled Task Queue
29.07.2013 14:17:38 There are currently '100' agents in the Eligible Queue
29.07.2013 14:17:38 There are currently '1' databases containing agents triggered by new mail
29.07.2013 14:17:38 There are currently '1' agents in the New Mail Event Queue
29.07.2013 14:17:38 There are currently '0' databases containing agents triggered by document updates
29.07.2013 14:17:38 There are currently '0' agents in the Document Update Event Queue
29.07.2013 14:17:38 AMgr: Current control parameters in effect:
29.07.2013 14:17:38 AMgr: Daily agent cache refresh is performed at '04:15:00'
29.07.2013 14:17:38 AMgr: Currently in Daytime period
29.07.2013 14:17:38 AMgr: The maximum number of concurrently executing agents is '3'
29.07.2013 14:17:38 AMgr: The maximum number of minutes a LotusScript/Java agent is allowed to run is '1440'
29.07.2013 14:17:38 AMgr: Executive '1', total agent runs: 322855
29.07.2013 14:17:38 AMgr: Executive '1', total elapsed run time: 28064
29.07.2013 14:17:38 AMgr: Executive '2', total agent runs: 102967
29.07.2013 14:17:38 AMgr: Executive '2', total elapsed run time: 364127
29.07.2013 14:17:38 AMgr: Executive '3', total agent runs: 297064
29.07.2013 14:17:38 AMgr: Executive '3', total elapsed run time: 78582
Кажется, что у подходящих агентов есть максимум 100, потому что я всегда получаю 100. Это проблема и как увеличить максимум?
Если менеджер агента слишком занят в дневное время (что, похоже, не так, потому что все 3 работали на холостом ходу, когда я смотрел), я ожидал, что он запустит агент по крайней мере в ночное время, когда есть 5 экземпляров.
Есть идеи, как решить проблему, или я должен просто добавить все виды параметров отладки AMgr в notes.ini, чтобы получить дополнительную информацию, когда это произойдет в следующий раз.
После этого последнего случая я отключил агентов в некоторых старых базах данных и увеличил количество экземпляров AMgr на 1.
Я также проверил ошибку времени выполнения в другом БД с помощью простого тестового агента, но он снова запустился после ошибки.
Имейте в виду, что запланированный агент будет запускаться только в том случае, если в той же базе данных не запущен другой запланированный агент одновременно.
пример.
Database A
- Agent X (Every 5 minutes)
- Agent Y (Every 10 minutes)
В этом случае будет выполняться X, а затем X или Y. Если выполняется Y, то X пропустит время выполнения и будет добавлен в очередь, чтобы следовать за Y, когда будет доступно свободное время.
Агенты также не должны работать дольше запланированного времени. Таким образом, что-то, что запускается каждые 5 минут, должно, по возможности, сокращать рабочее время до менее чем минуты.
Агенты будут убиты, если они превысят разрешенное максимальное время работы сервера. Исключениями являются случаи, когда агент вызывает сторонние библиотеки DLL и зависает, или если вы не расширяете NotesThread и не создаете потоки в Java-агенте (могут быть и другие условия, но они наиболее распространены).
Из-за этих факторов могут быть неактивные менеджеры агентов, когда все резервное копирование для запуска.
Для диагностики проблемы вы можете использовать Отладка диспетчера агентов. С консоли домино:
set config DEBUG_THREADID=1
tell aMgr debug *
Это приведет к созданию более подробных журналов при попытке диагностировать происходящее. Также:
tell aMgr sched
Разбью текущее расписание.
Если у вас есть агент, который должен выполняться часто, вы можете вместо этого использовать программный документ. Обратной стороной является то, что вы не сможете убить агента, если он зависнет. Также вам нужно знать, чего он касается, чтобы предотвратить взаимоблокировки с другими агентами.
Для Domino 9 вы можете использовать DOTS для серверного запланированного кода (Java). Меньше ограничений, чем у Amgr.