[Moscow.pm] Как незаметно для других скушать дисковый ресурс других серверов?

Михаил Монашёв postmaster на softsearch.ru
Сб Авг 4 08:33:21 PDT 2012


Здравствуйте.

Есть  10 серверов. На каждом сервере запускается один и mysql-сервер и
100  экземпляров  одного перлового скрипта (с минимальным приоритетом,
чтобы им оставалось только неизрасходованное процессорное время) . Это
скрипт  пишет  очень  много  данных  на  все  сервера в mysql-и. Диски
перестают  справляться  с  запросами  на запись и все другие процессы,
которые читают или пишут в те же mysql-и начинают тормозить. Т.е. надо
придумать, как отдавать этому скрипту только свободный дисковый ресурс
другого   сервера,   да  так,  чтобы  другие  более  важные  процессы,
обращающиеся к этим же mysql-ям, не тормозили.

Основная проблема в том,
что  нагрузку на одном сервере создаёт процесс с другого и из-за этого
приходится  мониторить  нагрузку  периодически,  а не постоянно. А она
меняется  с  момента  измерения.  Кроме  того,  в зависимости от самой
нагрузки   приходится   выставлять   разные  границы,  когда  нагрузка
считается высокой. В качестве показателя дисковой нагрузки я использую
время выполнения одной операции чтения/записи. Чтобы гасить нагрузку я
делаю Time::HiRes::sleep($timeout) и меняя этот $timeout пытаюсь
адаптироваться под текущую нагрузку.

Операционка FreeBSD 8.X.

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

-- 
С уважением,
 Михаил                          mailto:postmaster на softsearch.ru



Подробная информация о списке рассылки Moscow-pm