Squid или другие HTTP-кэши с SSD Cache Store?

9

Я обдумываю настройку кэша Squid (или, возможно, лака) в системе с SSD-дисками.

Очевидное преимущество заключается в том, что эти системы имеют отличные скорости чтения, и я ожидаю, что мои коэффициенты попадания будут достаточно высокими.

Давайте предположим, что я могу поместить 7 SSD в конфигурацию RAID. (есть некоторые случаи, которые позволят мне упаковать гораздо больше)

Вопросы реализации:

  • Должен ли я использовать RAID0? (Я ожидаю, что диск в конечном итоге выйдет из строя, так что это кажется опасным.)

  • Должен ли я использовать RAID10? (Это вдвое сокращает объем моего дискового пространства, что обходится дорого.)

  • Должен ли я использовать RAID5? (Известно, что твердотельные накопители имеют «плохую» производительность записи и лимиты записи, и все дополнительные записи с четностью могут значительно замедлить это.)

  • Стоит ли рассматривать каждый диск как свое собственное хранилище данных squid? (Насколько хорошо Squid обрабатывает несколько хранилищ данных? и что происходит, если / когда один из них выходит из строя?)

  • Должен ли я игнорировать хранилища данных и просто превращать SSD в большие разделы SWAP и позволить виртуальной машине Linux делать это? (кажется небрежным)

Любой совет от людей, использующих твердотельные накопители в производственных средах, будет принята с благодарностью. (особенно если вы используете их для HTTP-кэшей)

Джоэл К
источник
+1 за интересный вопрос, я никогда не думал о том, чтобы превращать диски просто в большой раздел подкачки
Боб,
Да, определенно интересно ... хотя я сильно склонен не попадать в подвиг SSD и просто добавить больше оперативной памяти за эти деньги.
Оскар Дюверборн
К сожалению, необходимый объем кеша не помещается в ОЗУ. У меня уже есть кэш-память Squid с поддержкой оперативной памяти для этих объектов.
Джоэл К

Ответы:

8

Мы использовали лак на дисках ssd в течение последних 9 месяцев, он работал очень хорошо для нас. Ранее мы использовали кэш только для памяти squid со слоем карпа. Это работало, но фрагментация памяти была настоящей проблемой, требующей частых перезапусков. Squid 2.x также будет использовать только одно ядро, что делает его довольно неэффективным на современном оборудовании.

Для нашего сайта, который очень удобен для кэширования, мы видим около 10% использования ЦП на 8-ядерном компьютере, обслуживающем 100 Мбит / с трафика. В наших тестах мы исчерпали полосу пропускания, прежде чем достигли пределов процессора с 2 портами 1 Гб.

У меня есть несколько советов для запуска лака с ssd-кешем.

  • Производительность произвольной записи действительно имеет значение. Мы опробовали несколько вендоров для дисков SSD, прежде чем остановиться на Intel X-25M. Мы видели некоторые записи размером всего 1 МБ / с для случайной записи 4 КБ, мы получаем случайную запись 4 МБ 24 МБ / с с x-25m.

  • Raid0. Кеш в 2.0 не является постоянным, поэтому не нужно беспокоиться о избыточности. Это делает перезапуски больно, но это редко. Вы можете делать такие вещи, как загрузка новой конфигурации и очистка объектов без перезапуска.

  • Режим Mmap. Кэш лака может быть mmap'd в файл или использовать пространство подкачки. Использование свопа не очень хорошо для нас, оно имеет тенденцию использовать большую пропускную способность ввода / вывода для обслуживания того же объема трафика. В коде подкачки Linux есть 4 сектора чтения, мы написали патч, чтобы удалить это, но не пробовали его в работе.

  • Планировщик сроков. С 2.6.28+ это знает ssd и работает хорошо. Мы попробовали noop, но обнаружили, что крайний срок был более справедливым, поскольку пропускная способность ввода / вывода становится ограниченной.

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

  • Запустите 2.6.28+. mmap много места в linux дает менеджеру памяти хорошую тренировку, но патчи split lru очень помогают. Использование процессора kswapd сильно упало, когда мы обновились.

Мы разместили наш файл vcl, а также несколько инструментов, которые мы используем с лаком, в тексте ссылки . Vcl также включает в себя аккуратный хак, реализующий очень быстрый сервер геоипакупа на основе базы данных maxmind.

Джейсон Кук
источник
1

Я не использую твердотельные накопители в качестве HTTP-кэшей, но могу сделать следующие наблюдения:

Не все SSD одинаковы, поэтому вы должны быть очень осторожны при выборе достойных. FusionIO создает твердотельные накопители с поддержкой PCIe, которые действительно являются высокопроизводительными (с относительно небольшой емкостью), но дорогостоящими. Твердотельные накопители Intel X25-E SLC работают очень хорошо и являются более доступными, но при этом имеют небольшую емкость. Сделайте свое исследование! Я определенно могу порекомендовать варианты SLC X25-E, так как я использую их в производственных системах.

Существуют и другие SSDS, которые могут обеспечить высокую скорость последовательного чтения / записи, но для чего-то вроде кеша важен случайный ввод-вывод, и многие SSD дают примерно такую ​​же произвольную производительность, что и вращающиеся диски. Благодаря эффектам записи на твердотельных накопителях вращающиеся диски часто работают лучше. Многие твердотельные накопители имеют контроллеры низкого качества (например, старые контроллеры JMicron), которые в некоторых ситуациях могут значительно ухудшить производительность. Anandtech и другие сайты делают хорошие сравнения с такими инструментами, как iometer, проверьте там.

И, конечно же, твердотельные накопители небольшие. Intel X25-E, который, я бы сказал, лучший SATA SSD, который я когда-либо видел, выпускается только в 32 и 64 ГБ вариантах.

Для уровней RAID все еще действуют стандартные замечания по производительности RAID. Запись в RAID 5, по сути, включает чтение блока данных, который вы собираетесь изменить, чтение блока четности, обновление четности, запись блока данных и запись четности, так что производительность все равно будет хуже, чем у другого RAID уровни, даже с твердотельными накопителями. Тем не менее, с такими накопителями, как X25-E, с такой высокой производительностью случайного ввода-вывода, это, вероятно, имеет меньшее значение - поскольку он все равно будет превосходить случайный ввод-вывод на вращающихся дисках для массива аналогичного размера.

Из того, что я видел, пропускная способность RAID-контроллера насыщается слишком рано, чтобы получить максимальную выгоду от набора из 7 дисков RAID, по крайней мере, в отношении последовательной производительности. Вы не можете получить более 800 МБ / с из текущих моделей контроллеров SATA (3ware, areca и т. Д.). Наличие более мелких массивов на нескольких контроллерах (например, на нескольких RAID1, а не на одном RAID10) улучшит это, хотя пострадает индивидуальная производительность каждого массива.

Что касается HTTP-кэша, я думаю, что вам лучше обслужить приличный набор вращающихся дисков и много оперативной памяти. Часто используемые объекты остаются в кеше памяти - либо во внутреннем кеше squid, либо в кеш fs вашей ОС. Это позволяет значительно снизить нагрузку на диск за счет простого увеличения объема памяти. Если вы работаете с большим кешем squid, вам, вероятно, понадобится много дискового пространства, а высокопроизводительные SSD по-прежнему имеют относительно небольшую емкость.

Дэниел Лоусон
источник
Даже X25-M
пригодны для
Я сделал свою домашнюю работу и знаю, чтобы избежать JMicrons. Я в основном рассматривал X25-Ms (Intel MLC) и, возможно, более новую (не JMicron) серию OCZ Vertex.
Джоэл К
вау, вершина ocz имеет более низкую максимальную случайную запись, чем даже x25-m !!!
Пиролистический
1

Я не очень знаком с SSD-накопителями, но могу рассказать о архитектуре, которую я использовал, которая может помочь решить некоторые ваши проблемы.

Братья и сестры

В моем случае я построил четыре сервера с 16 ГБ оперативной памяти каждый. Я установил 9GB как кэш в памяти для использования Squid. Я настроил их как набор элементов одного уровня, чтобы запрос к одному серверу запрашивал другие, прежде чем искать данные. Всего у меня было 36 ГБ в кэш-памяти. Я бы не получил более четырех братьев и сестер, так как связь между ними начинает увязать.

VIP-персон

Я настроил VIP для четырех серверов, с которыми клиент может общаться. Это решило, что происходит, когда один сервер выходит из строя.

Дети

Я настроил свое веб-приложение для запроса локального сервера Squid, работающего на 127.0.0.1. Затем сконфигурировал родителя этого экземпляра Squid как VIP. Это обеспечивает очень быстрое переключение при сбое в случае полного отказа VIP. Если родители не отвечают, ребенок запрашивает услуги напрямую. Это также удобно, если вы используете один сервер Squid и не имеете VIP. Конечно, если локальный экземпляр Squid на вашем веб-сервере выходит из строя, все останавливается.

Сам кальмар

Я действительно не смотрел на 3.0, но 2.x все еще однопоточный. В какой-то момент у вас закончатся буферы ЦП или TCP. Я бы распространил кэш на 2-3 ящика меньше, если это возможно. Также вы можете планировать разделение ваших ферм Squid в будущем, если увидите рост системы.

В любом случае, удачи в сборке SSD. Мне интересно услышать, как это получается, поскольку я, вероятно, пойду этим путем в будущем.

Кашани
источник
0

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

Просто используйте рейд 0 или держите их отдельно. Я думаю, что отдельный будет лучше, так как сбой диска не будет разрушать весь ваш кэш.

Pyrolistical
источник
Насколько хорошо Squid восстанавливается, если выпадает одно хранилище данных? (очевидно, мне нужно проверить это) RAID5 - это компромисс, если Squid не изящен из-за сбоя хранилища данных.
Джоэл К
-1

В документации по Squid рекомендуется не использовать RAID, а устанавливать дополнительные каталоги кеша на дополнительных дисках.

гость
источник
1
Пожалуйста, предоставьте ссылку на соответствующий раздел документации Squid.
Эндрю Шульман
wiki.squid-cache.org/SquidFaq/RAID
Амос Джеффрис