[Ruslan_Mars] Как бороться с зависаниями руслана
rybalko на lib.vsu.ru
rybalko на lib.vsu.ru
Вт Ноя 29 14:32:00 MSK 2011
Здравствуйте, Mars. Я Рыбалко Андрей Михайлович программист и web разработчик из ЗНБ ВГУ. Хочу поделиться с вами решением, которое мы используем для работы с руслан сервером.
Он у нас часто зависает, также как и у вас, наверное. C причинами зависание разобраться так и не удалось, поэтому мы внедрили скрипт который интегрируется с нашим сайтом и автоматически перезапускает сервис когда он зависает. Это нам удалось сделать, благодаря использованию нового электронного каталога http://www.lib.vsu.ru/?p=4 . Он написан на PHP и потому в нем есть возможность сделать свой собственный обработчик ошибок, который будет вначале запускать скрипт диагностики, а затем если сервер и правда висит перезапускать его. Правда этот сервис такой капризный, что не всегда останавливается с первого раза с помощью команды net stop. Но обращение к скрипту происходит каждый раз, как один из пользователей используя электронный каталог натыкается на ошибку в соединении с сервером и т.о. в конце концов, он перезапускается почти всегда. Правда это решение вам, наверное не поможет. Вы ведь не можите сделать так, чтобы в случае возникновения ошибки в вашем электронном каталоге запускался бы какой-нибудь php скрипт. Грубо говоря, скрипт restart.php в корне сайта.
Если вы пользуетесь билтиксовтовским электронным каталогом то там, насколько мне известно, ничего нельзя сделать со страницей на которой появляются сообщения об ошибках в соединении... Если только весь каталог загрузить в какой-нибудь фрейм и с помощью javaScript смотреть когда там появится ошибка. Еще есть вариант просто переодически запускать этот скрипт. Например, через планировщик заданий, или с помощью того же javaScript, каждый раз как один из пользователей обновит страницу сайта. Он все равно отрабатывает только в том случае, если сервис и правда повис, так что нет ничего страшного в том чтобы запускать его почаще.
Даже не знаю, может ли вам помочь такое решение, но нам оно помогает, в большинстве случаев этот скрипт отрабатывает.
Еще я заметил одну странную вещь, которая может вас навести на определенные мысли, и может быть это позволит разобраться в причинах зависания сервера. Сервер иногда зависает так хитро, что он висит только если к нему обращаться с других компьютеров через сеть, а если к нему обращаться с того же компьютера, на котором он установлен, то он работает нормально. Поэтому мне пришлось вышеописанный скрипт разбить на несколько частей. Одна из них проверяет со стороны web сервера, на котром у нас работает сайт, висит ли сервер руслана, а перезапускает его другой скрипт расположенный на томже сервере, что и руслан. Точнее говоря, тот скрипт который расположен на стороне сервера с русланом вначале спрашивает у внешнего скрипта висит ли руслан, если получает ответ, что да, тогда перезапускает его. Во всех остальных случаях, он ничего не делает. Это я вам говорю на тот случай, если вы решите повторить нечто подобное.
С уважением Рыбалко А.М.
Подробная информация о списке рассылки Mars