01Сен 2016

0

317

Быстрая оптимизация настроек веб сервера

Как увеличить производительность сервера на ОС CentOS. Часть третья : Быстрая оптимизация настроек веб сервера.

В данной статье мы расскажем, как увеличить производительность сервера (выделенного или виртуального) на примере ОС CentOS с помощью быстрой оптимизации настроек веб сервера Nginx и Apache (httpd).

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

 

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

Оптимально работать с сервером по SSH, но если Вы испытываете сложности в работе с SSH — можете открывать файлы через менеджер файлов панели управления. (Инструкция по работе с SSH в первой части этой статьи, здесь)

Оптимизация настроек веб сервера Apache (httpd).

Конфигурационный файл веб сервера Apache находится по следующему пути :

/etc/httpd/conf/httpd.conf

В этом файле обязательно нужно настроить ограничения по количеству одновременно запущенных процессов веб сервера. Для этого найдите в нем строку MaxClients , блок должен выглядеть примерно так :

StartServers 5
MinSpareServers 5
MaxSpareServers 20
MaxClients 256
MaxRequestsPerChild 0

Maxclients необходимо высчитать, опираясь на количество оперативной памяти, установленной на Вашем сервере. Также следует учесть количество памяти, используемой одним процессом веб сервера. Узнать количество потребляемой памяти одним процессом веб сервера можете с помощью утилиты top , инструкция по использованию в нашей базе знаний здесь.

Далее отсчитайте 2\3 от общего количества оперативной памяти Вашего сервера и разделите на количество памяти, потребляемой одним процессом веб сервера. Полученное число и будет оптимальное значение MaxClients.

Например, имеем сервер с 8 Гб оперативной памяти. 2\3 от 8 будет 5.3 Гб. Один процесс веб сервера обычно потребляет около 40 Мб памяти. Считаем 5300мб \ 40мб , получаем 132. Лучше округлять в меньшую сторону. Оставляем значение 130, в итоге блок конфигурационного файла должен иметь такой вид :

StartServers 5
MinSpareServers 5
MaxSpareServers 20
MaxClients 130
MaxRequestsPerChild 0

Также включите KeepAlive, для этого найдите в конфигурационном файле строку :

KeepAlive Off

Измените Off на On :

KeepAlive On

После внесения изменений перезагрузите веб сервер командой :

/etc/init.d/httpd restart

или

service httpd restart

Оптимизация настроек веб сервера Nginx.

Конфигурационный файл веб сервера Nginx находится по следующему пути :

/etc/nginx/nginx.conf

В нем необходимо настроить количество процессов Nginx. Обычно данная настройка зависит от количества ядер процессора, которые доступны для Вашего сервера. За это отвечает директива worker_processes, в конфигурационном файле это выглядит так :

user apache;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
worker_processes 4;

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

Далее, до секции httpd { нужно добавить такой блок :

worker_rlimit_nofile 65536;
events {
use epoll;
worker_connections 65536;
}

Это увеличит ограничения для Nginx по количеству обрабатываемых файлов и улучшит его работу. Если в Вашем конфигурационном файле уже прописаны worker_rlimit_nofile или worker_connections — удалите их, оставьте только блок, как на образце.

В итоге начало конф-го файла должно выглядеть таким образом :

user apache;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
worker_processes 4;

worker_rlimit_nofile 80000;
events {
use epoll;
worker_connections 65536;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

И так далее. Если на сервере наблюдается повышенная нагрузка на диск — отключите лог доступа, за это отвечает настройка access_log, установите ее значение таким :

access_log off;

(Просмотреть нагрузку на диск можете с помощью утилиты top  )

Также Вы можете включить в Nginx Gzip сжатие. Это может ускорить загрузку Вашего сайта, а также это выгодно в seo продвижении, однако рекомендуем проверить скорость загрузки после включения Gzip, т.к. на сайты с большим количеством запросов это может повлиять негативно. Чтобы включить Gzip сжатие в Nginx, нужно добавить в секцию http { такой код :

gzip on;
gzip_comp_level 5;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
gzip_disable "msie6";

Добавьте этот код на следующей строке после http { Чтобы это выглядело так :

use epoll;
worker_connections 65536;
}

http {

gzip on;
gzip_comp_level 5;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
gzip_disable "msie6";

include /etc/nginx/mime.types;
default_type application/octet-stream;

Если ниже в коде встречаются настройки Gzip — удалите их.

После завершения настройки, выполните перезагрузку Nginx командой :

/etc/init.d/nginx restart

или

service nginx restart

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

Как увеличить производительность сервера на ОС CentOS. Часть первая : Установка Nginx.

Как увеличить производительность сервера на ОС CentOS. Часть вторая : Установка прекомпилятора PHP Zend OPcache.

Если у Вас возникнут трудности в настройке и администрировании сервера — всегда можете обратиться в нашу службу технической поддержки.