Назад | Перейти на главную страницу

Apache2 'кеширование' / 'сохранение в памяти' статической html-страницы (есть ли что-нибудь, что можно получить?)

У меня есть сайт с популярной 99% -ной статической html-страницей (1 МБ) на микро-экземпляре Amazon EC2, который получает около 35 000 просмотров страниц в день. Сайт меняется каждые 3-4 часа или около того, и на нем уже работает mod_deflate, увеличивая размер страницы примерно до 100 КБ.

Мне интересно, есть ли способ сообщить apache2, что страница должна быть в памяти все время?

Или он уже каким-то образом кэширован apache2 или диском (работает ubuntu, ext3)?

(Полу) технические очки

linux (и другие Unix-подобные системы и, возможно, любая другая исходная ОС для серверов) будет хранить недавно / часто используемые файловые данные в ОЗУ. В Linux это называется "кэш страниц".

Для каталогов Linux также сохраняет недавно просмотренные имена файлов и недавно перечисленные каталоги в "Дентри"(запись в каталоге). Таким образом, поиск одного и того же имени снова и снова не приводит к доступу к диску и даже не требует прохождения через определенный код уровня файловой системы (скажем, ext3).

Таким образом, Linux сохраняет как данные файла, так и метаданные в ОЗУ, если файл часто используется. Это происходит в ядре, поэтому:

  • Apache и другие процессы Linux не должны ничего делать;
  • разные процессы используют функции кэширования файловой системы Linux; Если некоторым программам необходимо прочитать файл, который недавно прочитала (или написала) другая программа, то она получит пользу от кеширования.

Если каждая программа должна реализовать свой собственный дисковый кеш, каждая из них будет занимать память, даже если им нужны одни и те же файлы. (Также было бы беспорядочно, если бы какой-то процесс был заменен с его файловым кешем RAM!)

Но тот факт, что файл часто полностью читается и, таким образом, полностью кэшируется в ОЗУ, не означает, что повторный доступ только для чтения к этому файлу не вызывает доступа к диску: поскольку Linux, как и другие Un * x, имеет концепцию файла время последнего доступа (atime), ему придется регулярно обновлять метаданные файла на диске - если только вы не отключите обновление времени доступа на уровне fs (опция noatime). Перед тем как это сделать, вы должны убедиться, что от правильного времени доступа ничего не зависит. В основном это проблема персональных компьютеров, где atime update предотвращает сон диска, на серверах это, вероятно, не имеет большого значения. Я упоминаю это в основном для полноты картины.

Настоящий вопрос

Вы профилировали свою систему? Вы определили конкретные проблемы с производительностью?