Слабое звено

топ 100 блогов _glav_17.11.2010 Столкнулись давеча с забавным случаем, когда при наличии равномерной нагрузки на узлы системы, неисправность одного узла полностью убивает функционирование системы, а не только 1/N части её.

Пусть есть список работ, которые образуют очередь: сперва первая вработа из списка идёт на выполнение, потом вторая, и так далее. Также имеется набор из N узлов, которые могут такие работы выполнять. В реальности узлами были nodes на компьютеоном кластере, а работы - соответственно счётные задачи. Назначение большого количества узлов - чтобы несколько работ выполнялось одновременно, сокращая тем самым общее время работы. При наличии ожидающщей очереди, каждая следующая работа случайным образом назначается одниму из свободных узлов, так до тех пор, пока все узлы не будет заняты работой. В этом случае очередь ждёт, пока какой-то узел не освободится, и, как только это произойдёт, назначает первую ожидающую работу этому освободившемуся узлу. И так далее.

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

Что происходит в этом случае? Система видит один свободный узел, и назначает первую работу ему. Узел принимает работу, через пару секунд возвращает сообщение об ошибке, освобождается и снова сигнализирует о готовности. Система опять видит свободный узел, назначает ему следующую работу и всё повторяется. Все остальные узлы в это время продолжают заниматься своими работатми, которые занимают ненулевое время. В итоге, благодаря тому, что система постоянно видит свободный узел, она направляет все работы из очереди на него, и они успешно не выполняются. Если узлов 100, а ожидающих работ 1000, то неисправность одного узла убивает всю тысячу работ.

Как бороться с этим? Можно в содержание работы добавить команду "если произошло сообщение об ошибке, поставить меня обратно в очередь". Это нехорошо, потому что сообщение об ошибке может быть содержательным, и сигнализировать о том, что что-то не так в самой работе. Кроме того, если даже эту ошибку можно идентифицировать как конкретную ошибку узла (а не работы), постановка этой работы обратно в очередь создаст постоянно движущуюся вхолостую очередь с шагом в несколько секунд, что также не есть хорошо. Можно, наоборот, осуществлять проверку на уровне узлов. Так, система может, перед тем как назначить новую работу свободному узлу, проверять работоспособность этого узла. Направляя на него тестовую работу, система может удостовериться, действительно ли он свободен, не обманывает ли. Имхо, это самое правильное решение, но оно требует переделки системы управления, что, возможно, не так просто, и уж точно не решаемо "здесь и сейчас".

Так что правильное проектирование рулит.

А в нашем случае проблема решалась простым выключением компьютера, так что он переставал быть виден системе :)

Оставить комментарий

Архив записей в блогах:
23:26 30.06.2013 А, я ж совсем забыл. Такой экспонат с поездки не продемонстрировал! Я как то не очень понял, что это должно было символизировать, но... вообще магазинчик где сие было выставлено - достаточно забавный, предметы из разряда обнаженной натуры - изображения, ...
Вот тут пишут : Бентли планирует собирать бронированные машины, поскольку в России на них растёт спрос. Ещё к броневикам представительского класса проявляют интерес в Латинской Америке и на Ближнем Востоке. Это, господа, просто праздник ...
Этот пост был опубликован 5 лет назад. Прошу прощения у всех моих уважаемых читателей. В последнее время обстоятельства как-то не слишком способствуют появлению новых интересных постов. Я постараюсь исправиться, но ничего не могу обещать. Пока будем вспоминать хорошее из старого. ...
Я прежде не обращал на него внимания (футболом не увлекаюсь совсем), лишь где-то на периферии он срался с конделаками, изображал человека – говно в клипе и т.д. После его смерти посмотрел несколько интервью, Уткин показался мне человеком умным, с отлично поставленной речью. Понимаю, ...
Впервые в моей жизни на меня напала птица. И ладно бы какой орел степной или страус, а то ж мелочь пузатая, но с очень бойцовским характером. На самом деле, конечно, самадуравиновата, ибо совершенно случайно, как потом выяснилось, близко подошли к гнезду и птицы просто вышли на его ...