For the complete documentation index, see llms.txt. This page is also available as Markdown.

Производительность

Данная инструкция содержит рекомендации по настройке PHP 8.4 и PostgreSQL 18 для повышения производительности iEXExchanger.

Настройки предназначены для проектов, работающих на FastPanel. Готовые профили позволяют подобрать значения по мощности сервера без ручного расчёта каждого параметра.

Где находятся настройки

1

Настройки PHP

Откройте FastPanel: «Управление» — «PHP»

Выберите используемую версию:

PHP 8.4

Затем откройте настройки переменных PHP.

Параметры также можно изменить отдельно для Backend-сайта. Для этого откройте карточку:

app.ВАШ_ДОМЕН

Перейдите в раздел «Настройки PHP».

2

Настройки PostgreSQL

Откройте FastPanel: «Настройки» — «Базы данных»

Затем перейдите в «Серверы баз данных».

Выберите локальный сервер:

PostgreSQL 18 local

Нажмите «Настроить переменные».

Изменение переменных через FastPanel доступно только для локального сервера PostgreSQL. Для внешнего сервера параметры настраиваются непосредственно на сервере базы данных.


Как выбрать профиль

Профиль
Характеристики сервера

Минимальный

2 vCPU, 4 ГБ ОЗУ

Рекомендуемый

4 vCPU, 8 ГБ ОЗУ

Высокая производительность

8 vCPU, 16 ГБ ОЗУ

Максимальная производительность

от 16 vCPU, от 32 ГБ ОЗУ

Если сервер имеет промежуточный объём памяти, используйте ближайший меньший профиль.

Например, для сервера с 12 ГБ ОЗУ сначала используйте профиль на 8 ГБ. После проверки работы отдельные параметры можно увеличить.

Профиль «Минимальный»

Подходит для:

  • тестовых проектов;

  • небольших обменников;

  • проектов с низкой нагрузкой;

  • серверов без большого количества заявок и посетителей.

1

Сервер

Сервер с 4 ГБ ОЗУ рекомендуется использовать только для тестирования или небольшой нагрузки.

2

PHP 8.4

3

PostgreSQL 18

Профиль «Рекомендуемый»

Подходит большинству проектов iEXExchanger.

Профиль обеспечивает нормальный запас ресурсов для PHP, PostgreSQL и операционной системы без чрезмерного потребления памяти.

1

Сервер

2

PHP 8.4

3

PostgreSQL 18

Профиль «Высокая производительность»

Подходит для:

  • крупных обменников;

  • большого количества направлений;

  • активной работы административной панели;

  • большого количества одновременных заявок;

  • высокой нагрузки на API и базу данных.

1

Сервер

2

PHP 8.4

3

PostgreSQL 18

Профиль «Максимальная производительность»

Подходит для проектов с очень высокой нагрузкой.

Используйте этот профиль только на сервере с достаточным количеством оперативной памяти, производительным процессором и Enterprise NVMe.

1

Сервер

2

PHP 8.4

3

PostgreSQL 18


Что означают настройки PHP

memory_limit

Ограничивает максимальную память одного PHP-скрипта.

Пример:

Параметр не ускоряет PHP напрямую. Он разрешает выполнять операции, которым требуется больше памяти.

Не используйте на рабочем сервере:

PHP должен иметь ограничение памяти.

post_max_size

Ограничивает общий размер POST-запроса.

Значение должно быть больше upload_max_filesize.

Пример:

upload_max_filesize

Ограничивает размер одного загружаемого файла.

Увеличение параметра не повышает производительность. Используйте значение, которое действительно требуется для загрузки файлов через панель управления.

max_execution_time

Ограничивает время выполнения одного веб-запроса.

Пример:

Увеличение параметра не делает запрос быстрее. Оно только разрешает ему выполняться дольше.

max_input_vars

Определяет максимальное количество переменных, которые PHP может принять из формы.

Для административной панели рекомендуется значение от:

до:

в зависимости от выбранного профиля.

realpath_cache_size

Хранит результаты определения путей к PHP-файлам.

iEXExchanger использует большое количество PHP-классов, поэтому realpath-кеш уменьшает количество повторных обращений к файловой системе.

opcache.memory_consumption

Определяет объём оперативной памяти для хранения скомпилированного PHP-кода.

Пример:

Память OPcache не нужно увеличивать вместе с memory_limit. Если весь PHP-код помещается в кеш, дальнейшее увеличение не даст заметного ускорения.

opcache.max_accelerated_files

Определяет максимальное количество PHP-файлов, которые могут находиться в OPcache.

Для большинства проектов достаточно:

Для крупного проекта:

Режимы OPcache

1

Безопасный режим

Во всех основных профилях используется:

PHP проверяет изменения файлов каждые две секунды. После обновления новая версия кода начинает использоваться автоматически.

Этот режим рекомендуется большинству клиентов.

2

Максимальная производительность

Если после каждого обновления гарантированно перезапускается PHP-FPM, можно использовать:

PHP перестанет проверять изменения файлов при обработке запросов.

3

JIT

Для обычной работы iEXExchanger рекомендуется оставить JIT выключенным:

Включение JIT не гарантирует ускорение Laravel-приложения и дополнительно использует оперативную память.

Что означают настройки PostgreSQL

shared_buffers

Определяет объём памяти собственного кеша PostgreSQL.

Пример:

Чем больше данных находится в кеше, тем реже PostgreSQL обращается к диску.

Передавать PostgreSQL большую часть оперативной памяти не нужно. База также использует файловый кеш операционной системы.

effective_cache_size

Сообщает планировщику PostgreSQL, какой объём кеша предположительно доступен.

Пример:

Параметр не резервирует указанный объём памяти. Он влияет только на выбор плана выполнения запросов.

work_mem

Ограничивает память одной операции сортировки или хеширования.

Пример:

Один запрос может одновременно выполнять несколько таких операций. Несколько подключений также могут использовать work_mem одновременно.

Не устанавливайте глобально:

без предварительного расчёта.

maintenance_work_mem

Используется при:

  • создании индексов;

  • выполнении VACUUM;

  • добавлении внешних ключей;

  • обслуживании таблиц.

Пример:

autovacuum_work_mem

Ограничивает память одного процесса autovacuum.

Пример:

Если одновременно работают несколько процессов autovacuum, каждый из них может использовать память отдельно.

max_connections

Ограничивает количество одновременных подключений к PostgreSQL.

Пример:

Большое значение не ускоряет базу. Каждое подключение использует оперативную память, поэтому лимит должен соответствовать мощности сервера.

min_wal_size и max_wal_size

Определяют объём журнала WAL, который PostgreSQL хранит и использует между контрольными точками.

Пример:

Увеличение max_wal_size помогает распределить дисковую нагрузку, но требует свободного места на диске.

checkpoint_completion_target

Значение:

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

wal_compression

Значение:

уменьшает объём части данных, записываемых в WAL. Это снижает дисковую нагрузку, но немного увеличивает использование процессора.

Обязательные параметры PostgreSQL

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

Не отключайте их ради дополнительной скорости.

Нужно ли переводить значения в байты

PostgreSQL принимает значения с единицами измерения:

Используйте значения в том виде, в котором они указаны в профилях.

Переводить их в байты не требуется.

Если FastPanel не позволяет сохранить переменные

Если при сохранении появляется ошибка прав, служебной роли FastPanel нужно разрешить изменение выбранных параметров.

Подключитесь к серверу по SSH и выполните:

Подключение к серверу по SSH

Роль fastuser используется только для подключения FastPanel к PostgreSQL.

Как применить настройки PHP

После изменения параметров нажмите «Сохранить».

Затем откройте: «Настройки» — «Сервисы»

Найдите PHP-FPM 8.4 и выполните перезапуск.

После этого новые параметры начнут использоваться сайтом.

Как применить настройки PostgreSQL

После сохранения переменных проверьте, требуется ли перезапуск:

Параметры shared_buffers и max_connections требуют полного перезапуска PostgreSQL.

Выполните:

Проверьте доступность:

Ожидаемый результат:

Проверка настроек PHP

Проверьте основные значения:

Если параметры настроены отдельно для Backend-сайта, значения PHP-FPM могут отличаться от настроек PHP в командной строке.

Проверка настроек PostgreSQL

Выполните:

После перезапуска в поле pending_restart должно отображаться:

Частые ошибки

Сайт показывает 502 после изменения PHP

Почему возникает

PHP-FPM не запустился или указано недопустимое значение.

Что проверить

Откройте:

«Настройки» — «Сервисы»

Проверьте состояние PHP-FPM 8.4.

Как исправить

Верните предыдущее значение и повторно запустите PHP-FPM.

PHP не принимает большой файл

Почему возникает

post_max_size меньше upload_max_filesize.

Как исправить

Например, для файла до 200 МБ используйте:

Изменения PHP не применились

Почему возникает

Не был перезапущен PHP-FPM или изменения внесены для другой версии PHP.

Как исправить

Проверьте, что Backend использует PHP 8.4, и перезапустите PHP-FPM 8.4.

Изменения кода не отображаются

Почему возникает

Отключена проверка изменений файлов:

Как исправить

Перезапустите PHP-FPM.

Настройка PostgreSQL сохранилась, но не применилась

Почему возникает

Параметр требует перезапуска PostgreSQL.

Как исправить

Выполните:

PostgreSQL не запускается

Почему возникает

Указано недопустимое значение или выбран слишком высокий профиль.

Что проверить

Проверьте журнал:

Как исправить

Верните значения предыдущего профиля и повторно запустите PostgreSQL.

Серверу не хватает оперативной памяти

Почему возникает

Выбран профиль выше характеристик сервера или завышены work_mem, shared_buffers и max_connections.

Что проверить

Как исправить

Перейдите на предыдущий профиль. В первую очередь уменьшите work_mem, shared_buffers и max_connections.

Частые вопросы

Какой профиль выбрать для сервера с 12 ГБ ОЗУ?

Сначала используйте профиль «Рекомендуемый» для 8 ГБ.

После проверки можно изменить PostgreSQL:

Чем больше memory_limit, тем быстрее работает PHP?

Нет. Параметр только разрешает одному скрипту использовать больше памяти.

Нужно ли устанавливать upload_max_filesize равным 1 ГБ?

Только если через панель действительно загружаются такие файлы. Этот параметр не влияет на скорость работы сайта.

Можно ли установить max_connections равным 1000?

Технически можно, но это не ускорит PostgreSQL. Большое количество подключений увеличивает потребление памяти и может снизить производительность.

Можно ли использовать максимальный профиль на сервере с 16 ГБ?

Нет. Используйте профиль «Высокая производительность».

Нужно ли включать JIT?

Для обычной работы iEXExchanger рекомендуется оставить JIT выключенным:

Нужно ли отключать autovacuum?

Нет. Autovacuum необходим для очистки устаревших версий строк и обновления статистики PostgreSQL.


Рекомендуемый профиль для большинства клиентов

Для большинства проектов iEXExchanger рекомендуется следующая конфигурация.

1

Сервер

2

PHP 8.4

3

PostgreSQL 18

Этот профиль обеспечивает сбалансированную работу PHP и PostgreSQL без чрезмерного потребления оперативной памяти.

Коротко

Выберите профиль по фактическому объёму ОЗУ сервера.

Настройки PHP отвечают за допустимую память, загрузку файлов, время выполнения и кеширование PHP-кода. Настройки PostgreSQL управляют памятью базы, подключениями и журналом WAL.

После сохранения параметров перезапустите PHP-FPM и PostgreSQL. Не устанавливайте максимальный профиль на слабом сервере и не отключайте параметры надёжности PostgreSQL.

Последнее обновление

Это было полезно?