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

Анализ производительности Apache

У меня действительно проблемы с моим веб-сервером. Я настраивал вещи в соответствии с предложениями в Интернете, но не смог найти ничего конкретного.

Мой процесс Apache ел 450 МБ в столбце виртуальной памяти, когда я делал htop. Я искал в Интернете, и люди сказали, что с установкой eaccelerator система станет быстрее и эффективнее и потребляет меньше памяти и процессора. К сожалению, это оказалось хуже, чем раньше. Теперь мои процессы apache показывают 1488 МБ памяти в столбце виртуальной памяти.

  1. Хотя каждый процесс показывает 1488 МБ памяти, я вижу, что общее потребление ОЗУ составляет всего 7 ГБ, что тоже, когда Varnish Cache забрал 4 ГБ (я использую его как обратный прокси).

  2. Я не уверен, стоит ли мне беспокоиться о столбце виртуальной памяти или нет.

  3. После установки eaccelerator мой сервер не вышел из строя из-за использования полной ОЗУ 18 ГБ и 2 ГБ пространства подкачки. Раньше такое бывало. Но опять же, прошел всего 1 день с тех пор, как я установил eaccelerator, поэтому могут возникнуть проблемы через день или два.

  4. Пожалуйста, не предлагайте мне использовать APC ... он не устанавливается на моем сервере.

  5. Я проверил страницу phpinfo своего сервера и обнаружил, что Eaccelerator кэширует скрипты. На данный момент он израсходовал около 80 МБ памяти (из выделенного мной 1 ГБ) и кэшировал около 900 скриптов.

  6. На данный момент мои настройки предварительной вилки -

    StartServers 8
    MinSpareServers 5
    MaxSpareServers 20
    ServerLimit 256
    MaxClients 256
    MaxRequestsPerChild 100

Ниже приведен снимок экрана с htop.

FYI - Это выделенный сервер с 8-ядерным процессором.
Пока мой сервер не работает, мой сайт работает отлично. Первый раз загружается примерно за 8 секунд, а второй просмотр - за 2,5 секунды. У сайта много изображений, как у сайта электронной коммерции.

Как система Unix использует память - это очень долгая и сложная история. Суммирование виртуального размера каждого процесса не дает точного представления о том, что происходит. Гораздо лучший подход - отслеживать количество процессов httpd и доступную память (меньше буферов / кеша), о которых сообщает «бесплатно». Затем нанесите их на график и получите более реалистичные измерения.

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

Вы не предоставили никакой информации о том, как вы настроили KeepAlives, которые имеют большое влияние на использование памяти и производительность. Вы также не предоставили никакой информации о структуре активности на сервере - как количество процессов httpd меняется в течение цикла? Не зная этого, невозможно прокомментировать, насколько уместны предоставленные вами сведения о конфигурировании. Однако ваш MaxRequestsPerChild очень низкий, если вы не подозреваете, что с вашим кодом есть большая проблема.

Также, не зная больше об относительных объемах типов контента, сложно сказать, что могло бы помочь - например, если вы обслуживаете много статических CSS, JS и HTML, вы получите много преимуществ от использования сжатия.

8 ядер и 18 ГБ? Big Iron - это НЕПРАВИЛЬНЫЙ способ построить масштабируемую архитектуру веб-сервера.

мой сайт работает отлично. Он загружается примерно за 8 секунд в первый раз, а второй просмотр - за 2,5 секунды.

Думаю, у нас разные толкования слова «отлично»

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

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

Итак, измените свой apache на использование рабочий mpm вместо этого. Это должно немного помочь.

Тем не менее, если у вас 18 ГБ ОЗУ, в чем проблема с использованием 7 ГБ для apache? У тебя еще много осталось для других дел.

Может быть, вы могли бы объяснить дальше, чего вы пытаетесь достичь.

Виртуальная память - это то, что написано в ее названии. Посмотрите на RES столбец для реального использования памяти.

Подробнее см. man topв частности DESCRIPTIONS of Fields раздел.