LINUX.ORG.RU
ФорумAdmin

Nginx sndbuf linux

 


0

3

Кто-нибудь может сказать что-нить адекватное о влиянии параметра sndbuf на поведение/производительность nginx (на linux) ? Особенно в связке с sendfile.

Меняется ли (и как) la? Становится ли легче/тяжелее винтам?

Меняется ли (и как) la?

la достаточно бесполезный параметр, тебя интересует загрузка проца в процентах

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Прости, true_admin, можешь ли ты ответить на заданный вопрос в любых интересных для тебя терминах? т.е. типа «да, когда я игрался с nginx, то выставив sndbuf=100m я сбросил загрузку проца с 100% до 0%»

Если ты не можешь сказать что-либо подобного, то какая разница la или cpu usage?

funny_falcon ()
Ответ на: комментарий от funny_falcon

Если ты не можешь сказать что-либо подобного

не, не могу. Но я бы взял и померял т.к. просто из опыта чтения nginx-ru в разных ядрах всё по-разному. Чужой опыт не обязательно будет применим. Тем более что там ещё есть AIO, например, который тоже может быть полезен. Лучше опиши свою задачу. У тебя файлопомойка/видеохостинг?

какая разница la или cpu usage?

cpu usage (или cpu idle) это мера загруженности проца. Она ясно говорит сколько ещё можно выжать из сервера.

Что такое la вряд ли кто скажет (в «теории» это средняя длина очереди на выполнение за единицу времени, бла-бла-бла, но в cfs, например, очередей как таковых нет), но это точно не тот параметр который однозначно характеризует загруженность сервера. Он может быть очень большой при незагруженном cpu если у тебя, например, много rt-процессов. Причём это не тот параметр по которому можно сравнивать сервера т.к. на разном оборудовании с разными версиями ядра и разными настройками планировщика оно может отличаться в разы. Поэтому я не понимаю зачем оно вообще нужно.

true_admin ★★★★★ ()
Ответ на: комментарий от funny_falcon

Вот интересная статья на тему la http://lwn.net/Articles/504013/ если интересно как оно считается.

По-моему, из неё ясно следует что этой метрике вообще доверять нельзя т.к. её часто ломаютменяют.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

У тебя файлопомойка/видеохостинг?

Да

Что такое la вряд ли кто скажет... Поэтому я не понимаю зачем оно вообще нужно.

Ну, конкретно из экспериментов: если la поднялся до ~23 и держится в полке, то пришла северная лисичка - маленкий файлик начинает отдаваться не за доли секунды, а за несколько секунд или даже десятков секунд (т.е. очевидно, что это задержка перед отдачей файла).

Согласен, что на разных машинах/ядрах его абсолютная величина может меняться, но на конкретной машине его увеличение/уменьшение/полка очень показательны и корелирует и с задержкой ответа и с общей производительностью (если la в полке, то общая производительность падает)

funny_falcon ()
Ответ на: комментарий от funny_falcon

думается мне, у тебя все упирается в харды
ты в top посмотри загрузку параметра wa (находиться в одной строчке с cpu)

kam ★★ ()
Ответ на: комментарий от kam

думается мне, у тебя все упирается в харды
ты в top посмотри загрузку параметра wa (находиться в одной строчке с cpu)

Харды - это отдельный вопрос. Поделюсь, что aio + большой output_buffers всё-таки помогли.

Но интересно, что по-мимо этого можно сделать: есть ли смысл в sendfile? влияет ли размер sndbuf?

funny_falcon ()
Ответ на: комментарий от funny_falcon

маленкий файлик начинает отдаваться не за доли секунды, а за несколько секунд или даже десятков секунд

Оно может быть связано с la, но лучше оперировать всё же временем ответа на запрос и iowait (то что wa в top). Вот тут напрямую будет видно сколько времени сервер простаивает в ожидании дисковой подсистемы и можно будет понять как и на сколько настройки на это влияют.

А сам по себе sendmail снижает загрузку проца, а не ускоряет диски (за счёт того что файл отдаётся ядром напрямую). Теоретически. На практике лучше мерять во всех режимах потому что многие параметры связаны.

Конкретно по sndbuf выскажу предположение что при sendfile он не влияет т.к. файлы читают не в буффер, а на них делается mmap и так и отдаётся. Возможно, я не прав. Возможно так же aio не работает вместе с sendfile (см. http://nginx.org/ru/docs/http/ngx_http_core_module.html#aio). В таком случае всё зависит от того сколько у тебя одновременных клиентов. Если их очень много то у тебя ядерная память может тупо кончится. А может и нет, я не могу найти док по тому сколько памяти доступно ядру на amd64. Знаю только что раньше для freebsd было жёсткое ограничение в 2гига.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Конкретно по sndbuf выскажу предположение

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

funny_falcon ()
Ответ на: комментарий от funny_falcon

результаты эксперимента пока не получается интерпретировать

соображения из опыта

Вот соображение из лично опыта как можно интерпретировать результаты эксперимента: берется утилита мониторинга. Я для этого брал collectd, но подойдет хоть bash скрипт. Замеряем, например: загрузку CPU по каждому ядру, LA и кол-во обработанных nginx-ом соединений. Строим графики за день(неделю, час, ), наблюдаем. Меняем настройки, ждем, сравниваем графики с графиками прошлых экспериментов. На сильно нагруженных серверах я делал еще дополнительный график - %cpu/кол-во обработанных соединений. Это что-то вроде меры производительности. Сколько процессора уходит на обработку одного запроса. Усредненно конечно же.

Нет волшебного параметра конфига, который всё резко сделает хорошо. А если и есть, то, как уже упоминал true_admin, в зависимости от дистрибутива/ядра он может и не заработать или еще хуже.

fjoe ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.