- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Стоит apache+php+mysql под windows и на нем крутится порядка 40 сайтов.
С некоторого времени загрузка процессора висит под 100%.
Какой из сайтов грузит сервер - не знаю. Смотрел по логам апача, длинные
запросы к БД, вобщем так и не пойму кто именно грузит.
По этому вопрос - каким образом можно узнать сколько процессорного
времени израсходовал каждый сайт за определенное время?
Если бы была программа, которая отслеживает все это дело и выводит в
графиках, было бы вообще супер.
А каким образом вы определите, какой сайт какую базу данных использует?
Никак :)
Только если разнесёте все сайты и БД по разным пользователям.
То есть, чтобы одному пользователю принадлежал только один сайт и только та (или те) БД, которые использует только этот сайт.
В этом случае можно учитывать раздельно процессорное время, потребляемое скриптами, и потребляемое БД, и суммировать, получая "нагрузку" одного пользователя (т.е. сайта).
Процессорное время, используемое пользователями БД, должен учитывать сам сервер БД, например, можно взять перкону, если речь о MySQL.
А на стороне веб-сервера нужно, чтобы пользовательские процессы принадлежали соответствующим системным пользователям, и в этом случае использовать системный учёт времени. Или же, если сайты работают под одним пользователем, то используя волшебную силу программирования, писать модуль, который будет собирать процессорное время по хостам.
Это всё реализуемо, но готовые доступные решения мне не известны.
Общего решения на все случаи жизни нет.
Можно разделить по пользователям, как сказал [umka]. Но и тут, если у вас php выполняется не как модуль apache под общим юзером.
По mysql тоже вариант с percona хорош.
Но всё это отдельно не имеет смысла. Вопрос достаточно глубокий, как считать нагрузку. Решения есть, но все не идеальны. У хостеров даже бывают сапописные скрипты, которые собирают статистику в нужном им формате.
Проще включить /server-status у apache и смотреть в момент нагрузки, к каким сайтам обращаются. Можно так же смотреть это по логам.
По mysql можно добавить префикс к базам, как у хостеров... в духе user_DB
Будет понятно, какому пользователю относится база при просмотре тяжёлых запросов. Ну а дальше в ручную найти в конфигурационных файлах сайта, который её использует.
Это всё гораздо проще, чем углубляться в точный подсчёт статистики, ведь он потребует смену программного обеспечения на сервере и тонкой настройки.
А каким образом вы определите, какой сайт какую базу данных использует?
Никак
Только если разнесёте все сайты и БД по разным пользователям.
То есть, чтобы одному пользователю принадлежал только один сайт и только та (или те) БД, которые использует только этот сайт.
По БД так и сделано, каждый сайт имеет свою базу и своего пользователя для этой базы.
Или каких пользователей вы имеете ввиду, пользователей виндовс? Тут я не очень понял.
Проще включить /server-status у apache и смотреть в момент нагрузки, к каким сайтам обращаются. Можно так же смотреть это по логам.
По mysql можно добавить префикс к базам, как у хостеров... в духе user_DB
Будет понятно, какому пользователю относится база при просмотре тяжёлых запросов.
До этого времени я так и смотрел по server-status, по логам и через долгие запросы.
Но не вижу я сейчас явной нагрузки от какого-то одного сайта, хотелось бы статистику собрать и вычислить кто из них сколько чего потребляет.
Сейчас вот смотрю munin под windows, может удастся установить.
Или каких пользователей вы имеете ввиду, пользователей виндовс? Тут я не очень понял.
[umka] имел ввиду разнести сайты по разным учётным записям.
Только косвенно определять.
1.можно по запросам в логах, как уже сказали.
2. можно с помощью tcpdump следить на какие сайты больше запросов, в принципе то-же что и по логам.
3. можно через lsof, а лучше через strace отследить где больше обращений к файлам какого сайта.
4. Можно смотреть через mytop или через mysql -e 'show full processlist;' на какой базе больше активность.
Но всё это позволяет лишь относительные величины узнать - т.е какой из сайтов больше всех ресурсов например ест. Точные абсолютные значения выявить не получится, да и, как уже сказал Himiko, не имеет особого смысла.
Это не даст ничего.
Как вам и сказали выше - стандартно система не разделяет нагрузку по сайтам, а только в пределах общей нагрузки.
С таким же успехом поставьте счётчики на сайты и посмотрите, где выше посещаемость. Munin больше информации не даст.
Здесь только разносить сайты по разным пользователям.
А вообще такие сайты держать на виндовом сервере, имхо извращение)
Поставьте CentOS - там все намного проще, и советов будет больше.
С таким же успехом поставьте счётчики на сайты и посмотрите, где выше посещаемость. Munin больше информации не даст.
Вывести server-status в munin? Будут графики, сразу на глаз видно, что потребляет.
А вот пример работы с логами сервера: http://elfstats.org/
---------- Добавлено 21.03.2017 в 15:30 ----------
Ещё:
https://github.com/munin-monitoring/contrib/tree/master/plugins/apache/apache_byprojects
https://github.com/munin-monitoring/contrib/tree/master/plugins/apache/apache_vhosts
1.можно по запросам в логах, как уже сказали.
2. можно с помощью tcpdump следить на какие сайты больше запросов, в принципе то-же что и по логам.
3. можно через lsof, а лучше через strace отследить где больше обращений к файлам какого сайта.
4. Можно смотреть через mytop или через mysql -e 'show full processlist;' на какой базе больше активность.
В первом сообщении я и писал, что смотрю по логам, также через длинные запросы к БД, кроме того есть программа HeidiSQL через
которую я вижу загрузку каждой БД онлайн, тоже самое что mysql -e 'show full processlist; только удобнее, в реальном времени
видно какие запросы к каким базам висят, сколько времени выполняются и т.д.
Отслеживать к-во обращений к файлам не плохо, но меня больше интересует нагрузка на процессор которая создается в связи с этими
обращениями. Возможно какой-то один кривонаписанный php скрипт создаст большую нагрузку чем миллион обращений к файлу.
Опять-же все это видно когда постоянно самому сидеть онлайн мониторить, а меня интересует вариант когда вся информация будет сама
собираться и где-то отображаться.
Как вам и сказали выше - стандартно система не разделяет нагрузку по сайтам, а только в пределах общей нагрузки.
С таким же успехом поставьте счётчики на сайты и посмотрите, где выше посещаемость. Munin больше информации не даст.
Я что буду каждый день открывать каждый сайт и смотреть посещаемость? Кроме того счетчики ботов не учитывают, да и нагрузка на сервер у разных сайтов разная, при одинаковой посещаемости.
Выводят-же хостеры нагрузку конкретного на сервер. Как можно это сделать?
Выводят-же хостеры нагрузку конкретного на сервер. Как можно это сделать?
Заходим на второй круг.
1. Проще всего это сделать, если вынести каждый сайт на отдельного системного пользователя, задействовать какой-нибудь модуль апача, который позволяет запускать скрипты от имени этого пользователя, и включить штатные средства аудита системы для учёта процессорного времени.
Дополнительно к этому нужно будет использовать штатные средства аудита сервера БД, сделать логическую привязку сайта и баз данных, которые использует только этот сайт, и суммировать системное процессорное время и процессорное время по этим БД.
2. Если же вам нужно чтобы все сайты каждого пользователя работали под одним системным пользователем, или php работает как модуль апача, или есть ещё какие-то причины, то тут поможет только волшебная сила программирования:
- Нанимаете программиста или администратора с хорошими навыками системного программирования. Ставите ему задачу. Он всё делает. Это всё вполне реализуемо.
- Или сами постигаете тонкости системного программирования. Делаете всё сами.
Других вариантов нет.
Готовых решений нет.