Производительность
Данная инструкция содержит рекомендации по настройке PHP 8.4 и PostgreSQL 18 для повышения производительности iEXExchanger.
Настройки предназначены для проектов, работающих на FastPanel. Готовые профили позволяют подобрать значения по мощности сервера без ручного расчёта каждого параметра.
Не выбирайте профиль выше фактических характеристик сервера. Завышенные значения могут привести к нехватке оперативной памяти и нестабильной работе PHP-FPM или PostgreSQL.
Где находятся настройки
Настройки PostgreSQL
Откройте FastPanel: «Настройки» — «Базы данных»

Затем перейдите в «Серверы баз данных».
Выберите локальный сервер:
PostgreSQL 18 localНажмите «Настроить переменные».
Изменение переменных через FastPanel доступно только для локального сервера PostgreSQL. Для внешнего сервера параметры настраиваются непосредственно на сервере базы данных.
Как выбрать профиль
Минимальный
2 vCPU, 4 ГБ ОЗУ
Рекомендуемый
4 vCPU, 8 ГБ ОЗУ
Высокая производительность
8 vCPU, 16 ГБ ОЗУ
Максимальная производительность
от 16 vCPU, от 32 ГБ ОЗУ
Если сервер имеет промежуточный объём памяти, используйте ближайший меньший профиль.
Например, для сервера с 12 ГБ ОЗУ сначала используйте профиль на 8 ГБ. После проверки работы отдельные параметры можно увеличить.
Профиль «Минимальный»
Подходит для:
тестовых проектов;
небольших обменников;
проектов с низкой нагрузкой;
серверов без большого количества заявок и посетителей.
Профиль «Рекомендуемый»
Подходит большинству проектов iEXExchanger.
Профиль обеспечивает нормальный запас ресурсов для PHP, PostgreSQL и операционной системы без чрезмерного потребления памяти.
Профиль «Высокая производительность»
Подходит для:
крупных обменников;
большого количества направлений;
активной работы административной панели;
большого количества одновременных заявок;
высокой нагрузки на API и базу данных.
Профиль «Максимальная производительность»
Подходит для проектов с очень высокой нагрузкой.
Используйте этот профиль только на сервере с достаточным количеством оперативной памяти, производительным процессором и Enterprise NVMe.
Что означают настройки 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
Максимальная производительность
Если после каждого обновления гарантированно перезапускается PHP-FPM, можно использовать:
PHP перестанет проверять изменения файлов при обработке запросов.
При отключённой проверке файлов после каждого обновления обязательно перезапускайте PHP-FPM. Иначе сервер может продолжить выполнять предыдущую версию PHP-кода.
Что означают настройки 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
Следующие параметры должны оставаться включёнными:
Не отключайте их ради дополнительной скорости.
Отключение fsync, full_page_writes или synchronous_commit может привести к потере подтверждённых данных после сбоя сервера.
Нужно ли переводить значения в байты
PostgreSQL принимает значения с единицами измерения:
Используйте значения в том виде, в котором они указаны в профилях.
Переводить их в байты не требуется.
Если FastPanel не позволяет сохранить переменные
Если при сохранении появляется ошибка прав, служебной роли FastPanel нужно разрешить изменение выбранных параметров.
Подключитесь к серверу по SSH и выполните:
Роль fastuser используется только для подключения FastPanel к PostgreSQL.
Не назначайте fastuser суперпользователем и не используйте эту роль для подключения iEXExchanger к базе данных.
Как применить настройки 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 ГБ?
Нет. Используйте профиль «Высокая производительность».
Нужно ли отключать autovacuum?
Нет. Autovacuum необходим для очистки устаревших версий строк и обновления статистики PostgreSQL.
Рекомендуемый профиль для большинства клиентов
Для большинства проектов iEXExchanger рекомендуется следующая конфигурация.
Этот профиль обеспечивает сбалансированную работу PHP и PostgreSQL без чрезмерного потребления оперативной памяти.
Коротко
Выберите профиль по фактическому объёму ОЗУ сервера.
Настройки PHP отвечают за допустимую память, загрузку файлов, время выполнения и кеширование PHP-кода. Настройки PostgreSQL управляют памятью базы, подключениями и журналом WAL.
После сохранения параметров перезапустите PHP-FPM и PostgreSQL. Не устанавливайте максимальный профиль на слабом сервере и не отключайте параметры надёжности PostgreSQL.
Последнее обновление
Это было полезно?

