Использование памяти Apache2 при загрузке больших файлов

Использование памяти Apache2 при загрузке больших файлов

Я запускаю apache2.2.12 вместе с PHP 5.2.10. PHP настроен на работу в качестве отдельного процесса через fcgid. Проблема в том, что когда пользователи загружают файл, размер процесса apache увеличивается почти на такую ​​же величину. Поэтому если кто-то попытается загрузить файл размером 200 МБ, один из дочерних процессов увеличится до текущего размера +200 МБ. Если 2 пользователя одновременно начнут загрузку, мой сервер рухнет.

Сейчас увеличивается размер виртуальной памяти, но поскольку я использую VPS на базе OpenVZ, это имеет значение.

У меня есть вопросы:

  • Это нормальное поведение Apache или можно что-то сделать, чтобы это исправить?
  • Если нет, есть ли более эффективный способ обработки больших загрузок файлов? Исходя из текущего поведения, мне понадобится 1 ГБ свободной оперативной памяти для каждого дочернего процесса Apache, принимающего загрузку.

Спасибо!

Абхая

-

решение1

Интересная проблема, и похоже, это ограничение php. Смотрите следующее:

В конце концов они оба говорят "Используйте java или Perl" или что-то еще. Возможно, кто-то на stackoverflow знает ответ. Для загрузок такого размера sftp может быть лучшим решением в зависимости от того, насколько удобным для пользователя это должно быть.

Если вы готовы использовать не-php,JЗагрузитьвыглядит как хороший вариант, поскольку он может разбить файл на части и сбросить каждую часть на диск. Если это должен быть php, похоже, вы сможете развернуть что-то пользовательское с некоторым программированием сокетов в соответствии сэтот пост на stackoverflow.

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

Связанный контент