[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