Здравствуйте. Есть 10 серверов. На каждом сервере запускается один и mysql-сервер и 100 экземпляров одного перлового скрипта (с минимальным приоритетом, чтобы им оставалось только неизрасходованное процессорное время) . Это скрипт пишет очень много данных на все сервера в mysql-и. Диски перестают справляться с запросами на запись и все другие процессы, которые читают или пишут в те же mysql-и начинают тормозить. Т.е. надо придумать, как отдавать этому скрипту только свободный дисковый ресурс другого сервера, да так, чтобы другие более важные процессы, обращающиеся к этим же mysql-ям, не тормозили.
Основная проблема в том, что нагрузку на одном сервере создаёт процесс с другого и из-за этого приходится мониторить нагрузку периодически, а не постоянно. А она меняется с момента измерения. Кроме того, в зависимости от самой нагрузки приходится выставлять разные границы, когда нагрузка считается высокой. В качестве показателя дисковой нагрузки я использую время выполнения одной операции чтения/записи. Чтобы гасить нагрузку я делаю Time::HiRes::sleep($timeout) и меняя этот $timeout пытаюсь адаптироваться под текущую нагрузку. Операционка FreeBSD 8.X. Сейчас зашёл в тупик, ибо нифига не выходит сделать адаптирующиеся под текущую нагрузку алгоритм. Всегда выходит две крайности: или много неоправданного простоя или диски перегружены и всё тормозит. -- С уважением, Михаил mailto:[email protected] -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
