Человек с нотбуком ([info]pentarh) wrote in [info]ru_highload,
@ 2008-05-14 13:28:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Проблема с Content Delivery System
Ну даже не знаю с чего начать. В общем есть кластер на массивной отдаче контента. Массивная это 240 МБит/сек и выше.

Контента дохрена. 80 гбайт. Разного. От маленьких тумб и элементов дизайна до мувиков по 2-5-15 мбайт.

На отдаче стоят 3 сервака:
Dell бла-бла 2xSAS RAID 0
FreeBSD 6.2 RELEASE amd64


Сначала я между ними и клиентами всунул балансировочный прокси под nginx. Картина была такая:


Как видно, упиралось в потолок примерно 220 Мбит/сек - и это 3 сказевых рейда 0! Я посчитал и обнаружил, что трафик между прокси и серверами превышает трафик между прокси и клиентами примерно на 30% за счет более быстрого канала прокси-бекенды.

Решил прокси удалить и отдавать непосредственно с серверов методом ДНС-рулетки. Получилось вот что на каждом:



При этом gstat показывает почти полную загрузку винтов.

Все равно, потолок в районе 90Мбит! 90х3 = 270 Мбит это максимум, что можно выжать из этих трех.

Вопрос. Неужто все так плохо и сасовский рейд так мало тянет? Или это случайное чтение так его стопорит?

У меня ОДИН скази на параллельном проекте отдает 150 не напрягаясь. Правда там преимущественно большие файлы FLV (Xтуб).

Что можно сделать? Я уже тюнил все что можно ) Упираюсь в скорость чтения винтов и ппц :(




(Post a new comment)


[info]lionet
2008-05-14 09:59 am UTC (link)
а поставить четвертый сервак? по опыту, неплохой сервак отдаёт сто мегабит, и баста. если его разгонять, получится не cost-effective, легче ещё один такой же рядом поставить.

(Reply to this) (Thread)


[info]pentarh
2008-05-14 10:06 am UTC (link)
Да это понятно :) Новый стоит "всего лишь" 3500 EUR :) С такими темпами я задолбаюсь их добавлять. САС рейд может отдавать больше. Как его заставить - вот вопрос.

А сервак конечно пока поставим.

(Reply to this) (Parent)(Thread)


[info]lionet
2008-05-14 10:10 am UTC (link)
да не, это если под завязку забивать три сервака. а ведь можно сделать шесть по тысяче - будет более масштабируемо и дешевле.

(Reply to this) (Parent)(Thread)


[info]pentarh
2008-05-14 10:20 am UTC (link)
Вот тут я проводил исследования в этой области, страйп SAS дал лучшие показатели цена/качество

http://community.livejournal.com/ru_highload/28623.html

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

А серваки итак не под завязку забиты.

(Reply to this) (Parent)(Thread)


[info]lionet
2008-05-14 10:41 am UTC (link)
kern.maxvnodes чему равен?

(Reply to this) (Parent)(Thread)


[info]pentarh
2008-05-14 10:57 am UTC (link)
# sysctl kern.maxvnodes
kern.maxvnodes: 180000

(Reply to this) (Parent)(Thread)

(no subject) - [info]lionet, 2008-05-14 11:08 am UTC
(no subject) - [info]pentarh, 2008-05-14 11:24 am UTC
(no subject) - [info]lionet, 2008-05-14 11:29 am UTC

[info]lionet
2008-05-14 10:13 am UTC (link)
кстати - как там tps на винтах?

(Reply to this) (Parent)(Thread)


[info]pentarh
2008-05-14 10:16 am UTC (link)
160-300

(Reply to this) (Parent)(Thread)


[info]lionet
2008-05-14 10:37 am UTC (link)
divide by average seek time?

(Reply to this) (Parent)(Thread)


[info]pentarh
2008-05-14 10:58 am UTC (link)
просвятите :)

(Reply to this) (Parent)(Thread)

(no subject) - [info]lionet, 2008-05-14 11:00 am UTC

[info]atemik
2008-05-14 10:51 am UTC (link)
А вообще интересно. При такой нагрузке винты скорее всего заняты рандомным чтением. Кусочками по 16k, если с newfs не игрались. Умножаем 300 * 16k * 8 и получаем ~40Мбит чтения с винтов. Где-то потерялся коэффициент 2x (за счет миррора или за счет кеширования?).

(Reply to this) (Parent)(Thread)

(no subject) - [info]lionet, 2008-05-14 10:57 am UTC
(no subject) - [info]atemik, 2008-05-14 11:51 am UTC
(no subject) - [info]lionet, 2008-05-14 07:48 pm UTC
(no subject) - [info]pentarh, 2008-05-14 10:59 am UTC
(no subject) - [info]pentarh, 2008-05-14 11:00 am UTC
(no subject) - [info]atemik, 2008-05-14 11:50 am UTC

[info]picasa
2008-05-14 09:07 pm UTC (link)
Может дешевле будет на Amazon Web Services перейти ?

(Reply to this) (Parent)(Thread)


[info]doktorpz
2008-05-15 05:44 am UTC (link)
Здравая кстати мысль, я бы посчитал что выгоднее.

(Reply to this) (Parent)(Thread)


[info]pentarh
2008-05-15 07:45 am UTC (link)
А как они мне могут помочь то? )

(Reply to this) (Parent)(Thread)

(no subject) - [info]doktorpz, 2008-05-15 12:43 pm UTC

[info]atemik
2008-05-14 10:35 am UTC (link)
А расфасовка контента какая? Ну в смысле, общий объем мелких файликов (ну скажем меньше 128к и меньше 1М) какой?

Это я к тому, что может на один сервак попробовать воткнуть побольше памяти и свалить туда всю мелочь, чтобы она тупо в RAM закешировалась и не мешалась, а на остальных машинах оставить только "большие" файлы? Ну и на них - оттюнить под это дело FS путем задавания очень большого размера блока.

(Reply to this) (Thread)


[info]lionet
2008-05-14 10:38 am UTC (link)
так у freebsd unified cache, то есть наиболее часто запрашиваемое файло уже и так вся в памяти, целиком и по кускам.

впрочем, я думаю если hot set не влезает в ram там никакой кеш не поможет.

(Reply to this) (Parent)(Thread)


[info]atemik
2008-05-14 10:56 am UTC (link)
Именно. Поэтому самый вредный в плане рандомного чтения кусок hot set'а выкинуть на отдельную тачку и попытаться закэшировать. А остальное, что в кэш не лезет, пытаться оптимизировать уже имея дополнительные знания об этом контенте (что он заведомо большой и с дисков нужно читать бОльшими кусками, нежели обычно).

(Reply to this) (Parent)(Thread)


[info]lionet
2008-05-14 11:01 am UTC (link)
а, дошло. да, верно. мелочь вынести, поставить newfs на 4-8k, подкрутить maxvnodes в полмиллиона, и этим разгрузить кеш.

(Reply to this) (Parent)(Thread)


[info]atemik
2008-05-14 11:56 am UTC (link)
э-э?

(Reply to this) (Parent)(Thread)

(no subject) - [info]lionet, 2008-05-14 07:49 pm UTC

[info]pentarh
2008-05-14 11:40 am UTC (link)
А нет никаких идей как вытащить мелочь в мемкешед? Вытащить мелочь вообще на отдельный сервер не представляется возможным, т.к. там полная каша.

Вот если бы нгинкс умел:

if (расширение *.gif,*jpg,*css) {
if (размер < 128k) {
memcached_pass ....
}
}

:)

(Reply to this) (Parent)(Thread)


[info]atemik
2008-05-14 11:55 am UTC (link)
А вы статистику попробуйте собрать. Как вариант, по расширению будет довольно точное попадание в маленький/большой размер :)

(Reply to this) (Parent)(Thread)

(no subject) - [info]pentarh, 2008-05-14 12:14 pm UTC
(no subject) - [info]atemik, 2008-05-14 12:29 pm UTC
(no subject) - [info]pentarh, 2008-05-14 12:45 pm UTC
(no subject) - [info]pentarh, 2008-05-14 12:57 pm UTC
(no subject) - [info]atemik, 2008-05-14 01:40 pm UTC

[info]antage
2008-05-14 07:58 pm UTC (link)
Может быть свалить мелкую статику на ramdisk?

(Reply to this) (Parent)(Thread)

(no subject) - [info]pentarh, 2008-05-15 07:45 am UTC
(no subject) - [info]hexe_n_bdot, 2008-05-16 04:53 am UTC
(no subject) - [info]schors, 2008-05-19 09:06 pm UTC
(no subject) - [info]pentarh, 2008-05-20 08:27 am UTC
(no subject) - [info]schors, 2008-05-20 08:39 am UTC
(no subject) - [info]pentarh, 2008-05-20 08:43 am UTC
(no subject) - [info]schors, 2008-05-20 08:46 am UTC
(no subject) - [info]pentarh, 2008-05-20 09:00 am UTC

(Anonymous)
2008-05-15 05:45 pm UTC (link)
Несложно нгинкс настроить, чтобы он лез в мемкеш, а если в том контента не нашлось - обращался на диск. Ну и в мемкеш уже ложим что хотим.

(Reply to this) (Parent)


(Anonymous)
2008-05-15 04:43 pm UTC (link)
Откуда вывод, что весь трафик читается с винтов ? Нет ли упора в сеть ?

Вообще-то вся имеющаяся свободная память уходить на дисковый кеш. Памяти на машинах сколько ?

Если абсолютно точно упор в диски - просто добавить памяти максимум сколько возможно. А если поставить на каждую машину по 32 гб - диски вообще трогать не нужно будет для отдачи :)

(Reply to this) (Thread)


[info]pentarh
2008-05-19 09:11 am UTC (link)
Не, абсолютно точно упор в дисковое чтение. Сетка идет на гигабите.

Видишь ли, машины итак не дешевые. Хз сколько будет стоить еще туда брендовой памяти воткнуть.

Я все таки решил разворачивать распределенную файловую систему из дешевых серверов (см. топик выше).

(Reply to this) (Parent)


Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…