Программирование - это просто
Advertisement
Главная arrow Статьи arrow Безопасное программирование и отладка arrow Конспекты из книги "Наука отладки". Часть 6 .Распределенные компьютерные системы в реальной жизни.
30.11.2021 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Конспекты из книги "Наука отладки". Часть 6 .Распределенные компьютерные системы в реальной жизни. Печать E-mail
Автор megabax   
03.10.2009 г.
Название

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

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

 

Был конец 1999, программист работал в компании Y, которая обслуживала финансовые отчеты в Интернете. Web-запрос происходит через один из многочисленных Web-серверов. Тот передает запрос менеджеру нагрузки, а он, в свою очередь, доставляет запрос к одному из четырех серверов отчетов циклическим образом. Сервер отчетов берет информацию из базы данных, для того, что бы сгенерировать отчет.

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

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

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

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

Далее программист решил выяснить, какого рода проблема заставляет сервер отчетов перезапуститься.

Сервер отчетов может поддерживать 20 потоков одновременно, и каждый запрос к серверу занимает 1 процесс. Ожидалось, что каждый запрос будет обрабатываться примерно 1-2 секунды. Если все 20 потоков были заняты, и поступал 21 запрос, то он должен быть ожидать освобождение потока 5 секунд. Если время ожидания истекло, то все 20 потоков зависали.

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

При дальнем анализе оказалось, что время обработки запрос почему то увеличилось. Но после перезагрузки SQL-сервера проблема решилась.

 

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

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

 

 

Последнее обновление ( 18.02.2013 г. )
 
« След.   Пред. »
 
© 2021 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги