Комплексный расчет LEMP стека (Nginx + PHP-FPM + MariaDB) на 4 GB RAM
Идеальный баланс ресурсов между MariaDB (2 GB), PHP-FPM (1.4 GB) и Nginx/ОС (600 MB) для серверов 4 GB RAM. Исключение OOM и максимальный аптайм.
Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
/etc/systemd/system/lemp-limits.conf
# Сводный план распределения памяти VDS 4096 MB:
# ----------------------------------------------------
# 1. ОС Linux Kernel & Nginx: 600 MB
# 2. MariaDB 10.11 InnoDB Buffer Pool: 2048 MB
# 3. Redis Cache: 256 MB
# 4. PHP-FPM Pool (30 воркеров x 40MB): 1200 MB
# Итого: ~4096 MB (100% утилизация без SWAP)
# 1) В /etc/mysql/mariadb.conf.d/50-server.cnf:
innodb_buffer_pool_size = 2048M
innodb_log_file_size = 384M
max_connections = 120
# 2) В /etc/php/8.2/fpm/pool.d/www.conf:
pm = dynamic
pm.max_children = 30
pm.start_servers = 6
pm.min_spare_servers = 4
pm.max_spare_servers = 10
pm.max_requests = 1000
Разбор ключевых директив конфигурации
Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).
| Директива / Блок | Рекомендуемое значение | Зачем нужно и системное влияние (CPU / RAM / I-O) |
|---|---|---|
Баланс памяти 50/30/20 |
50% DB, 30% PHP, 20% OS | Золотой стандарт сайзинга веб-серверов под CMS: база данных в RAM предотвращает узкое горлышко диска. |
pm.max_requests |
500 - 1000 | Периодически перезапускает PHP-воркеры после обработки N запросов, предотвращая утечки оперативной памяти (Memory Leak). |
request_terminate_timeout |
180s | Принудительно убивает зависшие PHP-скрипты, защищая пул от полного исчерпания свободных процессов при тяжелых SQL-запросах. |
innodb_flush_log_at_trx_commit |
2 | Сбрасывает транзакции MySQL на диск раз в секунду вместо каждого коммита, увеличивая скорость записи в БД в 3-5 раз. |
Рекомендуемые системные требования VDS под этот стек
Расчет минимальной и оптимальной конфигурации виртуального сервера для стабильной работы без сбоев.
Оптимальный сайзинг: 2 vCPU, 4 GB RAM, 50 GB NVMe
Расчетная нагрузка: до 8 000 хостов/сутки
2 CPU / 4 GB NVMe
Timeweb Cloud
Рекомендуемые ресурсы
2 vCPU /
4 GB RAM /
50 GB NVMe
2 vCPU / 4 GB RAM
Selectel
Рекомендуемые ресурсы
2 vCPU /
4 GB RAM /
50 GB NVMe
Turbo 4 GB
Beget
Рекомендуемые ресурсы
2 vCPU /
4 GB RAM /
50 GB NVMe
Онлайн-утилиты SysKit для проверки этого сервера
Протестируйте корректность применения конфигурации прямо сейчас в один клик.
Частые ошибки при настройке и их решение (FAQ)
Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.
Нужен ли Swap-файл при наличии 4 GB RAM?
Да, рекомендуется создать zram или swap-файл на 2 GB (`vm.swappiness = 10`) как страховку от аварийных скачков памяти.
Как понять, что пулу PHP-FPM не хватает памяти?
В логе `/var/log/php-fpm.log` появляется предупреждение `server reached pm.max_children setting, consider raising pm.max_children`. Также команда `dmesg | grep oom` покажет OOM-киллер.
Нужно ли перезагружать службу после изменения параметров?
Да, для применения настроек выполните: `systemctl restart php8.2-fpm` (или вашу версию PHP) и `systemctl restart mysql`.
Рекомендуемые смежные конфигурации
Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.