Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 25 Май, 2012, 02:03:39

Страниц: [1] 2
Печать
Автор Тема: Парсер CPU на PHP  (Прочитано 1040 раз)
0 Пользователей и 1 Гость смотрят эту тему.
tartar    ↓ 
27 Июль, 2011, 02:04:56
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 166
Сила слова: -0.6

Здравствуйте
 
Меня где то неделю начал мучать Apache, пожирает 90-100% CPU
Сайты в этот момент открывается с +1 ~ +3 сек (Очень долго)
*Сразу скажу я не мега-сисОдмин устанавливал apache по мануалам.*
 
Спасал меня только рестарт apache из консоли debian-a, после рестарта где то 2-4 часа apache не поднимался даже до 20%
был стабилен 5~10%
 
Естественно меня это заебало и начел киллить(kill) процесы апач с 90%
 
Сделал для этого вот такой парсер и поставил на CRON каждые 20 мин.
PHP

<?php
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
// log in at server1.example.com on port 22
if(!($con = ssh2_connect("хуй.хуй.хуй.хуй", 22))){
    echo "fail: unable to establish connection\n";
} else {
    // try to authenticate with username root, password secretpassword
    if(!ssh2_auth_password($con, "рот", "опиздаололо")) {
        echo "fail: unable to authenticate\n";
    } else {
        // allright, we're in!
        echo "okay: logged in...\n";
 
        // execute a command
        if (!($stream = ssh2_exec($con, "top -b -n 1 -u www-data"))) {
            echo "fail: unable to execute command\n";
        } else {
            // collect returning data from command
            stream_set_blocking($stream, true);
            $data = "";
            while ($buf = fread($stream,4096)) {
                $data .= $buf."<br />";
                #echo $buf
            }
            $fp = fopen("logs.txt", "w+");
            $write = fwrite($fp, $data);
            fclose($stream);
        }
    }
}
 
// Сохраняем логи команды top
$FileData = file("logs.txt");
 
// Удаляем ненужные данные из массива
unset($FileData[0], $FileData[1], $FileData[2], $FileData[3], $FileData[4], $FileData[5]);
for($i=30; $i <= 120; $i++) {unset($FileData[$i]);}              
 
// С помощью регулярных выражений развиваем данные в простой массив
foreach($FileData as $k) {
$k = preg_replace("#(\s+)#", " ", $k);
preg_match_all("|(.*)\s(.*)\s(.*)\s(.*)\s(.*)\s(.*)\s(.*)\s(.*)\s(.*)\s(.*)\s(.*)\s(.*)\s|isU", $k, $matches);
$a++;
$logs[$a]['pid'] = $matches[1][0];
$logs[$a]['percent'] = $matches[9][0];
$logs[$a]['time'] = $matches[11][0];
$logs[$a]['proces'] = $matches[12][0];
$total_cpu += $matches[9][0];
}
 
// Идет проверка на cpu, если процесс работает более 5 минут и пожирает более 20% из CPU
// убиваем процесс и заносим его в логи
echo "Total CPU: $total_cpu %<br />";
$open_logs = fopen("KillLogs.txt", "a+");
foreach ($logs as $k => $n) {
 echo "PID: {$n['pid']} CPU: {$n['percent']} Time: {$n['time']} Proces: {$n['proces']}<br />";
 if($total_cpu >= 90) {
  if($n['time'] > "03:00:00" and $n['percent'] > 20 and $n['proces'] == "apache2") {
   // Убиваем процесс
   if(!(ssh2_exec($con, "kill ".$n['pid']))) {$result = "Ещё жив падла!";} else {$result = "Умер сука!";}
   // Пишем в лог
   $AddToKill = fwrite($open_logs, date("Y-m-d H:i:s")." PID: {$n['pid']} CPU: {$n['percent']} Time: {$n['time']} Proces: {$n['proces']} - $result\n");
  }
 }
}
?>
 

Получаю такой результат
Text

Total CPU: 0 %
PID:  CPU: S Time: %MEM Proces: TIME+
PID: 24323 CPU: 0.0 Time: 0:05.69 Proces: apache2
PID: 24384 CPU: 0.0 Time: 0:03.02 Proces: apache2
PID: 24414 CPU: 0.0 Time: 0:02.89 Proces: apache2
 

Скрипт работает
Но вот меня интересует вопрос:
Какие последствия могут быть если я кильну процесс который пожирает CPU и работает более чем 5 мин ?
Если это пользователь у него вроде должен в этот момент оборваться конект с сайтов... нет?
Или процессы www-data восстанавливаются если пользователь запросил опять страницу  ?
« Последнее редактирование: 27 Июль, 2011, 02:04:56 от phpdude » Записан
phpdude    ↓ 
27 Июль, 2011, 12:46:03 , спустя
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

спасибо за ип, рута и его пароль!
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
tartar    ↓ 
27 Июль, 2011, 12:54:33 , спустя 8 минут 30 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 166
Сила слова: -0.6

Бля во я лоханулся .... пиздец
удалите конеты )
Записан
tartar    ↓ 
27 Июль, 2011, 01:04:37 , спустя 10 минут 4 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 166
Сила слова: -0.6

лад, хорошо что новый vps не успел на нем что то поставить ))
Но все равно пиздец ))
Записан
tartar    ↓ 
27 Июль, 2011, 01:19:22 , спустя 14 минут 45 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 166
Сила слова: -0.6

Теперь все норм бывает и такое...
Спустя 19 секунд добавил
Вопрос остается в силе )
Записан
phpdude    ↓ 
27 Июль, 2011, 01:22:17 , спустя 2 минуты 55 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

хехе)) а чо яйки то подхал? зазвенели? xD
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
tartar    ↓ 
27 Июль, 2011, 01:26:43 , спустя 4 минуты 26 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 166
Сила слова: -0.6

phpdude, а то)) забыл этот код отредактировать после того как писать сюда.
Дуд можешь пожалуйста IP замазать ))
Записан
phpdude    ↓ 
27 Июль, 2011, 02:05:11 , спустя 38 минут 28 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: 20790
Сила слова: 1.66

тебе все таки удалось победить мою лень)) замазал
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
artoodetoo    ↓ 
27 Июль, 2011, 02:21:03 , спустя 15 минут 52 секунды
НЕ ХУЕТА! ХУЕТА!

с особым цинизмом
Группа: в ухо

Карма: 124
Сообщений: 3805
Сила слова: 3.26

хороший скриптик, плюсанул.
Записан
phpdude    ↓ 
27 Июль, 2011, 02:25:26 , спустя 4 минуты 23 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

Какие последствия могут быть если я кильну процесс который пожирает CPU и работает более чем 5 мин ?
да нихуя страшного, ктото просто увидит "соединение оборвано" :-)
 
и то возможно не оборвается, думаю зависит от типа процесс менеджменат апача - mpm, prefork.
 
именно апачу не тсрашно потерять форки, ты главное рутовый процесс не пристрели xD
 
если пристрелишь - уже не будут они оживать, надо будет перезапускать апач)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
mexys    ↓ 
27 Июль, 2011, 08:13:59 , спустя 5 часов 48 минут 33 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 19
Сила слова: 0

Все это конечно хорошо, но лучше с причиной разобраться чем с симптомами. Сам по себе апач таким вещам не особо подвержен.
Записан
artoodetoo    ↓ 
27 Июль, 2011, 08:22:53 , спустя 8 минут 54 секунды
НЕ ХУЕТА! ХУЕТА!

с особым цинизмом
Группа: в ухо

Карма: 124
Сообщений: 3805
Сила слова: 3.26

tartar, капитан очевидность сказал правду.
ты не выяснил отчего тормоза? какие модули апача установлены, расширения php? были сообщения, что иногда eacclerator создает дикие тормоза.
Записан
tartar    ↓ 
27 Июль, 2011, 11:04:35 , спустя 2 часа 41 минуту 42 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 166
Сила слова: -0.6

ты главное рутовый процесс не пристрели xD
Сортировку сделал по "top -b -n 1 -u www-data" так что root сюда не попадет.
 
Все это конечно хорошо, но лучше с причиной разобраться чем с симптомами. Сам по себе апач таким вещам не особо подвержен.
На vps установлен LAMP Server (linux, apache, mysql, php)
 
Когда CPU 100%, на вершине команды htop вот это строка
4565 www-data  20   0  292M 18352  4856 S  99%  3.5  0:03.51 /usr/sbin/apache2 -k start
 
Согласен, питался выяснить в логах папача, нет ошибок во время скачка CPU
- Проверил и логи сайтов (хз мб ддосят) чисты хотя гугл заглядывает но он не только в это время заглядывал
 
eacclerator создает дикие тормоза
хм, да eacclerator установлен попробую удалить его
Спустя 1 минуту 48 секунд добавил
удалось победить мою лень)) замазал
большое спасибо :)
Записан
fgets    ↓ 
27 Июль, 2011, 11:09:51 , спустя 5 минут 16 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 1119
Сила слова: -0.09

нахуй нужен этот апач в пизду его блять
Записан

эй детка не ссы в бассейн

Если в бочку с говном положить ложку меда — получится бочка говна. Если в бочку с медом положить ложку говна, не обольщайтесь ...
Sinkler    ↓ 
27 Июль, 2011, 11:13:05 , спустя 3 минуты 14 секунд
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 73
Сообщений: 6806
Сила слова: 1.07

кстати, того же мнения, как-то после полного перехода на нгинкс пол года назад, к апачу вообще не тянет
Записан

Страниц: [1] 2
Печать
 

Перейти в:  

Этот топик скрыли: adw0rd, artoodetoo, mario