.
Констекты из книги "Наука отладки" Часть 7. Распределенные компьютерные системы. Продолжение.
Автор megabax   
10.03.2010 г.
Название

Распределенные компьютерные системы в реальной жизни. История: компания X.

Это продолжение предыдущей статьи.

В 2000 году программист начал работать в другой компании, назовем ее X, которая занималась картографической и деловой информацией, а так же электронной коммерцией. Структура взаимодействия данных была схожей с той, что была в компании Y: Web-сервер обращался к менеджерам нагрузки, а те в свою очередь, к базам данных. Но, в этой компании имелись и свои особенности. В частности, система позволяла подключатся к базам данным посредством телефонной линии через IVR-сервер (Interactive voice Responce), который в этом случае просто замещал Web-сервер.  Другое отличие состояло в том, что использовалось два центра данных. Когда один из них глючил, работа происходила с другим сервером.

Программиста пригласили разобраться с проблемой, которая вывела систему из строя более чем на 8 часов. Работники подозревали, что имела место какая то непонятная проблема с сетью, однако это не объясняло, почему не использовался запасной цент данных. Дальнейшее разбирательство показало, что проблема IVR-сервера возникала при соединении с одним из центров данных. После просмотра протоколов выяснилось, что каждое событие переключения центров имело корреляцию с серией из трех запросов со статусом ошибки «время ожидания запроса истекло».

Наученный опытом работы в компании Y программист спросил о стратегии преодоления ошибок на IVR-сервере. Оказалось, что то критичен к быстродействию, в отличии от Web-сервера – по телефону люди не любят ждать. Поэтому сервер должен ответить в течении определенного времени. После трех последовательных неудач сервер переключался на запасной центр данных. Далее, через 2 часа он пытался соединиться с первоначальным центром, и если ему это удалось, то работал с ним.

У программиста возникли две гипотезы:

·        IRV-сервер бы соединен только с одним из центров данных и работал без резерва. При возникновении проблем сервер оказывался не работоспособен.

·        Причина была в истечении времени ожидания запросов.

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

Следует заметить, что в прошлый раз проблему решила перезагрузка сервера. Здесь, как видно, проблема оказалась очень похожей.

 

Источник: Мэтт Тэллес, Юань Хсих, "Наука отладки".

Продолжение следует.

 

 

Последнее обновление ( 18.02.2013 г. )