Как эффективно обслуживать динамические изображения PHP на сервере LAMP? - PullRequest
1 голос
/ 15 февраля 2010

Сейчас я запускаю PHP-скрипт в моем стеке LAMP (CentOS / Apache / MySQL / PHP), который генерирует динамические изображения с использованием GD. Я кеширую их на жесткий диск в течение 5 минут. Если существует кэшированная версия, я использую ее вместо создания новой. Это экономит процессорное время, но поскольку Apache все еще выполняет файл PHP, он генерирует новый процесс Apache для каждого изображения.

Apache обычно работал на 30 МБ, я переписал большую часть конфигурации и уменьшил ее до 10 МБ на процесс. Однако при ~ 30 одновременных процессах это быстро складывается. Этот сервер также должен обслуживать нормальный контент сайта. Мне было интересно, есть ли хороший способ настроить другой легкий сервер или оптимизировать Apache / PHP? Вот моя предварительная настройка на 500 МБ ОЗУ:

StartServers         10
MinSpareServers      20
MaxSpareServers      30
ServerLimit         128
MaxClients          128
MaxRequestsPerChild 256

1 Ответ

0 голосов
/ 19 февраля 2010

но поскольку Apache все еще работает с файлом PHP, он генерирует новый процесс Apache для каждого изображения.

... и, конечно, ваш PHP-скрипт проверяет, существует ли кэшированная версия до , он загружает весь код PHP, необходимый для рендеринга нового изображения?

... и вы отправляете кеширующие заголовки клиенту, говоря, как долго действует файл кэша?

... а вы используете кэш кода операции?

... а вы сжимаете весь контент без изображения?

Как вы получаете свою цифру для использования памяти для каждого процесса? Даже 10 МБ кажется очень высоким - вы уверены, что не учитываете сегменты TXT каждый раз?

Вы показали нам часть своей конфигурации - но вы используете SSL? У вас настроен keepAlives? Если да, то к чему?

Как выглядит ваш профиль загрузки?

Какую проблему вы пытаетесь решить здесь? (сделать веб-обслуживание быстрее? освободить ресурс для чего-то еще?)

С

...