как узнать, что съедает всю память!

Статус
В этой теме нельзя размещать новые ответы.
чтобы не создавать новую тему.....

как узнать какой САЙТ сколько ресурсов жрет (память, проц).
и еще неплохо бы узнать, из-за чего сервак слег, только проблема, у меня ssh не работает, когда сервак лежит(
 
Ответ: стандартными средствами никак.
 
а можно ли установить ограничение скрипта, например, на 10 минут??? т.е. обрубать каждые 10 минут скрипт... полагаю, что какой-то из скриптов виснит, а т.к. сайты на разных CMS то исправить я сам не смогу
 
Тогда опять возникает вопрос. Как не стандартными средствами все это узнать?
У меня воркер апача стоит mpm-itk, поэтому по топу видно, какой сайт, сколько памяти съедает.
 
Элементарно - есть mod_slowlog, туда можно все логировать и потом парсить его и смотреть - какой сайт чего ест
 
  • Заблокирован
  • #17
Память

А разве у хостера спросить нельзя
 
Добавлено через 10 минут
а можно ли установить ограничение скрипта, например, на 10 минут??? т.е. обрубать каждые 10 минут скрипт... полагаю, что какой-то из скриптов виснит, а т.к. сайты на разных CMS то исправить я сам не смогу

Смотрите в сторону max_execution_time параметра в php.ini.
Этот параметр ограничивает максимальное время работы скрипта.
У меня воркер апача стоит mpm-itk, поэтому по топу видно, какой сайт, сколько памяти съедает.
Видно какой юзер съедает, а не сайт)
Для разделения по сайтам, посмотрите в сторону proctitle_module
Тогда в процессах ещё будет показывать какой запрос обрабатывается) Т.е. будут процессы вида:
[busy] site.ru::/index.php (httpd)
После установки модуля можно запустить такой скрипт:
PHP:
while :; do ps auxw|grep user|grep -v grep >>/root/USER; sleep 1; done
Скрипт будет собирать статистику по конкретному юзеру.
Какое-то время ждёте, потом запускаете небольшой скрипт на perl:
PHP:
!/usr/bin/perl -w
sub ms_of_t ($) {
        my @f = split /[:.]+/, $_[0];
        return $f[0]*60+$f[1]+($f[2]/100);
}
open $f, $ARGV[0];
while (<$f>) {
        chomp;
        @f = split /\s+/, $_;
        next if $f[10] ne '[busy]';
        my $k = "$f[1]-$f[8]";
        $h{$k}{n} = $f[11];
        $h{$k}{t} = ms_of_t ($f[9]);
}
close $f;
foreach (keys %h) {
        $url{$h{$_}{n}} += $h{$_}{t};
}
foreach (sort {$url{$a} <=> $url{$b}} keys %url) {
        printf "%.2f %s\n", $url{$_}, $_
}
Натравливаете скрипт на файл /root/USER и получаете картину по запросам:
7.71 site2.ru::/index.php
23.88 sait3.ru::/index.php
27.55 sait2.ru::/index.php
119.33 sait1.ru::/index.php
225.36 site2.ru::/wp-content/themes/eGallery2/phpThumb/phpThu
Первое число - это как раз нагрузка в "условных единицах".
По крайней мере можно понять, какой сайт и какой скрипт создаёт наибольшую нагрузку.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху