Apache windows медленно работает

Содержание
  1. Оптимизация производительности apache2
  2. 1. Отключение неиспользуемых модулей
  3. 2. Смена MPM(Multi-Processing Module) и использование php-fpm
  4. 3. Заключение
  5. Как настроить сервер Apache на максимальную производительность
  6. Что замедляет сервер?
  7. Как ускорить работу Apache?
  8. 5 шагов для ускорения работы Apache
  9. Настройки для ускорения Apache во время компиляции
  10. Загружайте только нужные модули
  11. Выберите правильный MPM
  12. Ускорение работы Apache изменениями во время выполнения
  13. Поиск DNS
  14. Настройка AllowOverride
  15. Настройки FollowSymLinks и SymLinksIfOwnerMatch
  16. Согласование содержимого (Content Negotiation)
  17. Настройка MaxClients
  18. Настройки MinSpareServers, MaxSpareServers и StartServers
  19. Настройка MaxRequestsPerChild
  20. Настройка KeepAlive и KeepAliveTimeout
  21. Timeout
  22. Сжатие и кэширование HTTP
  23. Разные серверы для статического и динамического контента
  24. Тонкая настройка MySQL и PHP
  25. Заключение
  26. Сильно тормозит Apache
  27. Apache 2.4 на Windows реагирует медленно, зависает при обслуживании некоторых динамических страниц
  28. 2 ответов
  29. ссылки
  30. Помогите найти причину проблем с apache

Оптимизация производительности apache2

Многие используют apache2 в качестве веб-сервера. Однако мало кто задумывается об оптимизации его производительности, что прямо пропорционально сказывается на скорости загрузки страниц сайта, скорости обработки скриптов (в частности php), а также на росте нагрузки на ЦП и увеличении объёма используемой ОЗУ.

Таким образом, следующий мануал, должен помочь начинающим (и не только) пользователям.
Все нижеприведённые примеры использовались на Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.

Итак, начнем.

1. Отключение неиспользуемых модулей

Первым методом является банальное отключение модулей, которые вы не используете:

Список используемых в данный момент модулей можно посмотреть командой:

Для отключения модуля используется команда:

Соответственно для включения модуля используется команда:

Обратите внимание, что при использовании a2dismod, название модуля необходимо писать без самого слова модуль.

Наиболее загружающими систему модулями (по личному опыту) являются:

Также, после отключения какого-либо модуля, я рекомендую использовать команду — apache2ctl configtest, которая проверит конфигурацию используемых сайтов и если какой-либо из отключенных модулей был для них необходим, выдаст ошибку.

2. Смена MPM(Multi-Processing Module) и использование php-fpm

По умолчанию, после установки, apache2 использует MPM Prefork (1 поток на 1 соединение), который заметно снижает производительность, но при этом улучшает стабильность и безопасность.

Но для оптимизации производительности я рекомендую использовать MPM Worker, который позволяет использовать сразу несколько потоков на одно соединение.

Для его включения используем следующие команды:

Однако при использовании Worker вы можете столкнуться с проблемой, т.к. модуль php7.3 зависит от модуля Prefork.

Для решения этой проблемы установим модуль php7.3-fpm, который будет использоваться для отработки php-скриптов:

Стоит заметить, что использование php-fpm также снизит объём используемой ОЗУ процессом apache2 и немного ускорит отработку php-скриптов.

3. Заключение

Таким образом, такими простыми действиями мы смогли оптимизировать производительность и снизить нагрузку на машину (в данном случае RPI3).

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

Источник

Как настроить сервер Apache на максимальную производительность

В наши дни все ждут от сайтов молниеносной скорости загрузки. В этой статье мы рассмотрим лучшие методы оптимизации сервера Apache.

Что замедляет сервер?

Работа веб-серверов может замедляться из-за вредоносных программ, больших объемов трафика или из-за неправильного распределения ресурсов. Есть два пути ускорения работы веб-сервера Apache:

Круглосуточный мониторинг производительности и экстренные исправления.

Отслеживание производительности, завершение процесса-нарушителя и установление лимитов выделенных ресурсов, чтобы в будущем предотвратить возникновение подобных проблем.

Периодический аудит производительности и настройка Apache.

Позволяет найти уязвимости сервера и защитить их.

Как ускорить работу Apache?

Настроить производительность Apache таким образом, чтобы она соответствовала объемам получаемого трафика. Таким образом можно добиться 50% ускорения работы.

5 шагов для ускорения работы Apache

Ускорить работу Apache можно на двух основных стадиях:

Настройки для ускорения Apache во время компиляции

Нужно выбирать вариант установки Apache, исходя из ваших требований. Это поможет создать быстрый и эффективный веб-сервер.

Загружайте только нужные модули

В Apache функциональность реализуется путем добавления модулей. Они бывают двух типов: статические и динамические (общие).

Статические и динамические модули : ключевые различия

Статические модули Динамические модули
Компилируются в бинарные файлы Добавляются во время выполнения
Требуют перекомпиляции кода Перекомпиляция не требуется
Быстро загружаются Замедляют веб-сервер
Читайте также:  The landscape seen from your windows

Чем больше статических модулей в бинарных файлах, тем быстрее работает веб-сервер. Но они требуют перекомпиляции Apache каждый раз, когда нужно что-то изменить. Из-за этого динамические модули или DSO используются чаще, поскольку они могут быть скомпилированы отдельно и загружены во время выполнения.

Но большое количество динамических или общих модулей может замедлить работу сервера Apache и сайта. Поэтому при выборе модулей требуется соблюдать осторожность.

Чтобы увеличить скорость работы и производительность, используйте минимальное количество динамических модулей, поскольку они уменьшают объем доступной памяти.

Выберите правильный MPM

В Apache используются MPM (мульти-процессинговые модули), которые обрабатывают запросы, приходящие на сервер. Они прослушивают сетевые порты сервера, принимая запросы и создавая дочерние процессы.

MPM бывают двух типов: Prefork и Worker. В MPM Prefork каждый процесс httpd обрабатывает один сетевой запрос. Это более безопасно по сравнению с MPM Worker, но требует большего количества памяти и ресурсов.

MPM – Prefork и Worker

MPM Prefork MPM Worker
Один поток Несколько потоков
Использует больше ресурсов Использует меньше памяти
Отказоустойчив Справляется с большим трафиком

При использовании MPM Worker Apache работает в режиме многопоточного сервера, где каждый отвечает за свой запрос. Этот вариант подходит для обработки большего трафика при ограниченных мощностях сервера.

По умолчанию большинство установок Apache используют модуль Prefork. Он применяется для обработки больших объемов трафика. Вы можете проверить, какой модуль MPM использует ваш сервер при помощи следующей команды:

Определение типа MPM на вашем веб — сервере Apache

В Apache 2.4 появилась поддержка э MPM модуля Event, который может обрабатывать множественные запросы внутри одного потока. Поэтому он работает даже быстрее, чем модуль Worker.

Ускорение работы Apache изменениями во время выполнения

Чтобы повысить производительность сервера, нужно регулярно измерять производительность и осуществлять тонкую настройку конфигурации. Наиболее важные параметры, которые нужно оптимизировать:

Поиск DNS

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

При настройке директив Allow from или Deny from используйте IP-адреса вместо доменных имён. Иначе будет осуществляться двойной поиск имени DNS, который уменьшит производительность сервера.

Настройка AllowOverride

Настройка Apache FollowSymLinks сообщает серверу, что нужно проверять символические ссылки и проходить по ним. Если она имеет значение Off, Apache придётся выполнять дополнительные проверки, что замедлит его работу.

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

Лучше всего активировать директиву FollowSymLinks и выключить директиву ‘SymLinksIfOwnerMatch’. Но это может привести к проблемам с безопасностью, поэтому окончательное решение остается за вами.

Согласование содержимого (Content Negotiation)

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

Если согласование содержимого необходимо для сайта, можно снизить задержки, используя файлы type-map вместо директивы Options MultiViews. Ее применение увеличивает задержку.

Настройка MaxClients

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

Большое значение параметра может загрузить оперативную память и повлиять на скорость ответов Apache. Необходимо выбрать оптимально значение исходя из объёма доступной памяти и ресурсов, потребляемых процессом.

Настройки MinSpareServers, MaxSpareServers и StartServers

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

Если значение MinSpareServers слишком низкое, и на сервер поступает одновременно несколько запросов, Apache создаст дополнительные дочерние процессы. Это снижает возможность быстрого ответа на запрос клиента.

Значение MaxSpareServers не должно быть слишком большим. Так как стоящие в очереди на обработку дочерние процессы потребляют лишние серверные мощности. Нужно установить эти значения в оптимальном диапазоне, чтобы сбалансировать использование ресурсов и производительность.

Директива StartServers устанавливает количество дочерних серверных процессов, которые создаются при старте сервера. Если запросов много, а Apache часто перезагружается, нужно установить относительно большое значение.

Настройка MaxRequestsPerChild

Директива MaxRequestsPerChild устанавливает лимит количества запросов, которое будет обрабатывать каждый дочерний процесс. Слишком малое значения может привести к перегрузке сервера при создании новых процессов. Поэтому нужно установить это значение в диапазоне нескольких тысяч, чтобы ускорить работу Apache.

Читайте также:  Minecraft нет звука windows 10

Настройка KeepAlive и KeepAliveTimeout

KeepAlive используется для поддержки единого соединения для передачи данных веб-страницы. Благодаря чему не тратится время на создание нового подключения для каждого файла.

KeepAliveTimeout определяет время ожидания следующего запроса. Если значение большое, дочерние процессы могут расходовать ресурсы, ожидая следующего запроса. Оптимальное значение – 2-5 секунд для небольших объемов трафика и 10 секунд для высоконагруженных серверов.

Timeout

Устанавливает время ожидания запроса от посетителя. При больших объемах трафика значение параметра должно быть не менее 120 секунд. Но лучше держать это значение минимальным. Это позволяет предотвратить излишнее расходование ресурсов.

Сжатие и кэширование HTTP

Сжатие HTTP применяется для ускорения работы серверов Apache. Сервер применяет к телу ответа шифрование gzip или deflate перед тем, как отправить его клиенту. Затем клиент распаковывает полученные данные. Данные сжимаются только если браузер запрашивает сжатие. Сжатие HTTP включается в Apache с помощью модуля ‘mod_deflate’.

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

Модули mod_expires и mod_headers для настройки кэша через HTTP- заголовки, присылаемые с сервера. С помощью директив cache-control можно управлять правилами кэширования, чтобы ускорить работу Apache.

Также можно использовать кэширование на стороне сервера, когда часто запрашиваемый контент хранится в памяти. Для настройки данного типа кэширования используется модуль mod_cache.

Разные серверы для статического и динамического контента

Процессы Apache, которые управляют динамическим контентом, потребляют от 3 до 20 Мб памяти. Статический контент требуют всего лишь 1Мб памяти. Процесс, управляющий динамическим контентом, при следующем запросе может предоставлять статический контент.

Что приводит к расходам памяти и замедлению работы сервера. Поэтому рекомендуется разделить серверы на управляющие статическим контентом и динамическим контентом.

Например, можно использовать небольшой Apache в качестве frontend-сервера, предоставляющего статический контент. Запросы на динамический контент будут перенаправляться к другому серверу Apache со всеми необходимыми модулями.

Для подобного перенаправления запросов используются модули mod_proxy и mod_rewrite. Клиент не заметит разницы, и будет считать, что все запросы выполняются одним сервером.

Используя два сервера, можно ускорить работу Apache, выдавая статический контент быстрее и выделяя большее количество памяти для обработки динамического контента.

Тонкая настройка MySQL и PHP

Не менее важно оптимизировать сервер баз данных, чтобы избежать задержек в его работе. Также необходимо улучшить производительность PHP-страниц, используя механизм кэширования, такой как Zend OPcache.

Сервер MySQL оптимизируется путем настройки фрагментации таблиц, максимального количества подключений, размеров буфера, кэша запросов, пула и т.п.

Заключение

Настройка производительности Apache – нелёгкое дело. Поэтому важно иметь чёткое понимание технических требований веб-сервера и принципа его работы.

Источник

Сильно тормозит Apache

Зарегистрирован: 07.07.2005
Пользователь #: 27,346
Сообщения: 183

atop.jpg
Описание:
вывод atop в момент загрузки
Размер файла: 573.7 KB
Просмотрено: 6929 раз(а)
top.jpg
Описание:
вывод top в момент загрузки
Размер файла: 361.07 KB
Просмотрено: 6929 раз(а)
djaarf
Активный участник

Зарегистрирован: 07.07.2005
Пользователь #: 27,346
Сообщения: 183

Зарегистрирован: 07.07.2005
Пользователь #: 27,346
Сообщения: 183

Зарегистрирован: 07.07.2005
Пользователь #: 27,346
Сообщения: 183

Зарегистрирован: 07.07.2005
Пользователь #: 27,346
Сообщения: 183

Зарегистрирован: 07.07.2005
Пользователь #: 27,346
Сообщения: 183

Источник

Apache 2.4 на Windows реагирует медленно, зависает при обслуживании некоторых динамических страниц

(Я знаю ответ на этот вопрос. Разместив это просто поделиться ответом с сообществом)

мой локальный (Windows 7) экземпляр Apache 2.4 experiences задержки или зависания при обслуживании некоторых URL-адресов, в зависимости от того, какой браузер я использую для доступа к этим URL-адресам.

С Firefox / Chrome, Apache медленно реагируют по определенным url. Медлительность происходит около 20% времени на любом данном URL. Когда он делает происходит, есть 5-секундная задержка, в течение которой Firefox отображает «ожидание». » статус.

С Internet Explorer 9,Apache просто висит и перестает обслуживать любые запросы (с любым браузером), пока он не будет перезапущен.

Я перепробовал много изменений в httpd.conf (например, отключение поддержки активности, EnableMMAP, HostnameLookups), но ничего не работает.

2 ответов

ответил Thomasz

решение-добавить следующий код httpd.conf :

на Windows, это имеет эффект отключения AcceptEx () API (часть WinSock), который предлагает некоторые улучшения производительности, но, вероятно, конфликтует с Comodo Firewall.

установка Comodo Firewall в «отключенном» режиме не помогает, потому что запросы, вероятно, все еще проходят через сетевой код Comodo. Я думаю, что Comodo будет должны быть удалены полностью, чтобы устранить проблему (хотя я не пробовал).

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

ссылки

значения по умолчанию в Windows:

AcceptFilter http data

AcceptFilter https data

окна mpm_winnt интерпретирует AcceptFilter для переключения AcceptEx () API, и не поддерживает буферизацию протокола http. Там два значения, которые используют Windows AcceptEx() API и будут перезапуск сетевых сокетов между соединениями. данные ждут, пока данные переданный как документировано выше, и буфер начальных данных и все адреса конечных точек сети извлекаются из одного AcceptEx() вызова. connect будет использовать AcceptEx() API, также получение конечной точки сети адреса, но как никто подключение опция не ждет первоначальной передачи данных.

В Windows, никто не использует accept (), а не AcceptEx () и не будет перезапуск сокетов между соединениями. Это полезно для сети адаптеры со сломанной поддержкой драйверов, а также некоторые виртуальные сети провайдеры, такие как VPN драйверов, или спам, вирус или шпионское ПО, фильтры.

Источник

Помогите найти причину проблем с apache

Приветствую. Есть у меня проект, доставшийся мне в «наследство» — точнее я сам вызвался и полез в кузов)
У проекта довольно мощный выделенный сервер: Xeon E3-1240 3.7GHz / 16Gb RAM / 2x2000Gb SATA / IPMI with IP-KVM
Проект — это php+mysql.
Но постоянно возникают проблемы с apache — он падает или тормозит. На сервере установлен Monit.
Пользователей не сказать чтобы много — около сотни более-менее активных. Он-лайн на пике около 20 человек (но некоторые возможно в несколько окон сидят) и от каждого пользователя постоянные аякс-запросы (знаю что нужен скорее comet-сервер по-хорошему, но пока руки не дошли).

И периодически падает apache, яндекс метрика сообщает о недоступности сайта. Обычно длится не более нескольких секунд — потом apache восстанавливается и работает нормально, хоть и медленно, а потом может опять прилечь. Хотя сам apache при этом не то чтобы падает — он просто тормозит. Перезапуск apache не помогает — через минуту ситуация начинает повторяться.

Monit присылает 2 типа уведомления в таких случаях:

Connection failed Service apache
Date: Tue, 12 Nov 2013 11:00:52
Action: alert
Host: MYHOST
Description: failed protocol test [HTTP] at INET[MYPROJECT:80] via TCP — HTTP: Error receiving data — Resource temporarily unavailable

Your faithful employee,
Monit

Resource limit matched Service apache
Date: Tue, 12 Nov 2013 01:56:42
Action: alert
Host: MYHOST
Description: loadavg(5min) of 44.5 matches resource limit [loadavg(5min)>20.0]

Your faithful employee,
Monit

Второй тип сообщения бывает крайне редко — в пиковые часы присутствия пользователей. Да и более менее понятно что произошло

А первое сообщение — для меня скорее загадка. Особенно учитывая что при этом не было каких-то особых аномальных показателей загрузки CPU и памяти со стороны apache, скорее наоборот потребление ресурсов апачем проседало к нулевым значениям ближе.

А error.log ничего в такие промежутки не вижу. В 11.02 примерно были проблемы и вот что в логе по этому поводу:

[Mon Nov 11 10:34:06 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
[Mon Nov 11 10:34:06 2013] [warn] RSA server certificate CommonName (CN) `MYHOST’ does NOT match server name!?
[Mon Nov 11 10:34:06 2013] [notice] Apache/2.2.22 (Debian) PHP/5.4.4-14+deb7u5 mod_ssl/2.2.22 OpenSSL/1.0.1e configured — resuming normal operations
[Mon Nov 11 11:25:26 2013] [notice] caught SIGTERM, shutting down
[Mon Nov 11 11:25:26 2013] [warn] RSA server certificate CommonName (CN) `MYHOST’ does NOT match server name!?
[Mon Nov 11 11:25:26 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)

Вот настройки monit по мониторингу аpache:

Подскажите что у меня настроено не так? Дайте совет, какие значения конфигурации менять и что анализировать?
Прошу, в случае возможности, писать как для блондинки. У меня навыков администрирования, как и взаимодействия с unix фактически не было до начала работы с этим проектом.

Источник

Поделиться с друзьями
Советы экспертов и специалистов
Adblock
detector