Отдаём статику nginx'ом

/00:00 30-Ноя--1

Начиная с версии 0.8.11 в nginx появилась новая возможность для раздачи статики — использование AIO (Asyncronous Input-Output — неблокирующий ввод-вывод) для Linux и FreeBSD.

Чем это событие знаменательно? До этого момента nginx использовал неблокирующий режим только при работе с сетью — любая работа с файлами блокировала рабочий процесс. К чему это приводило? Если у вас есть много разного контента, который не весь находится в кэше ОС (фотохостинг, etc) — то рано или поздно все 50, 150, 200 процессов будут ждать дисковые операции и не смогут обслужить нового клиента — даже если нужный ему контент можно отдать из файлового кэша или запросить с бэкенда.


Как с этим боролись раньше?


Теперь появился новый способ, задействовав небольшое количество рабочих процессов, раздавать всё в неблокирующем режиме. Тестирование будет эмулировать нагрузку на файловый/картиночный хостинг — отдача большого числа относительно небольших файлов. Диск при этом упирается в скорость random seek.

Методика тестирования:

image
image

Выводы: судя по тому, что с AIO удалось добиться 300 rps, что заметно превышает seek rate для используемых дисков, ядро FreeBSD умеет внутри переупорядочивать запросы, идущие через AIO, что даёт значительный выигрыш при отсутствии «умного» raid-контроллера с большим кэшем. При использовании же традиционного метода — большое количесто рабочих процессов, если они все уйдут на диск, сказывается на производительности лишь отрицательно.

Поделиться с друзьями

Twitter Mail Facebook MySpace Linkedin Digg Google Delicious Stumbleupon Addthis
Все права на материалы принадлежат их уважаемым авторам. редакция портала не может нести ответственность за достоверность информации, содержащейся в комментариях пользователей.