Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемlinux.ria.ua
1 Тюнинг NGINX Олег Черний Киев, Украина марта 2009 CODECAMP
2 Компилируем, исключаем все лишнее 2 Тюнинг NGINX / Компиляция nginx
3 Компиляция nginx Тюнинг NGINX / Компиляция nginx 3 Модули, которые, возможно, вам не пригодятся: mail, mail_ssl_module, http_perl_module, http_flv_module, http_dav_module Модули, которые желательно включить при компиляции: http_gzip_static_module, http_stub_status_module
4 4./configure \ --prefix=%nginx_datadir \ --conf-path=%nginx_etc/nginx.conf \ --sbin-path=%{_sbindir}/%{name} \ --error-log-path=%nginx_log/nginx.error.log \ --http-log-path=%nginx_log/nginx.log \ --http-client-body-temp-path=%nginx_spool/tmp/client \ --http-proxy-temp-path=%nginx_spool/tmp/proxy \ --http-fastcgi-temp-path=%nginx_spool/tmp/fastcgi \ --pid-path=%_var/run/nginx.pid \ --user=%nginx_user \ --group=%nginx_group \ --with-cc-opt="-I %_includedir/pcre/" \ --with-http_ssl_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-http_perl_module Вот как выглядит часть моего srpm, которая отвечает за конфигурацию nginx (%nginx_datadir,... переменные spec-файла): Тюнинг NGINX / Компиляция nginx
5 Конфиг nginx - просто и понятно 5 Тюнинг NGINX / Конфиг nginx - просто и понятно
6 Пример конфигурации Тюнинг NGINX / Компиляция nginx 6 Nginx писал админ для админов. Этот факт положительно отразился на синтаксисе конфигов, а также на простоте настройки. user nginx; # Число рабочих процессов, рекомендуется ставить по количеству ядер worker_processes 8; # Уменьшает число системных вызовов gettimeofday() timer_resolution 100ms; # Изменяет ограничение на число используемых файлов RLIMIT_NOFILE для рабочего процесса. worker_rlimit_nofile 8192; # Задаем приоритет рабочих процессов от -20 до 20 (отрицательное - более высокий приоритет). worker_priority -5; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 2048; }
7 7 Тюнинг NGINX / Конфиг nginx - просто и понятно 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; # Включить sendfile(). Использование sendfile() # экономит системные вызовы, уменьшает число копирований данных, # позволяет использовать меньше физической памяти. sendfile on; keepalive_timeout 65; gzip on; gzip_min_length 1100; gzip_buffers 64 8k; gzip_comp_level 3; gzip_http_version 1.1; gzip_proxied any; gzip_types text/plain application/xml application/x-javascript text/css; # Load config files from the /etc/nginx/conf.vs directory include /etc/nginx/conf.vs/*.conf; } Основная секция:
8 8 Тюнинг NGINX / Конфиг nginx - просто и понятно server { listen 80; server_name _; location / { gzip_static on; root /var/nginx/html; index index.html index.htm; } error_page 404 /404.html; location = /404.html { root /var/nginx/html; } error_page /50x.html; location = /50x.html { root /var/nginx/html; } Пример простейшей конфигурации виртуального сервера: Синтаксис понятен в большинстве случаев даже без документации.
9 Условная классификация статического контента 9 Тюнинг NGINX / Типы статического контента
10 Типы статического контента Тюнинг NGINX / Типы статического контента html, css, js, xml, rss, txt. Хорошо поддается сжатию Требует мало места для хранения "Легкий" контент Приминение nginx в любом случае даст заметный прирост производительности. 10
11 Типы статического контента Тюнинг NGINX / Типы статического контента 11 фото, видео, аудио-файлы Узким местом выступает, в первую очередь, дисковая система, размер оперативной памяти, пропускная способность канала. Задача раздачи такого типа контента делится на две: хранение контента и, собственно, раздача контента. Тяжелый" контент Все будет упираться в скорость работы дискового накопителя/RAID-массива
12 Проблемы быстродействия 12 Тюнинг NGINX / Проблемы быстодействия
13 Что делать, когда сайт начинает тормозить? Тюнинг NGINX / Проблемы быстродействия 13 Не паниковать Попробуйте увеличить количество worker_processes Поможет установка worker_priority в -5 и меньше (до -20) Временно отключить логи access_log off Анализ узких мест системы, например, с помощью top, iostat, df -h, iptraf Добавьте оперативной памяти или усовершенствуйте дисковую систему
14 Приемы оптимизации 14 Тюнинг NGINX / Приемы оптимизации
15 "Легкий" контент Тюнинг NGINX / Приемы оптимизации 15 Создаем виртуальный диск (tmpfs) и там размещаем легкую статику. В /etc/fstab добавляем none /var/www/img_virtual tmpfs size=1g,mode= Сжимаем контент gzip-ом. Запускаем в нашей виртуальной папке: for i in `find./* -type f -name '*.js'`; do echo $i; gzip -c -9 $i > $i.gz; done; for i in `find./* -type f -name '*.css'`; do echo $i; gzip -c -9 $i > $i.gz; done; в конфиг добавляем строчку gzip_static on, также можно включить online упаковку для динамических файлов gzip on Устанавливаем заголовки для проксирования контента директивой expires 1y Задаем кеширование дескрипторов файлов директивой open_file_cache $i.gz; done; for i in `find./* -type f -name '*.css'`; do echo $i; gzip -c -9 $i > $i.gz; done; в конфиг добавляем строчку gzip_static on, также можно включить online упаковку для динамических файлов gzip on Устанавливаем заголовки для проксирования контента директивой expires 1y Задаем кеширование дескрипторов файлов директивой open_file_cache">
16 "Тяжелый" контент Тюнинг NGINX / Приемы оптимизации 16 Настройка системы таким образом, чтоб свести к минимуму использование swap. Иногда приходится отключать sendfile (sendfile off) Если позволяет оперативная память, создайте виртуальный диск, на который поместите самые "запрашиваемые" файлы. Теперь мы можем применить директиву try_files (если файл не будет найден, на виртуальном диске будет обращение к backend): location / { root /var/www/; try_files } { proxy_pass proxy_set_header Host $host; }
17 "Тяжелый" контент Тюнинг NGINX / Приемы оптимизации 17 Если стороннюю программу по формированию кеша писать нет возможности, используйте директиву proxy_store: { proxy_pass proxy_set_header Host $host; proxy_store on; proxy_store_access user:rw group:rw all:r; proxy_temp_path /var/www/img_virtual/hot/; root /var/www/img_virtual/hot/; } cо временем кеш надо чистить, например так: cd /var/www/img_virtual/hot/ find./ -type f -amin +60 -delete
18 "Тяжелый" контент Тюнинг NGINX / Приемы оптимизации 18 Если storage большой, занимает терабайты -- оперативой вопрос не решить, можно на фронтенд-е собрать RAID. Берем побольше винтов SAS, полноценный RAID- котроллер (fakeraid,hostraid это головная боль!). Монтируем туда swap, spool и кеш. Для нечасто меняющегося контента и нечастой перезаписи кеша можно применять SSD-винчестеры. Это работает быстро, у таких винчестеров нет такой характеристики как seek-to-seek, малый расход энергии (например для Intel X25-M 0,15Вт), хорошая скорость отдачи (до 250 MB/s).
19 "Тяжелый" контент Тюнинг NGINX / Приемы оптимизации 19 Кеширование проксированных запросов. Модуль появился в nginx "Сходить" на диск во многих случаях значительно дешевле, чем обращение в сеть. Главная задача такого кеширования - свести к необходимому минимуму сетевые опрерации и использовать "интелектуальное управление" дисковым кешем. Пример использования: proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; мена файлов в кэше будут такого вида: /data/nginx/cache/c/29/b7f54b2df d382f4809d65029c
20 Спасибо за внимание ! Тюнинг NGINX / Спасибо за внимание ! 20 Время для вопросов Полезные ссылки:
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.