Назад | Перейти на главную страницу

Пользователи, которые сейчас запрашивают страницы

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

ps aux | grep php | wc -l

результат: 68

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

ps aux | grep httpd | wc -l

результаты 12

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

В приведенных выше примерах показано, сколько запущенных процессов 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 указывает, что другая сторона закрыла соединение. TIME_WAIT указывает, что локальная сторона закрыла соединение.

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

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

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

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

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

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

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