среда, 22 июня 2011 г.

Коварство очереди

У нас образалась пара лишних Production-серверов. Решили отдать их мне для нового проекта.

Хотя вроде бы известно, что серверы лишние, сисадмин решил не рисковать: не стал всё сносить сразу. В пятницу он их просто потушил и до вторника ждал, будет ли кто-то жаловаться. Жалоб не поступило, поэтому он с чистой совестью отформатировал винчестеры и поставил Linux вместо Windows.

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

Зачем нужна была это программка, уже никто не помнит. Для передачи статистики мы используем MSMQ, и, казалось бы, можно было слать данные напрямую из иностранной очереди в английскую. Но вместо этого данные шлются в промежуточную очередь, а эта программа их перекладывает в другую, уже английскую. Не знаю, зачем так сделали: то ли бы проблемы с безопасностью, то ли с производительностью, а может, просто так вышло по историческим причинам... А человек, который этим занимался, попал под сокращения.

Но всё равно непонятно, по времени не сходится: ведь серверы выключили уже неделю назад, а пользователи говорят, что данные пропали только за два последних дня...

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

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

2 комментария:

KosMos комментирует...

Билд-гайды и виртуализация - рулят! :)

Valik комментирует...

Не понял насчет build guides?

Виртуализацию мы частично используем, но в данном случае требовались настоящие машины. Я на них ставил distributed cache cluster, и, конечно, хотелось иметь побольше памяти.

Ratings by outbrain