Расклад: есть арендованный виртуальный сервер на RHEL в датацентре. На серваке бегает вебсервер+сервер приложений. Сервак имеет 4 гига оперативки. Но временами серв начинает дико лагать - даже в консоле заметны сильные задержки - примерно секунд на 5 иногда все замирает. Соответственно вебсервер дико лагает - ссыли открываются по 10-20 секунд. Заметил закономерность - лагать начинает после простоя сервера. При лагах top показывает загрузку менее 20%, хотя сам при этом лагает. По сему я подозреваю что оперативка моего сервера свапится в хостовой машине. Попытался это как-то выяснить. И вот что я придумал - в момент когда все лагает запустить тест на память mbw ( http://ahorvath.home.cern.ch/ahorvath/mbw/ ) и сравнил результаты во время лагов и без. Стоит заметить что половина оперативки всегда свободна. Вот результаты:
Из этого можно заметить, что во время лагов скорость работы с памятью ниже в среднем примерно в 2 раза. Так же наблюдаются скачки до невероятных скоростей ( подозреваю что это от того, что хостовая машина лагает ). Вопрос - действительно ли это похоже на лаги хостовой машины? Существуют ли какие-либо способы выяснить - лагает хостовая машина или мой сервер?
Имхо запустить top c указанием какие пиды мониторить ну и пинг на сам сервер - смотреть время отклика. Вместо пинга можна и потяжелей чего. Плюс cat /proc/meminfo. Идеальный вариант это все складывать в ррд и смотреть потом на картинки. Попариться придется.
Вариант два - стопни свои сервисы и посмотри на загрузки.
Момент - не было сказано чем нарезается собственно хостинг. И 4 гига оперативки - твои или на всю железку. Уточнил бы, штоля.
Имхо запустить top c указанием какие пиды мониторить ну и пинг на сам сервер - смотреть время отклика. Вместо пинга можна и потяжелей чего. Плюс cat /proc/meminfo. Идеальный вариант это все складывать в ррд и смотреть потом на картинки. Попариться придется.
..или поставить "старый добрый" sysstat, если еще не установлено, помониторить и не париться :)
графики он тоже строить умеет
Совершенно отсутствует желание похоливарить насчет жабы, нно.... Попробовать разные версии? Черт возьми, даже в виртуалке можно поднять! На таком сухпае "залипы" проявятся однозначно, особенно если поиграться со свапинесс.
Расклад: есть арендованный виртуальный сервер на RHEL в датацентре. На серваке бегает вебсервер+сервер приложений. Сервак имеет 4 гига оперативки.
Реальный сервер имеет 4 гигабайта ОЗУ, или Ваша виртуальная машина?
Если второе, то сколько тогда имеет реальный? И сколько на нём крутится виртуальных серверов?
лагать начинает после простоя сервера
Может быть образ Вашего сервера в оперативке за это время успевает элементарно уйти в своп, а пока оттуда возвращается - лагает. В общем, есть подозрение на нехватку памяти на реальном сервере, либо (что то же самое) большую его загрузку виртуальными машинами, в сумме на которые выделено памяти значительно больше, чем её есть физически.
Делал тоже самое, но так же под vmware, только у себя. Такие же точно лаги видел когда на другой виртуальной машине которая расположена на одной хостовой машине что и тестируемый образец начинался активный дисковой i/o. Когда вм работает одна - ничего не тормозило на куда более слабом железе. Хотя подозреваю что дело может быть и в потери производительности на виртуализации. Как-то раз столкнулся с тем (под XEN правда), что приложение написанное на моно при своей работе сильно тормозило машину, при этом в Dom0 в dmesg сыпались сообщения про 4гб что-то там. Погуглив выяснил, что некоторые операции под ВМ выполняются гораздо медленнее, чем без использования виртуализации и вызывают потерю производительности до 1000 раз. Особенно при использовании чего-то там на моно :-D . И это при том, что XEN - это паравиртуализация. По идее под ним все должно работать быстрее чем под vmware.
Сейчас возникла другая ситуация. Есть все тот же виртуализованный сервер под vmware, на котором начало лагать пиложение на яве. Задача- выяснить где проблема ( я вижу следующие возможные варианты: нехватка памяти, глюк в приложении (что врятли), нехватка пропускной способности сети (дело в том, что там почти террабайт данных смонтирован по NFS и к этим данным наше приложение активно обращается), нехватка ресурсов CPU). Что я проделал для поиска проблемы:
Поставил на ночь эту штуку (правда ночью там нагрузка несколько меньше):
vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 50872 60060 8888 782332 10 10 107 94 28 19 4 1 90 4
sar -u 10 10
Linux 2.6.9-55.ELsmp (*****) 10/20/2008
^[^[OA
04:03:48 PM CPU %user %nice %system %iowait %idle
04:03:58 PM all 25.05 0.00 0.30 2.10 72.55
04:04:08 PM all 25.77 0.00 2.23 1.73 70.28
04:04:18 PM all 24.69 0.00 0.55 3.40 71.36
04:04:28 PM all 25.00 0.00 0.57 2.50 71.92
04:04:28 PM CPU %user %nice %system %iowait %idle
04:04:38 PM all 25.02 0.00 1.50 3.45 70.03
04:04:48 PM all 24.49 0.00 0.32 3.37 71.81
04:04:58 PM all 25.32 0.00 0.60 1.68 72.40
04:04:58 PM CPU %user %nice %system %iowait %idle
04:05:08 PM all 25.40 0.00 1.25 0.85 72.50
04:05:18 PM all 24.84 0.00 0.90 2.72 71.54
04:05:28 PM all 25.07 0.00 0.42 1.47 73.03
Average: all 25.07 0.00 0.86 2.33 71.74
Меня смущает столбик %user. На других серверах выполняющих аналогичные функции при больших нагрузках имеют это значение гораздо ниже (где-то около 3х, в пиках до 5ти). Что бы это могло значить? Какие еще действия можно выполнить для поиска и решения проблемы?