Показ нагрузки от VB

Тема в разделе "PHP", создана пользователем avgaz, 18 янв 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    В vBulletin в админке есть такая функция в Быстрые ссылки
    Код:
    Загрузка сервера    2.86  2.58  2.48 
    Не как не могу понять как такое же сделать обычным скриптом???
     
  2. Abliganto

    Abliganto Постоялец

    Регистр.:
    30 ноя 2009
    Сообщения:
    111
    Симпатии:
    46
    Это результат linux команды uptime

    $ uptime
    23:12:45 up 195 days, 3:21, 2 users, load average: 1.58, 1.91, 1.72

    можно выполнить эту команду на сервере $uptime = exec( 'uptime' ) и регуляркой вынуть цифры
     
    avgaz нравится это.
  3. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    То что нужно можно теперь пояснить как мне все эти данные вывести по отдельности ну что бы было по строчно они
    И что значят числа 1.58, 1.91, 1.72??? и это для сервера в целом или для одного аккунта на хостинге??
    Просто вчера перенес форум с IPB на VB в результате эти числа в админке переваливали за 20 при 100пользователей онлайн и была ошибка БД на max_user_connections хотя на IPB 300онлайн держит нормально без каких либо ошибок БД в чем проблема так и не понял
     
  4. Abliganto

    Abliganto Постоялец

    Регистр.:
    30 ноя 2009
    Сообщения:
    111
    Симпатии:
    46
    Куда Вы хотите их вывести? Простейший пример
    PHP:
    <?php
    $uptime 
    exec'uptime' );

    // Можно сделать проще, выцепить все цифры разом, это более расширенный пример
    preg_match'#load average: ([\d\.]+), ([\d\.]+), ([\d\.]+)#'$uptime$matches );

    printf'Load average: %s, %s, %s'$matches[1], $matches[2], $matches[3] );
    Это показатель загрузки на сервере (на всём сервере) за последние 1, 5 и 15 минут. Ваши текущие числа говорят о том, что сервер за последние 15минут почти не загружен. Значения > 20 - это уже не есть хорошо. Надо анализировать что именно тормозит. Можно в момент сильной загрузки сервера ввести в консоли (ssh) команду top и посмотреть кто грузит процессор.
     
    avgaz нравится это.
  5. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Спасибо. Был бы свой сервер было бы легче, а тут VIP хостнг не посмотришь не чего.
    Просто меня смутили эти цифры когда они подлезли к 15 после перехода на VB
     
  6. Abliganto

    Abliganto Постоялец

    Регистр.:
    30 ноя 2009
    Сообщения:
    111
    Симпатии:
    46
    Быть может просто совпадение. Надо ловить момент и смотреть. Если речь идёт о shared-хостинге, то нагрузку мог создать кто угодно на сервере. Часто хостеры в панеле управления дают статистику использования ресурсов сервера в виде графиков, если таковые имеются по ним сразу всё станет ясно.
     
  7. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Нет панель IPS pro там только статистика на использованные ресурсы по нагрузке не чего нет.
    Меня испугало то что после переноса в vBulletin вылезла ошибка БД
    Код:
    mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: User *****l already has more than 'max_user_connections' active connections
    /home/g*****/data/www****/***b/includes/class_core.php on line 311 			 		
    Это при онлайн и 100 не было хотя на том же IPB 300онлайн полет нормальный в чем может быть проблема??? ведь не может быть такой разницы между форумами этими
     
  8. Abliganto

    Abliganto Постоялец

    Регистр.:
    30 ноя 2009
    Сообщения:
    111
    Симпатии:
    46
    Эта ошибка говорит лишь о том, что было израсходовано 300 соединений mysql. Причём, Вы не один на этом сервере и сосед по хостингу вполне мог израсходовать 250 соединений. Чтобы это определить наверняка - нужно выполнить SQL команду:
    Код:
    show processlist;
    и она покажет какие запросы в данный момент выполняются и от какого пользователя.

    По собственному опыту - соединения чаще всего заканчиваются не из-за наплыва посетителей (хотя это 2й вариант по популярности), а из-за долгой работы скриптов. К примеру, на форуме сидит 50 человек и вдруг страницы начинают грузиться по нескольку десятков секунд, люди не выдерживают и начинают нажимать Ф5 + приходят новые посетители, что резко повышает кол-во запущенных на данный момент скриптов, а каждый скрипт расходует по 1 соединению с БД. Таким образом моментально заканчиваются свободные соединения. От резкого наплыва посетителей скорей всего в первую очередь сработает ограничение веб-сервера в макс. числе коннекшенов.
     
  9. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Проблема в том что это произошло на форуме VB до этого не когда этого не возникло такой не когда и что это совпадение тоже не верится.
    Может в VB есть функция которая режет если определенное число коннектов к ДБ или после переноса который может прошёл криво не закрывает соединения?
    Если смотреть через админку переменные MySQL то там
    max_connections 1000
    max_user_connections 50
    если там же смотреть статус MySQL то там
    Max_used_connections 161
    Что здесь отвечает за ошибку что выше возникла
    Цитата:
    mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: User *****l already has more than 'max_user_connections' active connections
    /home/**/data/www****/***b/includes/class_core.php on line 311
    Если второе то почему на IPB в онлайне держит намного больше 250 и не каких ошибок форум не выдает??? а тут до 100 форум выкинул эту ошибку
     
  10. Abliganto

    Abliganto Постоялец

    Регистр.:
    30 ноя 2009
    Сообщения:
    111
    Симпатии:
    46
    Даже так. У Вас на сервере лимит 50 соединений от одного пользователя. В первый раз я невнимательно прочитал сообщение об ошибке, и думал, что сработал лимит на max_connections.

    Теоретически если 50 пользователей одновременно совершат какое-то действие на форуме, лимит будет моментально исчерпан. Тут всё решает время выполнения скрипта. И чем больше цифры в команде uptime, тем медленней будут выполняться Ваши скрипты, а значит, соединения с БД будут дольше заняты по времени и наплыв запросов мгновенно вызовет переполнение.

    Вам необходимо выяснить причину сего обстоятельства. Либо ждать очередных 100 пользователей либо устроить небольшой стресс-тест. К примеру, командой ab (в линукс)
    Код:
    ab -n 200 -c 10 http://урл форума
    данная команда пошлёт 200 запросов в 10 потоков на указанный урл. Либо зайти на форум и очень много раз нажать F5 в браузере, будет очень грубо и возможно не сработает :) Первый вариант предпочтительней. Если после такого стресс теста сильно увеличится первая цифра в команде uptime, значит новый форум создаёт большую нагрузку на сервер.
     
Статус темы:
Закрыта.