Как уменьшить нагрузку на чтение и запись на диск? - PullRequest
0 голосов
/ 22 марта 2012

У меня есть один сайт, который в основном написан на JavaScript.Я размещал это на IIS.Этот веб-сайт запрашивает изображения из определенной папки на жестком диске и отображает их для конечного пользователя.Запрос изображения очень частый и быстрый.

Есть ли способ уменьшить накладные расходы на операцию чтения с диска?

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

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Хотя отображение памяти является жизнеспособной идеей, я бы предложил использовать memcached.Он работает как отдельный процесс, допускает горизонтальное масштабирование, испытан и протестирован и активно разворачивается на некоторых самых требовательных веб-сайтах.Хорошо реализованный сервер memcached может значительно сократить доступ к диску .

Он также имеет привязки для многих языков, в том числе и для Интернета.Я предполагаю, что вы хотите решение для Java (большинство ваших тегов относятся к этому языку).Прочитайте эту статью для установки и других задач администратора.Он также имеет примеры кода (для Java), с которых вы можете начать.

В терминах псевдокода, что вам нужно сделать, когда вы получите запрос, скажем, для Moon.jpeg:

String key = md5_hash(Moon.jpeg); /* Or some other key generation mechanism */
IF key IN memcached
   SUPPLY FROM memcached /* No disk access */
ELSE
   READ Moon.jpeg FROM DISK
   STORE IN memcached ASSOCIATED WITH key
   SUPPLY
END

Это очень грубый алгоритм, вы можете прочитать больше об алгоритмах кэширования в этой статье Wiki .

0 голосов
/ 22 марта 2012

Неправильное направление.Вы хотите уменьшить IO для медленных дисков (относительно).Вы хотите, чтобы файлы отображались в физической памяти.В простых сценариях ОС будет обрабатывать это автоматически с помощью файлового кэша.Вы можете посмотреть, предоставляет ли Windows какие-либо настраиваемые параметры или хотя бы посмотреть, какую метрику вы можете получить.

Если я правильно помню (несколько лет назад), IIS очень эффективно обрабатывает статические файлы благодаря драйверу маршрутизации ядра, связанному с IIS, но только если он не проходит через дополнительные фильтры ISAPI и т. Д. Возможно, вы найдете некоторую информацию, связанную сэто на канале 9 и т. д.

В долгосрочной перспективе вам следует обратить внимание на перемещение статических ресурсов в CDN, например, CloudFront и т. д.

Как и в случае любой другой проблемы ... вы уверены, что у вас естьпроблема?

...