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

Оптимизация обслуживания изображений с использованием nfs для системы с высоким соотношением чтения и записи

Наша система использует NFS в первую очередь для репликации и обслуживания образов с нескольких узлов.

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

Как я могу оптимизировать свою систему, чтобы получить максимальную производительность чтения (только с nfs). Какие-нибудь быстрые надежные тесты, чтобы проверить, работает ли система лучше?

Есть ли лучшие способы быстрого обслуживания изображений? Можно ли использовать механизм squid / caching поверх nfs mount для ускорения работы?

Мы уже используем модули кеширования памяти apache.

использование сервера и клиента - nfs v3, все работают под управлением RHEL 4.

Конфигурация ч / б сервера: RAM: 3GB, четырехъядерный Intel (R) Xeon (TM) @ 3 Ghz.

cat / proc / net / rpc / nfsd "на сервере дает:

rc 0 3584710 221921733 fh 1506 0 0 0 0 io 4274869225 1474485090 th 8 581669 39835.922 7449.989 1396.547 0.000 879.767 604.030 436.573 320.797 0.000 1362.017 ra 16 3454951 13954 4091 нетто 8186 39203203704271 272162 225522548225482254822548225482258 proc2 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 proc3 22 57 144259928 359775 11723001 58910204 0 5977165 2145920 546253 3829 0 0 509776 3718 15256 165 21497 79725 10067 59 0 867450 proc4 2 0 0

Вы не упомянули, какой у вас сервер NFS, и какие клиенты nfs. Я предполагаю, что оба являются недавними системами Linux.

  1. Проверьте производительность сырого диска на вашем файловом сервере. Как правило, производительность NFS не может быть лучше примерно 50% от производительности необработанного диска.
  2. производительность сети вашего сервера NFS должна быть больше, чем сумма клиентов. Например, с 10 клиентами с Ethernet 100Bt, на вашем сервере должен быть интерфейс как минимум 1Gb.
  3. оптимизировать настройки упреждающего чтения и кэширования на сервере. Я не могу вам помочь, не зная конфигурации оборудования.
  4. Оптимизируйте свою сеть: сравните NFS через TCP и NFS через UDP. Если возможно, попробуйте большие кадры.
  5. Запустите достаточное количество серверных процессов на сервере NFS. В идеале у вас должно быть столько же серверов, сколько активных соединений, но YMMV.

Вместо использования NFS, рассмотрите возможность использования rsync для выталкивания контента ко всем узлам обслуживания изображений. Запись может происходить в одной центральной точке, а затем синхронизироваться либо при необходимости (например, при добавлении изображений), либо с помощью задания cron.

Это даст лучшую производительность в целом и позволит использовать обычный кеш файловой системы вместо того, чтобы реализовывать что-то поверх NFS.

Отключите время доступа (atime) в файловой системе, обслуживающей программу чтения NFS.

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

Более подробную информацию о времени можно найти Вот и Вот.

Вы не упомянули, планируете ли вы использовать оборудование для решения проблемы, но одним из возможных решений кеширования может быть NetApp FlexCache товары. Конечно, они недешевы, но они созданы для решения именно этой проблемы.

Вы говорите, что используете кеширование памяти apache. Apache также имеет кэширование на диске, которое можно здесь использовать. См. Раздел кэширования на основе диска в Apache Руководство по кешированию. Для этого потребуется выделить некоторое пространство на локальном диске для кэша изображений и время от времени запускать служебную программу для очистки кеша.

В Solaris есть файловая система кэширования, которую можно использовать как слой поверх NFS, но вы пометили linux, поэтому я не думаю, что это вариант для вас.

Похоже, идеальное приложение для SSD. Это уменьшит задержку чтения.