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, замедляя все остальное.