Привет, мой сервер - это двухъядерный четырехъядерный процессор с оперативной памятью 8 ГБ, он запускает LAMP для веб-сайта среднего размера (ежедневно открываются 120 страниц). Я установил munin для мониторинга процессора, и это график: http://img834.imageshack.us/img834/3483/downloadv.png почему он использует только 2 ядра из 8? может мунин плохо рассчитывает загрузку процессора?
есть способ заставить многозадачность ip php mysql apache? Я уже использую MPM с apache.
спасибо, Саймон
Прежде всего, будьте уверены, что, похоже, нет никакого оборудования или O.S. проблема: ваш рисунок показывает, что система правильно распознает наличие 8 доступных процессоров; таким образом, нечего настраивать ни в BIOS, ни в ядре Linux.
Что касается возможных причин, по которым ваши приложения не полностью используют всю мощность вашего процессора, их в основном три:
Третий вариант наиболее неправдоподобен, потому что по умолчанию MySQL и Apache полностью удовлетворены переходом на многопоточность, если могут; так что давайте сосредоточимся на двух других.
Как у сервера время отклика при текущей нагрузке? Ощущается ли он «медленно» или отвечает быстро? Чтобы исключить это, можете ли вы запустить тесты производительности, чтобы увеличить нагрузку на свой сервер? Если загрузка ЦП возрастает при более высокой нагрузке, значит, ваш сервер работает нормально, просто в настоящее время ему не требуется столько мощности ЦП. Но если это не так и сервер начинает плохо отвечать (или если он уже это делает), вам следует взглянуть на вариант 2.
Относительно этого: Apache по своей сути параллелен, поскольку он «просто» обрабатывает и обслуживает веб-страницы; так что виновником может быть MySQL. Какие запросы вы к нему предъявляете? Вы просто выполняете SELECT или (возможно, сильно) вставляете, обновляете или удаляете данные? Кроме того, какие транзакции и блокировки вы используете? В зависимости от всего этого вполне может быть, что запросы просто выполняются последовательно, потому что сервер не может правильно их распараллелить. То же самое может произойти, потому что MySQL ожидает ввода-вывода на диск или потому, что у него недостаточно доступной памяти. Вам следует запустить какой-нибудь инструмент профилирования для вашего MySQL и посмотреть, что он скажет по этому поводу.
120 страниц, открываемых ежедневно, - это мелочь для этой электростанции. Вы не приближаетесь к тому, чтобы максимально использовать одно ядро, не говоря уже о 8.
Похоже, вы ищете проблему. Есть ли несколько медленных страниц, которые вы пытаетесь определить как медленные?
Просмотр страницы обычно выполняется только на одном ядре как отдельный процесс / задача / поток. Ваша база данных будет работать в другой базе данных, однако, если обработка, которую она должна выполнять, является сложной, это может занять время, независимо от того, сколько у вас ядер.
90% времени медленные страницы возникают из-за отсутствия индексов в базе данных.
Использование кеша запросов MySQL может ограничить операцию одним потоком. Проверьте, используете ли вы его, и отключите, если он вам не нужен. Кэш запросов снизит нагрузку на ваш сервер при операциях чтения, но это станет обузой, если вы выполняете много операций записи и / или ваш сервер должен масштабироваться до большой нагрузки. 120 просмотров в день - это ничто.
Я действительно думаю, что это связано с тем, как такие инструменты, как munin, показывают ресурсы, а не столько с загрузкой процессора. Попробуйте установить "htop", так как он покажет вам одну полосу для каждого ядра в хорошей форме, это, вероятно, поможет вам получить ответ.
У меня было то же самое с cacti, и я пришел к выводу, что мониторинг составляет 100% на ядро. Вот почему у вас доступно 800%, возможно, у вас лучше оптимизированная установка, чем вы даже осмеливались надеяться! ;)
Apache + PHP + MySQL должен использовать все ресурсы автоматически, без дополнительных настроек. Что, если вы просто посмотрите на верхняя command и проверьте использование процессора?
И вы уверены, что использование процессора должно быть выше этого? 8-ядерная машина - это такая мощная машина, что для использования 800% ЦП потребуется интенсивный трафик или тяжелые вычисления.
Похоже, что используется 8 ядер, потому что на левой стороне диаграммы вы получили максимум 800%.
Это график вашего процента использования ЦП. К ядрам тут не причем.
Как уже говорили другие, этот график не поддерживает ваше утверждение, что веб-сервер использует только одно ядро.
сайт среднего размера (ежедневно открывается 120 страниц)
В самом деле? 120 просмотров в день? И у вас есть большой мощный сервер для этого? Хотел бы я иметь ваш ИТ-бюджет. Это оборудование должно поддерживать более 10 000 000 обращений в день! Если для одного обращения в минуту требуется 1/8 часть его общей мощности процессора, то здесь что-то не так.
(Кстати, в Linux можно установить / прочитать привязку к ЦП - подробности см. В «man taskset»).
С.