Как эффективно обслуживать динамические изображения PHP на сервере LAMP?
Сейчас я запускаю PHP-скрипт в моем стеке LAMP (CentOS/Apache/MySQL/PHP), который генерирует динамические изображения с использованием GD. Я кеширую их на жесткий диск в течение 5 минут. Если существует кэшированная версия, я использую ее вместо создания новой. Это экономит процессорное время, но, поскольку Apache все еще выполняет файл PHP, он генерирует новый процесс Apache для каждого изображения.
Apache обычно работал на 30 МБ, я переписал большую часть конфигурации и уменьшил ее до 10 МБ на процесс. Однако при ~30 одновременных процессах это быстро складывается. Этот сервер также должен обслуживать нормальный контент сайта. Мне было интересно, есть ли хороший способ настроить другой легкий сервер или оптимизировать Apache/PHP? Вот моя настройка prefork на 500MB RAM:
StartServers 10
MinSpareServers 20
MaxSpareServers 30
ServerLimit 128
MaxClients 128
MaxRequestsPerChild 256
1 ответ
но поскольку Apache все еще работает с файлом PHP, он генерирует новый процесс Apache для каждого изображения.
... и, конечно, ваш скрипт PHP проверяет, есть ли кэшированная версия, прежде чем загружать весь код PHP, необходимый для рендеринга нового изображения?
... и вы отправляете кеширующие заголовки клиенту, говоря, как долго действует файл кеша?
... а вы используете кэш кода операции?
... а вы сжимаете весь контент без изображения?
Как вы получаете свою цифру для использования памяти на процесс? Даже 10 МБ кажется очень высоким - вы уверены, что не учитываете сегменты TXT каждый раз?
Вы показали нам часть своей конфигурации - но вы используете SSL? У вас настроен keepAlives? Если так, то к чему?
Как выглядит ваш профиль загрузки?
Какую проблему вы пытаетесь решить здесь? (сделать веб-службу быстрее? освободить ресурс для чего-то еще?)
C.