Есть VPS под CentOS с установленным плеском. Периодически сервак начинает тормозить, но при этом:
1. Процессор не загружен (задействован менее процента).
2. Память свободна (более 700 метров), никакого свопа.
3. Куча свободных nginx (в качестве фронтэнда) и apache (в качестве бекэнда).
4. Mysql вроде не тормозит.
5. На время тормозов не настроен ни один крон.
Load average выростает до 7 и через некоторое время плавно падает до значений меньше 1. Рост происходит в любое время дня ночи. В эти моменты нет никаких предпосылок для роста нагрузки, — единичные запросы, которые в другое время отрабатывают на ура.
Уже оптимизировали код проектов, настроили опкод-кэшеры, подключили статик-кэш.
Грешили на соседей по физическому серваку, но, во-первых, не уверены, что они могут влиять на наш LA, во-вторых, хостер уверяет, что они ни при чем (хотя уже были случаи, когда наши проекты ложились под ddos'ом их сайтов).
В какую сторону покопать? Что вообще можно предпринять?
Мы точно определились, что это винт. Постоянно оптимизируем проекты на этом VPS. Плюс ко всему написали гневное письмо хостеру. На следующий день тормоза прекратились. Только не ясно, хостер повлиял или принесла плоды оптимизация. Всем спасибо за советы. С наступающим!
Дисковые операции?
Из наблюдений за своим VPS (CentOS + ISPmanager) — LA сильно возрастает во время бэкапов. tar на больших объемах данных поднимает LA до 3-4, rsync в момент сопоставления файлов поднимает LA до 1-2, rsync во время собственно передачи файлов почти не влияет на LA. В остальное время, когда не снимаются бэкапы, LA не поднимается выше 0,7. Так что возможно у вас как раз статик-кэш увеличивает LA.
CentOS+Plesk — это у вас не в хостинг-центре VPS случайно? Там вообще диски очень тормозные…
Думаем на дисковые операции. Но никаких бэкапов не настроено. Кол-во дисковых операций на проектах вроде сократили до минимума.
Есть способ определить загрузку диска? Например запустить команду какую-нибудь во время высокого LA? И хотелось бы узнать источник нагрузки, если она есть.
P.S.: хотя htop вроде ничего такого не показывает. а может я не умею смотреть.
Сорри, в CentOS нет iotop. Есть dstat, лучше ставить не из репозитория, а из rpm от DAG'a — packages.sw.be/dstat/
Нет, про буферы не могу — я ни разу не сисадмин, сама с удовольствием послушаю, если кто расскажет.
Та же самая проблема, хостинг по тарифу 1024: www.1gb.ru/price_vds_hv.php
Страница может генериться за 0,01 или 5,5 сек — хостер говорит, что это всё из-за дисков, но с диска читается только изначальный файл и 4 инклюда классов, свободной памяти 0,7 Гб, проц загружен менее 5%.
Один раз была такая проблема — оказалось аппаратный рейд сдох и начал глючить. Причем либо забивал WA под завязку, и все начинало страшно тормозить, либо даже без iowait тормозило. Заменили рейд — все заработало нормально.
Что-то у меня не сходиться:
«Процессор не загружен (задействован менее процента)»
и
«Load average выростает до 7»
Или Вы о «менее процента» на один какойто процесс в top?
При большой нагрузке смотрите топ, и обратите внимание на "%wa" параметр в третьей строчке, дольжно быть очень мало, не больше одного процента. Этот параметр отвечает за ожидание процессора на входящие данные, причины могут быть две — либо на самом деле чтение с диска медленое (первый пост тут, и коменты к нему), либо ждет данных из сети. В любом случае без топа тут не обойтись.
Откуда — трудно сказать. Довольно часто видел проблемму через mysql. Попробуйте посмотреть в «mysqladmin processlist».
Когда там пусто (во время нагрузки) — то если можно попробуйте перемонтировать партиции с «noatime» и «nodiratime», они существенно помогают ибо не пишется время доступа к файлу/директории.
Если не поможет то трудно сказать на самом деле, меняйте хостера.