Различия
Показаны различия между двумя версиями страницы.
каталог_статей:веб-окружение:оптимизация_web-сервера [2015/08/27 12:16] |
каталог_статей:веб-окружение:оптимизация_web-сервера [2022/04/01 15:08] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Оптимизация настроек web-сервера ====== | ||
+ | **Применимость: | ||
+ | **Слова для поиска: | ||
+ | |||
+ | ---- | ||
+ | ===== Задача: | ||
+ | Увеличение производительности сайта. | ||
+ | ===== Решение: | ||
+ | Для увеличения производительности и скорости работы веб-приложения можно произвести оптимизацию веб-сервера, | ||
+ | Параметры, | ||
+ | Перед началом оптимизации можно проверить скорость загрузки приложения на данном ресурсе http:// | ||
+ | |||
+ | ===== Оптимизация настроек nginx ===== | ||
+ | Для начала необходимо сохранить старый конфигурационный файл: | ||
+ | < | ||
+ | |||
+ | Теперь следует открыть файл конфигурации nginx текстовым редактором: | ||
+ | < | ||
+ | |||
+ | Далее приступим к редактированию основных параметров: | ||
+ | |||
+ | <code | Максимальное количество одновременных соединений, | ||
+ | |||
+ | <code | Включение логирования только критических ошибок:> | ||
+ | |||
+ | <code | Далее необходимо отредактировать блок настроек events:> | ||
+ | # максимальное число соединений одного рабочего процесса | ||
+ | worker_connections 2048; | ||
+ | # приём максимально возможного количества соединений | ||
+ | multi_accept on; | ||
+ | # максимальное значение файловых дескрипторов для nginx, должно быть равным удвоенному | ||
+ | # значению максимального количества клиентов (worker_processes * worker_connections) | ||
+ | worker_rlimit_nofile 17000; | ||
+ | } </ | ||
+ | |||
+ | <code | Произведем настройки кэширования:> | ||
+ | # Максимальное количество файлов в кэше | ||
+ | open_file_cache max=200000 inactive=20s; | ||
+ | # Через какое время будет удалён кэш | ||
+ | open_file_cache_valid 30s; | ||
+ | # Кэширование информации использованной хотя бы 2 раза | ||
+ | open_file_cache_min_uses 2; | ||
+ | # Кэширование информации об отсутствующих файлах | ||
+ | open_file_cache_errors on;</ | ||
+ | |||
+ | <code | Позаботимся о базовой безопасности:># | ||
+ | server_tokens off; | ||
+ | # защита от Poodle | ||
+ | ssl_protocols TLSv1 TLSv1.1 TLSv1.2;</ | ||
+ | |||
+ | |||
+ | <code | Настроим отправку данных и заголовков># | ||
+ | sendfile on; | ||
+ | # Отправка заголовков начала и конца в одном пакете | ||
+ | tcp_nodelay on; | ||
+ | tcp_nopush on;</ | ||
+ | |||
+ | |||
+ | <code | Включим сжатие контента для уменьшения трафика> | ||
+ | # проверка сжатия: | ||
+ | gzip on; | ||
+ | gzip_disable " | ||
+ | gzip_types text/plain text/css application/ | ||
+ | |||
+ | |||
+ | <code | Настроим параметры соединений и запросов клиента># | ||
+ | keepalive_timeout 30; | ||
+ | # максимальное количествоо keepalive запросов от одного клиента | ||
+ | keepalive_requests 100; | ||
+ | # если нет ответа от клиента - сброс соединения | ||
+ | reset_timedout_connection on; | ||
+ | # ждать тело запроса клиента, | ||
+ | client_body_timeout 10; | ||
+ | # таймаут при чтении заголовка запроса клиента | ||
+ | client_header_timeout 10; | ||
+ | # если клиент прекратит чтение ответа - сброс соединения | ||
+ | send_timeout 10; | ||
+ | # не принимать запрос размером более 2 Мб | ||
+ | client_max_body_size 2048k; | ||
+ | # максимальный размер буфера для хранения тела запроса клиента | ||
+ | client_body_buffer_size 1k; | ||
+ | # максимальный размер буфера для хранения заголовков запроса клиента | ||
+ | client_header_buffer_size 1k; | ||
+ | # число и размер буферов для чтения большого заголовка запроса клиента | ||
+ | large_client_header_buffers 4 8k; | ||
+ | }</ | ||
+ | |||
+ | ===== Оптимизация настроек Apache ===== | ||
+ | Для начала сохраним старый конфигурационный файл: | ||
+ | < | ||
+ | |||
+ | ===== Отключение модулей Apache ===== | ||
+ | Отключайте модули, | ||
+ | Обычно достаточно следующих модулей: | ||
+ | < | ||
+ | * mod_alias, | ||
+ | * mod_authz_host, | ||
+ | * mod_deflate, | ||
+ | * mod_dir, | ||
+ | * mod_expires, | ||
+ | * mod_headers, | ||
+ | * mod_mime, | ||
+ | * mod_rewrite, | ||
+ | * mod_log_config, | ||
+ | * mod_autoindex, | ||
+ | * mod_negotiation, | ||
+ | * mod_setenvif. | ||
+ | </ | ||
+ | |||
+ | ===== MPM ===== | ||
+ | MPM позволяет выбрать метод обработки параллельных запросов. Оптимальный вариант — Worker — поточный MPM. В нем каждый запрос обслуживается в отдельном потоке одного из дочерних процессов. Потоки — более легкие для ОС объекты, | ||
+ | Для включения Worker MPM, нужно открыть файл: | ||
+ | < | ||
+ | убрать комментарий со строки | ||
+ | < | ||
+ | и перезапустить Apache | ||
+ | < | ||
+ | |||
+ | ===== Директива MaxClients ===== | ||
+ | Директива MaxClients устанавливает максимальное количество параллельных запросов, | ||
+ | MaxClients 128 | ||
+ | Если сервер уже обслуживает MaxClients запросов, | ||
+ | |||
+ | ===== Директива MaxRequestsPerChild ===== | ||
+ | Директива MaxRequestsPerChild устанавливает сколько запросов может обработать один дочерний процесс/ | ||
+ | < | ||
+ | После 1024 обработанных запросов процесс будет перезапущен. | ||
+ | |||
+ | ===== Директива KeepAlive ===== | ||
+ | KeepAlive запросы позволяют устанавливать постоянные соединения между клиентом и сервером. Это экономит ресурсы на отсутствии повторной установки соединений. Обязательно включайте эту опцию. | ||
+ | < | ||
+ | # keepalivetimeout 30</ | ||
+ | Включаем KeepAlive и устанавливаем время ожидания перед закрытием соединения в 30 секунд. | ||
+ | Бывают случаи, | ||
+ | |||
+ | =====Включение сжатия===== | ||
+ | Все современные браузеры поддерживают сжатие. Включение gzip существенно уменьшит размер трафика. | ||
+ | < | ||
+ | * AddOutputFilterByType DEFLATE text/ | ||
+ | * AddOutputFilterByType DEFLATE text/ | ||
+ | * AddOutputFilterByType DEFLATE text/ | ||
+ | * AddOutputFilterByType DEFLATE application/ | ||
+ | * AddOutputFilterByType DEFLATE application/ | ||
+ | * AddOutputFilterByType DEFLATE application/ | ||
+ | * AddOutputFilterByType DEFLATE application/ | ||
+ | * AddOutputFilterByType DEFLATE application/ | ||
+ | |||
+ | ===== Завершение настройки Apache ===== | ||
+ | После применения всех параметров необходимо перезапустить веб-сервер Apache: | ||
+ | < | ||
+ | |||
+ | |||
+ | ===== Смотрите также: ===== | ||
+ | |||
+ | |||
+ | ---- | ||
+ | Актуальность: | ||
+ | |||
+ | {{tag> nginx apache web}} | ||