12 продвинутых лайфхаков для ускорения любого сайта на VPS/сервере

 

1) Nginx microcache для гостей с умным ключом

 

Мини-кэш на 1–3 секунды гасит шипы и экономит CPU, при этом авторизованные обходят кэш.

# /etc/nginx/conf.d/cache.conf
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cms_cache:128m max_size=10g inactive=10m use_temp_path=off;

map $http_cookie $cache_bypass {
    default 0;
    ~*(wordpress_logged_in|woocommerce_items_in_cart|PHPSESSID|bitrix_sessid|OCSESSID|SESS|mage-cache-sessid) 1;
}
map $request_method $no_cache_method {
    default 0;
    ~*POST 1;
}
map $http_cache_control $no_cache_cc {
    default 0;
    ~*no-cache 1;
}

server {
    # ... ваш сервер
    location / {
        proxy_cache cms_cache;
        proxy_cache_valid 200 302 3s;
        proxy_cache_valid 404 1s;
        proxy_no_cache $cache_bypass $no_cache_method $no_cache_cc;
        proxy_cache_bypass $cache_bypass $no_cache_method $no_cache_cc;
        proxy_cache_key "$scheme$request_method$host$request_uri";
        add_header X-Microcache $upstream_cache_status always;
        proxy_pass http://127.0.0.1:9000;
    }
}

 

2) Перенос сессий и кэша в Redis, чтобы убрать файловый I/O

 

# /etc/php/8.2/fpm/php.ini
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?database=2"
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=100000

 

Для WordPress ставьте объектный кэш (Redis Object Cache). Для Magento/Drupal используйте встроенные модули Redis.

 

3) Реальная формула PHP-FPM вместо «на глаз»

 

  • Узнайте среднюю память на воркер:

ps --no-headers -o rss -C php-fpm8.2 | awk '{sum+=$1} END {print int(sum/NR/1024)"M"}'

  • Считаем pm.max_children = RAM_под_PHP / средний_воркер.

  • Включите отдельные пулы под фронт и админку, чтобы админка не съедала фронт.

 

4) Снижение TIME_WAIT-бури без опасных твиков

 

# /etc/sysctl.d/99-net-tune.conf
net.core.somaxconn=8192
net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.ip_local_port_range=10240 65535
net.ipv4.tcp_fin_timeout=30
net.netfilter.nf_conntrack_max=262144

 

Никаких устаревших tcp_tw_recycle. Этого достаточно для пиков.

 

5) NVMe «ездит» только с правильным I/O

 

Вынесите БД на отдельный том NVMe, включите noatime в fstab.

Логи приложения уводите в journald с ротацией, чтобы не дробить IOPS.

 

6) Brotli и HTTP/2 без нагрузки на PHP

 

# если собран модуль brotli
brotli on;
brotli_comp_level 5;
brotli_types text/plain text/css application/javascript application/json application/xml image/svg+xml;
gzip on;
gzip_types text/plain text/css application/javascript application/json application/xml image/svg+xml;
sendfile on;
tcp_nopush on;

 

  • Статику и минификацию выполняет Nginx/CDN, не PHP.

 

7) Пре-рендер и «тёплый» кэш через curl

 

Подогрейте самые посещаемые URL после деплоя:

#!/usr/bin/env bash
URLS="/ /catalog/ /blog/ /contacts/"
for u in $URLS; do
  curl -s -H "Cache-Control: no-cache" "https://example.org$u" > /dev/null
done

 

  • Положите в cron раз в 5–10 минут. Меняет профиль нагрузки радикальнее, чем лишнее ядро.

 

8) Антишторм по поиску и фильтрам каталога

 

  • Включите limit_req для «тяжёлых» эндпоинтов:

 

limit_req_zone $binary_remote_addr zone=search_zone:10m rate=10r/s;
location /search {
  limit_req zone=search_zone burst=20 nodelay;
  proxy_pass http://127.0.0.1:9000;
}

 

9) Объективный контроль здоровья без сложных APM

 

Включите stub_status и status у PHP-FPM, снимайте метрики простыми командами:

 

  • curl -s localhost/nginx_status

  • curl -s localhost/status?full

  • iostat -x 1 10, vmstat 1 10, ss -s

 

Смотрите на p95 latency, I/O wait и количество ожидающих воркеров — это честнее процента CPU.

 

10) Гео-точность и rDNS для Ads/маркетплейсов

 

Обновляйте MaxMind/IP2Location, держите нейтральные PTR и FCrDNS.

Это снижает странные проверки и лишние капчи в соцсетях/маркетплейсах.

 

11) Экономный MySQL/MariaDB, который не «жжёт» CPU

 

# /etc/mysql/conf.d/90-innodb.cnf
[mysqld]
innodb_buffer_pool_size=8G
innodb_log_file_size=512M
innodb_flush_log_at_trx_commit=2
innodb_flush_method=O_DIRECT
max_connections=200
slow_query_log=1
long_query_time=0.3

 

  • Для магазинов добавьте внешнюю выдачу поиска (Meilisearch/OpenSearch) — это снимает «LIKE %…%» с базы.

 

12) Быстрое изображение без плагинов

 

  • Готовьте WebP/AVIF офлайн и отдавайте по заголовку Accept:

 

map $http_accept $webp_suffix { default ""; "~*webp" ".webp"; }
location ~* \.(png|jpe?g)$ {
    try_files $uri$webp_suffix $uri =404;
}

 

Чек-лист топ 5 советов

  1. Включите microcache Nginx с ключом, игнорирующим «мусорные» куки, и вынесите сессии в Redis.
  2. Дайте базе память и быстрый диск: InnoDB buffer pool 60–70 процентов RAM БД, NVMe отдельным томом.
  3. Считайте PHP-FPM по формуле, а не «на глаз», и разделите пулы под фронт/админку.
  4. Следите за I/O wait, p95 latency и очередью воркеров, а не только за процентом CPU.
  5. Уберите тяжёлые фильтры и поиск под лимиты RPS, а HOT-страницы прогревайте скриптом.

Как оформить заказ

 

Выберите тариф хостинга или VDS на сайте и укажите стек, средний онлайн, пиковый RPS и список плагинов/модулей.

Мы подберём конфигурацию по ядрам, памяти, диску и сети, настроим LEMP, Redis, MariaDB, microcache и перенесём проект без простоя.

При аренде от 6 месяцев настраиваем серверы бесплатно.

 

Акция

 

При оплате хостинга или VPS от 6 месяцев удвоим оплаченный период.

Оформите заказ сейчас и в комментарии укажите Удвоение периода 6+ месяцев. Закрепим условия и активируем в приоритетном порядке.

  • администрирование, настройка vps
  • 0 Пользователи считают это полезным
Помог ли вам данный ответ?

Связанные статьи

Корпоративная почта на базе собственного домена

Корпоративная почта на собственном домене не только придаёт профессиональный...

Установка и настройка Rclone

Rclone — это мощный инструмент командной строки для управления файлами на облачных хранилищах....

Apache vs Nginx: В чем разница, как установить и что выбрать?

  Когда выбираете веб-сервер для вашего проекта, Apache и Nginx часто оказываются в центре...

HTTP Ошибки: частые причины и как исправить

  Ошибка 403: Forbidden Описание: Сервер понимает запрос, но отказывается его выполнять. Обычно...

HTTP Ошибки: частые причины и как исправить

  Ошибка 403: Forbidden Описание: Сервер понимает запрос, но отказывается его выполнять. Обычно...

Powered by WHMCompleteSolution