Пользователи, в настоящее время запрашивающие страницы

Я записал эту команду на своей оболочке для получения текущих запросов к серверу

PS aux | grep php | туалет-l

результат: 68

так эта команда возвраты, что 68 в настоящее время просматриваний некоторых сайтов на моем сервере, поскольку я понимаю также, что записал

PS aux | grep httpd | туалет-l

результаты 12

какой является corrent числом для людей, в настоящее время запрашивающих страницы на моем сервере? второй вопрос может я получать требуемые страницы точно ewhat, они напр./home/user1/public_html/page.php заранее спасибо

1
задан 14 March 2015 в 01:02
1 ответ

Ваши примеры выше показывают, сколько запущенных процессов php и httpd на самом деле не покажут вам соединения. Если вы просто хотите получить примерное представление о соединениях, вы можете попробовать netstat -an | grep :80 | wc -l, который покажет вам общее количество соединений (как в активном состоянии, так и в состоянии ожидания) для порта 80.

Чтобы действительно получить метрики по запросам страниц, загрузке сервера и отслеживанию пользователей, вам нужно посмотреть на что-то вроде MRTG или Cacti.

Расширенный ответ:

Команда выше показывает все соединения к какому бы порту вы не проверяли, но не делает различия между активными соединениями или другим разным статусом, как TIME_WAIT и CLOSE_WAIT, а также не разбивает его на виртуальный хост, это просто все соединения на этом сервере к порту X.

Если вы запустите команду без трубы wc -l, вы увидите другой статус, включая ESTABLISHED, TIME_WAIT и CLOSE_WAIT.

CLOSE_WAIT указывает на то, что другая сторона закрыла соединение. ВРЕМЯ_WAIT указывает, что локальная сторона закрыла соединение.

Эти соединения поддерживаются в течение нескольких минут, чтобы убедиться, что любые задержанные пакеты совпадают и доставляются должным образом.

Когда запрос клиента приходит на ваш веб-сервер (apache, nginx, iis, lighthttp и т.д.) обрабатывает запрос клиента и загружает файл. Если он обнаруживает, что содержит php код, он передаёт его интерпретатору php, который затем либо подключается к базе данных типа postgres или mysql, либо передаёт его обратно вашему веб-серверу, который доставляет его клиенту.

Вы обнаружите, что ваш веб сервер и php обычно способны обрабатывать сотни клиентских запросов, так что хотя у вас может быть более 100 клиентских соединений, у вас может быть только 1-10 httpd процессов, так как каждый рабочий процесс обрабатывает несколько клиентских запросов.

Тот факт, что вы сказали netstat -an | grep :80 | wc -l вернул 3500 результатов, требует проведения расследования. Из любопытства я проверил наш самый тяжелый сервер нагрузки в настоящее время нажмите 1.1Mbit трафика и обнаружил, что он имел только 141 соединение между различными портами, на которых мы серверное содержимое, однако, если ваш сайт имеет высокий трафик и не основан на сеансах, то это вполне возможно.

Если вам действительно интересно, что происходит, то только мониторинг может сказать вам об этом. Cacti даст вам хорошее представление о пропускной способности и нагрузке на сервер, а что-то вроде Apache mod_status, MRTG или Awstats даст вам лучшее представление о трафике каждого виртуального хоста с разбивкой на уникальных посетителей и метрикой трафика страниц.

Если вам нужны только некоторые беглые данные, вы можете подключить статус, т.е. netstat -an | grep :80 | grep ESTABLISHED | wc -l покажет вам количество ESTABLISHED-соединений с портом 80, игнорируя CLOSE_WAIT и TIME_WAIT. Даже это дает вам лишь приблизительное представление о том, сколько людей подключается к вашему серверу, чтобы понять, как люди используют ваш сайт (сайты), вам нужно пройти маршрут внешних приложений.

Надеюсь, это поможет.

.
0
ответ дан 4 December 2019 в 07:57

Теги

Похожие вопросы