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

Почему nginx 1.0.0 не использует кеш открытых файлов ядра в Gentoo? (высокий айовейт)

free -m
             total       used       free     shared    buffers     cached
Mem:          7996       2043       5952          0         73        140
-/+ buffers/cache:       1830       6165
Swap:         7812         15       7797

nginx -v

nginx: версия nginx: nginx / 1.0.0

uname -a

Linux tr1 2.6.38-gentoo-r6 # 4 SMP Вт, 27 сентября, 11:24:13 EEST 2011 x86_64 Intel (R) Xeon (R) CPU E5620 @ 2,40 ГГц GenuineIntel GNU / Linux

cat /proc/version

Linux версии 2.6.38-gentoo-r6 (root @ tr1) (gcc версия 4.4.5 (Gentoo 4.4.5 p1.2, pie-0.4.5)) # 4 SMP Вт, 27 сентября, 11:24:13 EEST 2011

grep directio /etc/nginx/nginx.conf
[nothing]
grep open_file /etc/nginx/nginx.conf
open_file_cache max=2000 inactive=3600s;
[...]

Мне ничего не известно о отключении кеширования файлов ядра. Я добавил и удалил open_file_cache в nginx.conf. Тем не менее, похоже, что nginx все читает прямо с диска. У нас есть несколько машин nginx с «идентичной» конфигурацией nginx (балансировка нагрузки восходящего потока php плюс статическая доставка файлов), которые ДЕЙСТВИТЕЛЬНО используют кеш открытых файлов ядра с гораздо меньшей нагрузкой на ввод-вывод.

В этом случае на той же машине работает apache.

iostat, iotop -o

Обычно показывает постоянное использование диска (отличается от нескольких идентичных балансировщиков нагрузки nginx на других машинах), где nginx является основным оператором ввода-вывода (доставка статических файлов)

htop

Дает хорошее представление о свободе / буферах / памяти. И подтверждает то, что говорит бесплатное. 1 ГБ памяти используется процессами. Некоторые 6 ГБ памяти не используются. Лишь небольшая часть оставшейся памяти используется для кэширования ядра (htop указывает, что это желтая часть использования памяти)

Мы хотели бы выяснить, почему nginx доводит дисковый ввод-вывод до 100%, когда остается несколько гигабайт ОЗУ (для кэширования открытых файлов ядра).

PS: Как я уже сказал, у нас работает несколько подобных балансировщиков php-upstream с дополнительной доставкой статических файлов с помощью nginx. Но только этот идет на высокую среднюю нагрузку из-за чрезмерного iowait, замедляя все остальное.