У меня есть сайт с популярной 99% -ной статической html-страницей (1 МБ) на микро-экземпляре Amazon EC2, который получает около 35 000 просмотров страниц в день. Сайт меняется каждые 3-4 часа или около того, и на нем уже работает mod_deflate, увеличивая размер страницы примерно до 100 КБ.
Мне интересно, есть ли способ сообщить apache2, что страница должна быть в памяти все время?
Или он уже каким-то образом кэширован apache2 или диском (работает ubuntu, ext3)?
linux (и другие Unix-подобные системы и, возможно, любая другая исходная ОС для серверов) будет хранить недавно / часто используемые файловые данные в ОЗУ. В Linux это называется "кэш страниц".
Для каталогов Linux также сохраняет недавно просмотренные имена файлов и недавно перечисленные каталоги в "Дентри"(запись в каталоге). Таким образом, поиск одного и того же имени снова и снова не приводит к доступу к диску и даже не требует прохождения через определенный код уровня файловой системы (скажем, ext3).
Таким образом, Linux сохраняет как данные файла, так и метаданные в ОЗУ, если файл часто используется. Это происходит в ядре, поэтому:
Если каждая программа должна реализовать свой собственный дисковый кеш, каждая из них будет занимать память, даже если им нужны одни и те же файлы. (Также было бы беспорядочно, если бы какой-то процесс был заменен с его файловым кешем RAM!)
Но тот факт, что файл часто полностью читается и, таким образом, полностью кэшируется в ОЗУ, не означает, что повторный доступ только для чтения к этому файлу не вызывает доступа к диску: поскольку Linux, как и другие Un * x, имеет концепцию файла время последнего доступа (atime
), ему придется регулярно обновлять метаданные файла на диске - если только вы не отключите обновление времени доступа на уровне fs (опция noatime
). Перед тем как это сделать, вы должны убедиться, что от правильного времени доступа ничего не зависит. В основном это проблема персональных компьютеров, где atime
update предотвращает сон диска, на серверах это, вероятно, не имеет большого значения. Я упоминаю это в основном для полноты картины.
Вы профилировали свою систему? Вы определили конкретные проблемы с производительностью?