Назад |
Перейти на главную страницу
Lighttpd потребление памяти при больших загрузках
Рассмотрим следующий сценарий:
- Я запускаю lighttpd-1.4.19 и обрабатываю через него большие загрузки (сотни МБ, но менее 1 ГБ).
- Сервер работает под управлением Ubuntu 8.04 LTS.
- Файлы временно записываются в / var / tmp.
- PHP5 обрабатывает конечный результат через fastcgi.
- Во время загрузки фрагменты загрузки записываются во временный каталог.
Странно то, что хотя фрагменты записываются на диск, свободная память на сервере постепенно уменьшается до полного размера файла во время загрузки. Я бы понял, что ОЗУ уменьшается на размер каждого фрагмента (скажем, 1-2 МБ), пока они не будут записаны на диск, но я не понимаю, почему это происходит на весь размер файла (скажем, 300 МБ).
- Знаете ли вы, почему ОЗУ используется для всего файла, хотя его фрагменты записываются на диск? Возможно ли монтирование / var / tmp непосредственно в памяти? По сравнению с / tmp?
- Если нет, знаете ли вы, как диагностировать и как определить, какой процесс занимает память? Я не видел, чтобы процесс lighttpd или php-cgi увеличивался с помощью ps, но, возможно, я смотрю не на то, что нужно.
- Или еще лучше, не могли бы вы порекомендовать хороший веб-сервер (Apache, Nginx, lighttpd и т. Д.) И конфигурацию для обработки больших загрузок без сохранения всего в ОЗУ?
Спасибо!
Если размер lighttpd или php-cgi не увеличивается, не волнуйтесь - увеличение, которое вы видите, связано не с потреблением оперативной памяти этими процессами, а с использованием ядром дискового кеша. По сути, поскольку вы только что записали эти большие файлы, ядро хранит их в памяти, предполагая, что вы, возможно, захотите прочитать их снова. Конечно, он сбросит этот кеш, если эта память понадобится другим процессам.