Количество процессов php-fpm и память

В некоторых статьях читал, мол, устанавливай максимальное число процессов fpm %много%, 24, например, 10 и т.п. При этом, авторы этих статей совсем не берут в расчёт то, что каждый процесс будет занимать ровно столько памяти, сколько прописано в memory_limit в настройках php. И даже эти 10 процессов могут легко занять всю память какого-нибудь маленького сервера.

Допустим, вордпрессу как минимум нужно 32 мб памяти. А он ещё и 64 может потребовать. То есть 32*10=320 мегабайт памяти займёт php. А ещё нужна память для mysql и других процессов. В результате какой-нибудь вдс с 512 мегабайтами оперативки будет либо жутко тормозить, используя swap, либо, если это какое-то виртуоззо или опенвз, просто перестанет отвечать на запросы. Ведь памяти-то свободной не останется, и файла подкачки нету.

Вывод: нужно точно рассчитывать ту память, которую нужно отдать под php, и устанавливать число процессов, которые не займут всю память под php.

Пакет eaccelerator для Debian 6

Открыл для себя программу checkinstall. Эта программа позволяет создавать установочные пакеты, совместимые с менеджерами пакетов. Для debian — .deb пакеты. Но заметка не о ней. А о том, что при помощи этой прекрасной программки я создал свой пакет с eaccelerator-ом. Самая простенькая версия, которая устанавливает библиотеку eaccelerator в каталог с дополнениями php (/usr/lib/php5/). Правда, заставить пакет устанавливать ещё и eaccelerator.ini в папку с настройками php у меня не получилось. :( Не хватает знаний пока что. Поэтому ограничимся этим.

Самое важно, что теперь не придётся каждый раз компилировать заново. Достаточно будет установить пакет (его, кстати, можно будет и удалить) и создать конфигурационный файл.

Массовая оптимизация таблиц Mysql

Известно, что фрагментированные базы данных mysql замедляют работу сервера mysql. И эти базы нужно иногда оптимизировать: производить дефрагментацию.

Пожалуй, правильней всего будет оптимизировать базы при помощи утилиты mysqlcheck. Эта команда запускает оптимизацию таблиц:

mysqlcheck -Ao

Здесь: ключ A проверяет таблицы на ошибки, а ключ o производит оптимизацию.

Конфигурации nginx для php-fpm

Установить php-fpm ещё недостаточно. Нужно ещё настроить сервер, чтобы он мог работать с php-fpm. Рассмотрим nginx. :)

Читать далее

Static и dynamic pool в php-fpm

Статик — это определённое число процессов, которые занимают фиксированный объём памяти. И ненужные процессы не завершаются, а просто простаивают, ожидая своей очереди.

С динамик всё по-другому: запускается минимальное указанное количество процессов, в процессе работы это число растёт до pm.max_children и, когда лишние процессы становятся не нужными, они завершаются, и остаётся число процессов pm.max_spare_servers.

Получается, если для работы необходимо больше процессов, то они запускаются и работают только при необходимости, а в статик запускаются сразу и обслуживают клиентов. И уже не тратится время на запуск дополнительных процессов. Следовательно, и производительность должна быть немного выше.

Значит, динамик будет экономнее относится к используемой памяти, потому что завершённые процессы освобождают память.

Dynamic, пожалуй, можно сравнить с Apache. :D Тут есть минимальное число процессов, которое стартует при запуске, минимальное число простаивающих процессов, максимальное число простаивающих процессов и максимальное число порождаемых процессов в целом. Как в Apache.

Страница 1 из 512345