Проблемы

Материал из Rujel
Перейти к: навигация, поиск

Здесь собраны распространенные проблемы, которые могут возникнуть при эксплуатации РУЖЭЛЬ, и способы их устранения.

Диагностика[править]

Все проблемы, возникающие в работающем журнале, протоколируются в log-файлах.

В зависимости от способа первоначальной установки WebObjects log-файлы можно найти в директории:

  • RPM (AltLinux) — /var/log/webobjects/
  • из архива — /opt/apple/Local/Library/WebObjects/Logs/

Смотрите файлы последовательно. Если файла с указанным именем не существует или в нем нет сообщений об ошибке, смотрите следующий.

  • Rujel0_0.log — основной лог приложения
  • Rujel-1 — сообщения java-машины
  • wotaskd.log — системный лог последней попытки запуска приложения

Для дневника, соответственно:

  • RujelDiary0_0.log — основной лог приложения
  • RujelDiary-1 — сообщения java-машины

Интерпретация основного лога[править]

Наиболее полная и подробная информация о работе РУЖЭЛЬ пишется в лог Rujel0_0.log , если иное не определено настройками logging.properties

Для именования файлов используется log rotation: более старые файлы именуются Rujel0_1.log и т.д. Если запущено несколько экземпляров РУЖЭЛЬ, то их логи пишутся под именами Rujel1_X.log и т.д.

Все сообщения в логе отмечаются ключевыми словами. Ошибки отмечаются такими:

  • UNCOUGHT_EXCEPTION — Неожиданная ошибка. Вероятно, в коде. Пользователь видит экран ошибки.
  • WARNING — возможность такой ошибки предполагалась разработчиком. Пользователь о ней уведомляется сообщением в верхней части экрана.
  • SEVERE — серьезная ошибка во внутренних процессах, приводящая к общей неработоспособности ЭЖ.

Ошибки типа UNCOUGHT_EXCEPTION в большинстве случаев могут быть устранены только разработчиком.

Необходимо вместе с сообщением об ошибке передать разработчику фрагмент лога с полной информацией об ошибке либо весь файл лога.

Кроме самого сообщения об ошибке в следующей строке, отмеченной ключевым словом INFO, может быть дополнительная информация от пользователя: она вводится на экране ошибки. Текстовое описание действий, приведших к ошибке, может помочь в диагностике. Также для диагностики может быть полезна информация из лога о действиях пользователя, предшествующих ошибке.

Ошибки типа WARNING и SEVERE часто бывают связаны с внешними факторами (работа с БД и другими ресурсами).

Грамотный системный администратор, скорее всего, самостоятельно сможет интерпретировать информацию об ошибке и устранить ее причину. Некоторые типичные проблемы и соответствующие им сообщения об ошибках будут описаны здесь.

Решения[править]

Не запускаются сервисы WebObjects[править]

Хотя при запуске сервиса выдаётся сообщение [DONE], на самом деле, сервис может не стартовать. Это можно выяснить, выполнив команду

$ service wotaskd status

Когда сервис запущен, он должен отвечать по порту 1085.

Выяснить, какая ошибка мешает сервису стартовать, можно запустив womonitor в консоли

$ /usr/share/java/webobjects/Library/WebObjects/JavaApplications/wotaskd.woa/wotaskd

В норме, исполнение не должно заканчиваться. Последнее сообщение должно быть "Waiting for requests…". В этом случае завершить исполнение можно нажатием ctrl-C.

В случае завершения исполнения с ошибкой, информация об ошибке будет выведена на экран.

Распространенной ошибкой, которую сложно интерпретировать, является UnknownHostException:имя_компьютера . Она возникает, если компьютер не может определить(при помощи DNS) IP-адрес, соответствующий его собственному имени. Проблема может быть в неверной настройке DNS или в несоответствии имени компьютера в системе его имени в DNS.

Устранить ошибку можно, настроив правильно DNS, либо прописав явно имя компьютера в /etc/hosts — в этот файл надо добавить строку:

127.0.0.1 имя_хоста.localdomain имя_хоста

После этого надо перезапустить сетевой сервис:

$ service network restart

Не запускается РУЖЭЛЬ[править]

Здесь может быть множество разных причин. В большинстве случаев анализ логов дает информацию о проблеме.

Распространенной проблемой являются права доступа. Обратите внимание, все файлы, с которыми работает РУЖЭЛЬ, должны быть доступны пользователю _appserver (группа _appserveradm).

Проблемы с правами и именами файлов могут возникнуть при распаковке архива обновления на компьютере с Windows и последующим переносом на Linux-сервер. Не делайте так.

Запускается, но не работает[править]

Если при запуске обнаруживаются серьезные проблемы, то РУЖЭЛЬ на любой запрос выдает страницу с выжимкой из лога, содержащую сообщения об этих ошибках.

Напимер, сообщения такого вида:

... SEVERE		Model 'AutoItog' requires schema version 1(0.9.2)
... SEVERE		Model 'BaseYearly' requires schema version 2(0.9.2). found version 1(0.9)

означают, что исполняемые файлы были обновлены, а структура базы данных не была приведена в соответствие с новой версией. Поэтому необходимо выполнить обновление структуры данных.

Начиная с версии 0.9.3, РУЖЭЛЬ умеет самостоятельно выполнять обновление структуры БД, но проблемы с этим всё же могут быть:

Сообщения вида

... WARNING	Model 'RujelSync' could not connect to database …
    com.webobjects.jdbcadaptor.JDBCAdaptorException: Access denied for user 'rujel'@'localhost' to database 'RujelSync'

указывают, что пользователю rujel в MySQL не хватает прав доступа для создания дополнительной БД RujelSync. В этом случае надо выполнить указания из раздела База_данных#Автоматическое_обновление

Завис[править]

Приложение не отвечает на запросы, но при этом, в Мониторе отображается как запущенное и не реагирует на попытки остановки.

  • Нажать Configure напротив зависшего экземпляра.
  • В самом низу страницы конфигурации нажать Force Quit This Instance

Кнопка действует с задержкой до 30 секунд и может не сработать с первой попытки.

Причину зависания искать в логе Rujel-1

Не сохраняются данные[править]

При попытке сохранить отметки и темы уроков сверху экрана появляется сообщение вида:

java.lang.IllegalStateException: Adaptor com.webobjects.jdbcadaptor.JDBCAdaptor@981540 failed to provide new primary keys for entity 'MarkArchive'

Отметки при этом не сохраняются.

Расшифровка проблемы:

Превышение ограничения первичного ключа, создаваемого по-умолчанию. Эта проблема может встретиться у пользователей ранних версий.

Решение: (для 2011/12 учебного года)

Дать команду в MySQL:

ALTER TABLE RujelYear2011.EO_PK_TABLE
  CHANGE COLUMN PK PK integer DEFAULT NULL;

Неправильные даты[править]

В связи с отменой (а теперь и с возвратом) перевода часов на зимнее время, в некоторых режимах работы могут неверно отображаться даты или время. Исправить это можно так:

  •  загрузить архив с патчем таймзон
$ wget http://wiki.rujel.net/updateTZ.zip
  • применить патч
$ unzip -q updateTZ.zip
$ cd updateTZ
$ sudo ./updateTZ.sh
  • перезапустить РУЖЭЛЬ и другие приложения WebObjects

Работает слишком медленно[править]

Если в вашей школе много классов и РУЖЭЛЬ используется активно, то вы можете заметить, что через несколько дней или даже часов после запуска РУЖЭЛЬ начинает ощутимо притормаживать по сравнению с первым часом эксплуатации. Такое поведение бывает, когда приложению не хватает выделенной памяти.

Пожалуйста, не путайте общую доступную оперативную память сервера и память, доступную Java-приложению. При запуске приложению выделяется определённый лимит памяти, и превысить его невозможно, даже если у сервера память меряется терабайтами.

Память, доступная приложению, определяется параметрами запуска. -Xms64m и -Xmx128m . Здесь указано, что при запуске приложение получает 64 мегабайта памяти, а при необходимости может расширить объём до 128 мегабайт.

Такие значения нормальны для тестовой эксплуатаци с небольшой нагрузкой. При реальной работе в школе среднего размера рекомендуется эти показатели повышать.

Например, Гимназия №45 (около 700 учащихся) работает со значениями -Xms128m -Xmx512m . Вам нужно подобрать оптимальные для ваших условий эксплуатации значения.

При пиковых нагрузках[править]

В учебном году в конце отчётных периодов часто бывает, что много учителей одновременно пытаются вносить информацию в журнал, и всё начинает жутко тормозить.

Для масштабирования в условиях повышенной нагрузки WebObjects позволяет запускать одновременно несколько экземпляров приложения. Это даёт возможность разным пользователям работать с разными экземплярами и не мешать друг другу.

Поэтому во время пиковых нагрузок имеет смысл запускать дополнительные экземпляры РУЖЭЛЬ. Как это делается, описано на странице WOMonitor. Важно при запуске дополнительных экземпляров, оставлять активным исполнение заданий по расписанию (рассылка и проч.) только в одном экземпляре.

Не принимает пароль с огромным обратным отсчётом[править]

В РУЖЭЛЬ встроена защита от подбора пароля, которая при каждой неудачной попытке авторизации наращивает время ожидания перед последующей попыткой ввода на 1 секунду. А в случае попытки ввода до истечения времени ожидания, удваивает это время, не проверяя валидность пароля.

Иногда это приводит к сбоям, при которых время ожидания становится настолько большим, что дождаться его истечения нереально. Если работа с РУЖЭЛЬ осуществляется через прокси-сервер, то парализована может оказаться вся школа.

Для сброса счётчика обратного отсчёта пользователь с правами root может зайти по специальному адресу:

адрес_сервера/Apps/WebObjects/Rujel.woa/1/wa/reset

(1 — номер экземпляра приложения, если заблокировался экземпляр с другим номером, подставьте его)

Нужно быть предельно аккуратным при вводе пароля здесь. Ошибка может привести к блокированию и этого окна входа.

После входа откроется интерфейс со списком всех счётчиков по логинам, IP-адресам и по попыткам входа в этот интерфейс. Числа означают последнее время ожидания в секундах. Отрицательные числа — что время ещё не истекло (счётчик активен).

Чтобы сбросить счётчик достаточно установить напротив него галку и нажать кнопку Reset внизу таблицы.

Тот же интерфейс доступен пользователю с правами root в режиме «Управление» -> «Системные процедуры» по ссылке «Reset counters»

Отправка отчета[править]

Если справиться с проблемой не удается, информацию о ней надо направить разработчикам. Кроме описания проблемы на словах, для диагностики необходимы также технические данные и записи логов.

Чтобы подготовить такую техническую информацию, не являясь IT-специалистом, в РУЖЭЛЬ предусмотрена операция выгрузки логов.

Выгрузка через интерфейс[править]

Эта операция доступна только пользователю с правами администратора (root).

  1. зайти в режим "Управление"
  2. выбрать закладку "Отчет от ошибке"
  3. нажать "Получить файл"

Будет загружен zip-архив с основными параметрами окружения и логами работы.

Этот архив нужно отправить разработчикам вместе с описанием проблемы на словах.