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

Понимание «лучших» пользователей

Я запускаю веб-сайт на стеке LAMP и новичок в управлении серверами. Когда я запускаю команду top, в ней отображается несколько пользователей с именем none, которые обращаются к команде httpd. Соответствует ли это количеству посетителей моего сайта в настоящее время?

Если это так, то иногда к моему веб-сайту обращаются 20 или 30 «никто», каждый из которых занимает определенный процент моей памяти. По мере увеличения трафика я буду увеличивать объем памяти, но есть ли другие способы решения этой проблемы? (Я знаю, что это широкий вопрос, но мне нужен общий совет)

Спасибо

Нет, top обозначает «таблицу процессов» и перечисляет процессы (запущенные, спящие, ожидающие ввода-вывода или другие) на вашем компьютере. При типичной настройке LAMP у вас будет несколько процессов, которые ждут, принимают соединение, обрабатывают запрос и возвращаются в своего рода состояние ожидания. Таким образом, нет прямой зависимости от количества «активных пользователей».

Чтобы правильно проанализировать загрузку вашего сервера apache, вы должны использовать журналы, которые пишет ваш apache (обычно в / var / log / apache, проверьте свою конфигурацию).

Отправные точки для понимания происходящего могут быть документация apache, и руководство по вашей системе для top (man top). Подробное представление о том, что сейчас делает ваш apache httpd, можно получить, используя mod_status, но убедитесь, что вы защищаете URL-адрес статуса надежным паролем.

никто пока не ответил на ваш вопрос о пользователе "nobody" ....

когда наверху указано имя пользователя «никто», это не имеет ничего общего с тем, какой пользователь вошел на ваш веб-сайт.

top не знает, не заботится и не имеет доступа к информации о вашем веб-сайте или учетных записях пользователей, которые у него есть. top отображает сведения о запущенных процессах unix, включая идентификатор пользователя unix (uid), под которым работает каждый процесс.

то есть «никто», упомянутый top, является пользователем Unix, который запускает процесс apache.

предположительно ваша система настроена для запуска apache от имени пользователя none, поскольку это минимальная привилегированная учетная запись, которая не может много сделать, даже если кому-то удастся скомпрометировать программу apache. это вполне нормально. некоторые системы запускают apache как пользователь «apache», «httpd», «www-data» или какое-то другое имя пользователя, но запускать его как «никто» нормально ... это просто еще один пользователь unix в системе.

если вы не используете suexec или аналогичный, все процессы apache будут выполняться как «никто», независимо от того, кто вошел в систему на вашем веб-сайте. поскольку вы задаете вопросы о том, кто является пользователем none, я думаю, можно с уверенностью предположить, что вы не используете suexec.


резюмировать: это НЕ проблема, и ее не нужно решать.

Веб-сервер обрабатывает входящие соединения, разветвляя дочерние процессы httpd. Эти «лишние» процессы будут сидеть и ждать входящих подключений, поэтому нет задержки ... другими словами, есть запасные процессы, ожидающие обработки входящих запросов на подключение.

Если вы просмотрите файл конфигурации для apache, вы увидите параметр, который контролирует, сколько запасных дочерних процессов должны ждать своего часа.

Когда эти процессы начинают обрабатывать новые соединения, если все они заняты, запускается еще больше процессов httpd.

Однако не все они пожирают память; это вводит в заблуждение, потому что некоторая память используется совместно другими процессами.

Следите за своими лог-файлами в / var / log (возможно, / var / log / http, / var / log / httpd, или / var / log / apache, или / var / log / apache2). Это список всех входящих запросов.

Вы можете отслеживать в реальном времени, используя tail -f /var/log//access.log; используйте Ctrl-c, чтобы выйти из него.