Как проверить нагрузку на сетевое соединение или сервер БД из PHP? - PullRequest
2 голосов
/ 23 декабря 2010

У меня есть два сервера, X - это веб-сервер (PHP), а Y - сервер базы данных (MYSQL), как я могу отслеживать, есть ли перегрузка в сети между X и Y. Кроме того, иногда ответ от Yочень медленно !!!Как я могу проверить нагрузку со стороны веб-сервера (сторона PHP), чтобы увидеть, не перегружен ли сервер БД или соединение между этими двумя серверами не может удовлетворить эту нагрузку ??

Спасибо за вашу помощь

Ответы [ 2 ]

3 голосов
/ 23 декабря 2010

Самый быстрый способ - войти в систему с помощью SSH и использовать CLI Инструменты, такие как htop или top, чтобы проверить текущую загрузку, однако, если у вас есть несколько серверов, которые выполняют разные задачи, которые он может выполнитьсмысл устанавливать какой-то мониторинг для сбора метрик и получения информации о загрузке и использовании, для этого есть множество сложных инструментов, таких как Ganglia http://ganglia.sourceforge.net/, Munin http://munin -monitoring.org / или, как уже упоминалось, Nagios.

1 голос
/ 23 декабря 2010

Что ж, одним из вариантов было бы указать условие тайм-аута в MySQLi и использовать MySQLi :: real_connect ... Таким образом, если время истекает раньше, вы можете предположить, что оно не работает ... Вот пример с таймаутом в 1 секунду:

$mysqli = mysqli_init();
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 1);
if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db')) {
    // Connection timed out (most likely), so assume load too high
}

Другой вариант - использовать такой инструмент, как Nagios для мониторинга рассматриваемых серверов. Затем напишите небольшой фрагмент кода, чтобы проверить состояние из Nagios, прежде чем пытаться подключиться (это так же просто, как чтение файла журнала).

Если вы действительно обеспокоены такими вещами, как эффект /., вы можете сохранить копию сайта в чистом HTML, а затем переключиться на нее, если сайт замедлится достаточно (напишите задание cron, чтобы проверить нагрузка на сервер, и если он слишком высокий, переключитесь на него, и если он упадет, переключитесь обратно).

Но я должен спросить, почему вы хотите это сделать? Почему бы просто не позволить PHP потерпеть неудачу изящно? Лучше исправить проблемы с загрузкой, чем писать весь этот код (который увеличит саму нагрузку), чтобы попытаться обнаружить его. Исправьте медленные и неэффективные части, и вам не придется беспокоиться обо всем этом ...

...