Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Итак, имеем самый обычный VDS с 39 Гбайт оперативки, 12 ядрами и «Убунтой» на борту. PHP 7.2, PHP-FPM, MySQL 5.7. Версии ПО, может, немного и древние, но установлены неспроста: такая конфигурация обусловлена требованиями CMS Magento 2.3.4. Более новая версия PHP повлекла бы за собой обновление версии CMS, а этого по ряду причин делать было нельзя.
Как обычно, все прекрасно работало до одного момента: пока не начались традиционные новогодние распродажи и маркетологи не притащили на сайт кучу трафика. Вот тут и начались проблемы. Наиболее характерная из них — процесс php-fpm
в паре с MySQL выжирал всю оперативку. Перезапуск сервисов с добавлением 20 Гбайт свопа проблему решил ненадолго. Дальше пошел процесс настройки nginx и php-fpm
, прежде всего — последнего, поскольку именно его параметры влияют на эксплуатационные особенности CMS. Я не буду рассматривать установку и настройку nginx с самого начала — скорее всего, у тебя уже все настроено. Даже если это не так, в сети можно найти множество статей и руководств на эту тему. Сконцентрируемся лучше на параметрах, непосредственно влияющих на производительность сервера.
Прежде чем приступить к дальнейшему чтению статьи, нужно понимать, что и где и редактировать. Конфигурация nginx хранится в каталоге /
. Основной конфиг — nginx.
, но времена одного большого файла уже давно прошли, и в зависимости от содержимого nginx.
конфигурация веб‑сервера может быть разбросана по всей файловой системе.
Как правило, конфиги сайтов хранятся в каталоге /
. Для каждого сайта принято создавать отдельный конфиг. Далее нужно проанализировать содержимое файлов конфигурации на предмет директивы Include
. Если первоначальную настройку выполнял не ты, поищи во всех файлах каталога nginx
файлы с директивой Include
— так ты поймешь, что и откуда берется. Например, в моем случае кто‑то до меня добавил директиву include /
, чтобы некоторые параметры можно было вынести в каталог документов веб‑сервера и редактировать их без редактирования основной конфигурации сервера. Что‑то вроде .
в «Апаче», вот только после изменения этого файла все равно придется делать reload сервису.
Далее перейдем к параметрам PHP. У него есть несколько конфигураций. Прежде всего введи команду php
, чтобы выяснить номер версии. Так вот, конфигурация твоей версии PHP хранится в каталоге /
. В этом каталоге ты найдешь четыре подкаталога. Да, это три разные конфигурации и список модулей:
php <имя_скрипта>
;php-fpm
и самого PHP, работающего в связке nginx, PHP-FPM и PHP;extension
внутри этого файла, ты можешь выключить расширение.Чтобы узнать, какой именно файл конфигурации PHP используется, помести в корень сервера PHP-скрипт, вызывающий php_info(
. Эта функция и покажет (кроме всего прочего) локацию и имя файла конфигурации.
Если не считать статического кеша, то самое крутое, что ты можешь сделать в настройках nginx, — это включить HTTP 2.0. Некоторые админы почему‑то забывают об этом. В моем случае так и было: я уже получил преднастроенный подрядчиком сервер, в котором почему‑то забыли включить версию 2.0 протокола HTTP. Думаю, не нужно говорить о том, как медленно работала Magento.
Больше дела, меньше слов: открой конфигурацию сайта в каталоге /
. Найди блок server
и добавь (если этого еще не сделано) http2
в директиву listen
. Должно получиться так:
server {
listen 443 ssl http2;
ssl on;
...
}
Номер порта и SSL установи по своему усмотрению, но поскольку пример реальный, то SSL уже есть на твоем сайте, так как это стандарт по умолчанию.
OPcache используется для кеширования скомпилированного байт‑кода PHP-скриптов в оперативной памяти. С одной стороны, при использовании OPcache повысится производительность и снизится нагрузка на сервер — PHP уже не будет создавать байт‑код при выполнении скрипта, а станет использовать откомпилированную версию из кеша. С другой стороны, в процессе использования сложных CMS вроде Magento могут возникнуть проблемы. При установке расширения этого движка происходит так называемая перекомпиляция Magento. Лучше эту процедуру производить при выключенном кеше, а затем снова его включить.
Для этого редактируется конфиг, перезагружается сервис php-fpm
, производятся необходимые действия, а потом снова все повторяется — редактирование конфига и перезапуск сервиса. Также возникнут проблемы при использовании собственной системы кеширования Magento. Здесь поможет использование Varnish. В общем, резюмировать можно следующее: если ты решишь включить OPcache, то в случае с Magento тебе придется отказаться от использования собственной системы кеширования и разбираться с настройками Varnish. Установка расширений доставляет меньше неудобств, поскольку выполняется не так часто.
Для включения OPcache нужно открыть конфигурацию PHP, в нашем случае это /
, и добавить в него всего одну строчку:
opcache.enable = 1
Этим ты активируешь opcache
с настройками по умолчанию. Как минимум можно задать параметр opcache.
, который регулирует размер памяти (в мегабайтах), выделяемый для OPcache. Значение по умолчанию — 128, минимально допустимое значение — 8:
opcache.memory_consumption = 256
С остальными настройками OPcache можно ознакомиться здесь. На своем сервере я отключил OPcache по двум причинам. Во‑первых, сайт активно допиливается, из‑за чего очень часто приходится добавлять в него новые функции или изменять уже имеющиеся, что при включенном OPcache не совсем удобно. Во‑вторых, пока нет никакого желания устанавливать Varnish, хотя в скором времени это придется сделать. На данный момент используется штатная система кеширования.
Боты во время своего обхода сайта расходуют драгоценные ресурсы. При неблагоприятном стечении обстоятельств (например, случайные или намеренные визиты нескольких ботов сразу) сайт может упасть, не выдержав нагрузки. Каждый GET-запрос страницы тянет за собой использование ресурсов сервера: загрузка элементов страницы (картинки, CSS-таблицы и прочее), обращение к базе данных и, возможно, к сторонним ресурсам. Бот — это не пользователь, который откроет одну страницу и изучает ее контент, бот открывает страницу за страницей, что может вызвать негативные последствия.
|
|