ФорумПрограммированиеPHP для идиотов → Профилирование живой системы

Профилирование живой системы

  • gooddaytoday

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 25 марта 2012 г. 3:23

    Всем добрый день.

    Итак, я делаю сейчас штанишки для веб-проекта. Такие, чтобы любому подошли. Которые несильно загружая сервер будут записывать данные для профилирования. И, когда сервер сядет в лужу от наплыва посетителей, его попка будет почти сухой: мы будем знать где в живой системе узкие места. Есть несколько проблемок.

    Я логирую время загрузки страниц и использования mysql. Cron постоянно отслеживает среднее время использования Mysql, чтобы в случае его увеличения включить профилирование медленных запросов SET profiling=1 на тяжелых страницах, которые больше всего загружают сервер. Вопрос: я прав, предполагая, что увеличение среднего времени Mysql означает превышение возможностей сервера? Таким образом я хочу отслеживать I/O.

    Стоит ли отслеживать CPU? Вот функция загруженности процессора, отсюда. Под виндой, как я понял, выдает процент загруженности процессора, а под Linux количество процессов в очереди стека.
            function get_server_load() {

    if (stristr(PHP_OS, 'win')) {

    $wmi = new COM("Winmgmts://");
    $server = $wmi->execquery("SELECT LoadPercentage FROM Win32_Processor");

    $cpu_num = 0;
    $load_total = 0;

    foreach($server as $cpu){
    $cpu_num++;
    $load_total += $cpu->loadpercentage;
    }

    $load = round($load_total/$cpu_num);

    } else {

    $sys_load = sys_getloadavg();
    $load = $sys_load[0];

    }

    return (int) $load;
    }


    Как отслеживать процент загруженности оперативки, не нашел.
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 25 марта 2012 г. 4:01, спустя 38 минут 1 секунду

    Процессора:
    cat /proc/loadavg

    Оперативы:
    free -m
    (грепай нужное и калькулируй)
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 25 марта 2012 г. 5:55, спустя 1 час 53 минуты 43 секунды

    Йо, а почему бы просто забикс какой-нить не поставить?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 25 марта 2012 г. 6:08, спустя 13 минут 13 секунд

    cacti, munin
    Спустя 82 сек.
    monit, supervisor, nagios туда же
    adw/0
  • gooddaytoday

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 25 марта 2012 г. 8:51, спустя 2 часа 42 минуты 26 секунд


    Процессора:
    cat /proc/loadavg

    Оперативы:
    free -m
    (грепай нужное и калькулируй)

    Пасиба, попробуем.

    На счет zabbix и др. готовых решений - это довольно сложно для новичков. Я хочу написать все на пэ-ха-пэ и оформить в виде готового решения. Тогда, если сюда зайдет новичок с вопросом "как оптимизировать мой говнокод", ему можно будет смело давать ссыль и просить не задумываться об оптимизации, ведь его говнокодная подделка вряд ли соберет миллионы пользователей. Ну а уж если соберет, будет известно, что оптимизировать.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 25 марта 2012 г. 8:52, спустя 1 минуту 34 секунды

    gooddaytoday, идиотству нет предела. так и рожаются "профилировщики" во всяких жумлах. профилирование рантайм енвироумента кода - нихуя не задача пхп, смирись и удавись :-)

    открой для себя xdebug например чтоли.
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 25 марта 2012 г. 9:58, спустя 1 час 5 минут 21 секунду

    мне кажется (возможно я не сильно осведомлен), что заббикс - это скорее мониторинг, а не профайлинг. Или я ошибаюсь?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 25 марта 2012 г. 10:32, спустя 34 минуты


    мне кажется (возможно я не сильно осведомлен), что заббикс - это скорее мониторинг, а не профайлинг. Или я ошибаюсь?
    судя по том что хочет автор - это мониторинг
    Спустя 18 сек.
    а для профайлинга php я бы рекомендовал xhprof
    adw/0
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 25 марта 2012 г. 12:30, спустя 1 час 58 минут 14 секунд

    забавно, тут имея все графики и утилиты под рукой, порой хер поймешь отчего сервак валится
  • gooddaytoday

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 25 марта 2012 г. 13:56, спустя 1 час 25 минут 45 секунд

    Нет, мне нужен именно профайлинг. Причем нужно именно на живой системе определять узкие места MySQL (CPU и RAM - вторично, т.к. везде где есть ISP Manager, есть такая статистика). Дебаггер и профайлер в IDE у меня есть.

    Грубо говоря, Faster'у станет понятно, отчего его сервак валится.
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 25 марта 2012 г. 15:17, спустя 1 час 21 минуту 23 секунды

    http://adw0rd.ru/2010/freebsd-xhprof-php/ тогда вот что тебе надо
    adw/0
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 25 марта 2012 г. 16:33, спустя 1 час 15 минут 23 секунды

    в сф2.1 это дело встроенно http://yfrog.com/o0juxkivj
    Спустя 125 сек.
    вот скрин покрупнее https://plus.google.com/105277032278920596508/posts/Bokb6zuv1RF , с Любимым
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 26 марта 2012 г. 1:26, спустя 8 часов 53 минуты 58 секунд


    Нет, мне нужен именно профайлинг. Причем нужно именно на живой системе определять узкие места


    http://habrahabr.ru/post/129042/
  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 26 марта 2012 г. 1:34, спустя 7 минут 17 секунд

    Интересно, как можно не изменяя исходники иметь на develop профилирование кода, а на production чистый код без мусора.
    Обсудим?
    ιιlllιlllι унц-унц
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 26 марта 2012 г. 3:40, спустя 2 часа 6 минут 37 секунд

    Хороший вопрос. if DEBUG, это конечно не чистый код. В питоне есть декораторы - это изящней, но все-равно не чистый код … Какие еще идеи?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!