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

Squid или другие HTTP-кеши с хранилищем кеш-памяти SSD?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

VIP-персоны

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

Дети

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

Сам кальмар

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

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

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

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

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

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

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

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

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

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

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

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