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

http://smartysmile.ru00: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
Все права на материалы принадлежат их уважаемым авторам. редакция портала не может нести ответственность за достоверность информации, содержащейся в комментариях пользователей.