Оптимизация по-памяти FreeBSD + nginx под выдачу картинок

Vitaly Belenky heman777 на yandex.ru
Вт Май 31 16:56:58 MSD 2011


Имеем веб-проект с большой посещаемостью. На проекте наличиствует 
большое кол-во картинок.

Вопрос следующий. Есть железка на SATA, хочется оптимизировать систему 
так, что-бы она жрала всю доступную оперативную память под файловый кэшь 
и минимально обращалась к диску. Картинки меняются редко, вернее вообще 
не меняются. Запись происходит крайне редко.

Описание машины

CPU: Intel(R) Xeon(R) CPU           X3450  @ 2.67GHz (2666.65-MHz 
K8-class CPU)
   Origin = "GenuineIntel"  Id = 0x106e5  Family = 6  Model = 1e 
Stepping = 5

real memory  = 17179869184 (16384 MB)
avail memory = 16470654976 (15707 MB)

FreeBSD/SMP: Multiprocessor System Detected: 8 CPUs
FreeBSD/SMP: 1 package(s) x 4 core(s) x 2 SMT threads


ad4: 953869MB <Seagate ST31000524NS SN11> at ata2-master UDMA100 SATA 3Gb/s

Настройки системы

Увеличен maxfiles и maxfilesperproc

 > sysctl -a | grep files

kern.maxfiles: 1600000
kern.maxfilesperproc: 1500000

Патиция с картинка смонтирована с noatime
 > cat /etc/fstab

# Device        Mountpoint    FStype    Options        Dump    Pass#
/dev/ad4s1b        none        swap    sw        0    0
/dev/ad4s1a        /        ufs    rw        1    1
/dev/ad4s1e        /usr        ufs    rw,noatime        2    2
/dev/ad4s1d        /var        ufs    rw        2    2
/dev/cd0        /cdrom        cd9660    ro,noauto    0    0


В nginx включено кэширование дескрипторов
open_file_cache             max=10000;
open_file_cache_valid       360s;
open_file_cache_min_uses    2;
open_file_cache_errors      on;

access логи выключены


Текущие показатели системы

 > sysctl -a | grep "kern.openfiles"

kern.openfiles: 40623

 > iostat -dx 1

                         extended device statistics
device     r/s   w/s    kr/s    kw/s wait svc_t  %b
ad4       55.9   2.6   754.6    69.9    0  12.9  38
                         extended device statistics
device     r/s   w/s    kr/s    kw/s wait svc_t  %b
ad4       33.0   0.0   401.5     0.0    0   7.7  25
                         extended device statistics
device     r/s   w/s    kr/s    kw/s wait svc_t  %b
ad4       51.9   0.0   452.9     0.0    0   6.5  34
                         extended device statistics
device     r/s   w/s    kr/s    kw/s wait svc_t  %b
ad4       64.8   5.0  1003.0    57.8    1   5.8  40
                         extended device statistics
device     r/s   w/s    kr/s    kw/s wait svc_t  %b
ad4       34.9   0.0   400.7     0.0    1   7.5  26
                         extended device statistics
device     r/s   w/s    kr/s    kw/s wait svc_t  %b
ad4       49.8   0.0   880.7     0.0    0   7.0  33
                         extended device statistics
device     r/s   w/s    kr/s    kw/s wait svc_t  %b
ad4       30.9   1.0   577.9     2.0    0   6.9  21
                         extended device statistics
device     r/s   w/s    kr/s    kw/s wait svc_t  %b
ad4       48.9   0.0   564.3     0.0    0   8.6  37
                         extended device statistics
device     r/s   w/s    kr/s    kw/s wait svc_t  %b
ad4       25.9   0.0   404.8     0.0    0   5.7  15


last pid: 19320;  load averages:  0.16,  0.21,  0.18 
 
                       up 0+02:25:47  15:23:55
163 processes: 2 running, 161 sleeping
CPU:  0.1% user,  0.0% nice,  1.0% system,  0.0% interrupt, 98.9% idle
Mem: 139M Active, 4209M Inact, 1623M Wired, 216K Cache, 1285M Buf, 9835M 
Free
Swap: 8192M Total, 8192M Free


Это не очень долгий uptime, но лучшее что я видел это 6000M Inact.

Как заставить сожрать остальную память?



-- 
Best regards, Vitaly Belenky
tel. : 8-909-955-67-20
email: heman777 на yandex.ru



Подробная информация о списке рассылки nginx-ru