Узнать загруженность сервера

no_santa

Снегур
Узнать загруженность сервера

Программа для многоклиентской обработки данных. В программе есть потенциально ресурсоемкое место, которое изрядно загружает процессор и память. Пришла идея - организовать обработку по очереди, т.е. заставить клиентов ждать, пока обработается их часть. С реализацией проблем вроде не предвидится, за исключением вопросов:
1. Как из PHP узнать текущую загрузку процессора?
2. Как из PHP узнать размер свободной памяти?
3. Есть-ли более оптимальное решение вопроса?

P.S. Если имеет значение - ОС пока Gentoo, на релизе будет Debian Lenny
 
Нашел sys_getloadavg() но остались вопросы...
1. Насколько это целесообразно? Есть-ли более оптимальное решение вопроса?
2. На ВДС эта функция вернет загрузку ВДС или сервера?
3. Актуально - про память.

-~{}~ 16.08.09 22:52:

Автор оригинала: phprus
По первым двум вопросам:
man 1 top
man 1 free
man 5 proc
в смысле, парсить выдачу system?

-~{}~ 16.08.09 23:18:

Кстати, так и не нашел - ЧТО именно возвращает sys_getloadavg()?

Даёт флоты, которые явно меняются в зависимости от загрузки, но - это в кроликах или в верблюдах?

Насчет ВДС отписал в поддержку хостера - пока молчат :)
 
Кстати, так и не нашел - ЧТО именно возвращает sys_getloadavg()?
load average она возвращает и это написано английским по белому в мане. Что это такое написано по первой ссылке гугла:
http://www.google.com/search?q=load+average

в смысле, парсить выдачу system?
Если учение твое парсить файлы запрещает тебе, то выдачу system парсить придется... Линукс найди работающий и в священной консоли его команды сии введи. По прочтении манов сих снизойдет на тебя просветление!

2. На ВДС эта функция вернет загрузку ВДС или сервера?
Это должно возвращать загруженность VDS.
 
В программе есть потенциально ресурсоемкое место, которое изрядно загружает процессор и память. Пришла идея - организовать обработку по очереди, т.е. заставить клиентов ждать, пока обработается их часть. С реализацией проблем вроде не предвидится, за исключением вопросов:
я уже из топика в топик советую:
- пиши тяжелую обработку в очередь
- кроном запускай скрипт, который читает n-сообщений из очереди и обрабатывает их
- в это время клиентам крути флешку "ваши данные обрабатываются... Ждите результата..."
- обрабатывающий скрипт пишет в спец файл (я его обозвал файл проекта, но это моя специфика) прогресс обработки...
- клирент аяксом видит прогресс, и либо ждет, либо смотрит другие страницы...
- по окончании обработки, клиент видит статус "данные обработаны" и все счастливы, особенно клиент...

никаких free & top и uptime я не использую!
эти команды нужны на этапе тюнинга, чтоб определить проблему, а не на этапе продакшена, когда уже "поздно пить Боржоми"

если сервак свой, то использую спец ПО, чтоб облегчить головную боль процессора. (сервер очередей: memcacheQ , nginx , ngx_memcached etc
вместо крона я использую fork()
) т.е. статус прогресса храню в памяти, а читаю напрямую из nginx минуя PHP.

кстати, что это за загадочное потенциально ресурсоемкое мест ?
 
Alexandre
Спасибо, именно так и делаю. Просто задачи в очереди различного размера, от 1 до 50 метров, поэтому и хочу управлять очередью по фактической загрузке.
"Потенциально ресурсоемкое место" - там обрабатывается действительно много данных, получается от 10 секунд до 30 минут на одну задачу "на локалхосте", по ходу на боевом сервере будет веселуха...

phprus
Спасибо, это я уже видел. Только так и не понял, в чем именно это измеряется, или хотя-бы как правильно сформулировать условие. Еще одно спасибо, если поможешь понять :)
 
Просто задачи в очереди различного размера, от 1 до 50 метров, поэтому и хочу управлять очередью по фактической загрузке
в очереде должно быть только имя файла или его ай-ди
получается от 10 секунд до 30 минут на одну задачу "на локалхосте"
а на локалхосте установовлен денвер???
 
Автор оригинала: Alexandre
в очереде должно быть только имя файла или его ай-ди
Ну да, типа того. На самом деле там проекты из множества файлов и профили из БД с метаданными, которые влияют на сценарий.


Автор оригинала: Alexandre
а на локалхосте установовлен денвер???
На локалхосте (Debian) установлен Apache2 и компания. На другой отладочной машине - Gentoo. В релизе будет Debian.
 
В релизе будет Debian.
а почему именно Debian?
FreeBSD более подходящая ОСЬ для хостинга

избавляйся от Апача... или делай проксирование через nginx
статику надо отдавать однозначно через nginx
 
> Как раз превалирует "динамика", поэтому и Debian

Непонятный аргумент в пользу Debian
 
скажем даже так, аргумент против, учитывая эфективность шедулера в FreeBSD 7.2
 
Согласен. Новый SCHED_ULE во FreeBSD очень даже достойный. Как говорится, рекомендации лучших собаководов. Советую хотя бы в домашнем окружении попробовать. Авось понравится :)
 
Непонятный аргумент в пользу Debian
есть очень понятный аргумент "ЗА": потому-что его хорошо знает наш админ!

-~{}~ 19.08.09 09:57:

избавляйся от Апача... или делай проксирование через nginx
статику надо отдавать однозначно через nginx
Как раз превалирует "динамика"
а разве у тебя нет огромной кучи картинок?
а раз динамика, тем более нужно использовать связку ngx - php-fpm
 
Сверху