а кто-нибудь пробовал ncache
Viatcheslav E. Kouznetsov
slava at auto.ru
Thu Feb 28 11:12:07 MSK 2008
В общем ситуация такая...
у меня стоит связка
storage массив привязан к серверу на нем nginx
далее другие железки на них ncache и nginx наружу
Раньше вместо ncache стоял squid.
Сборка на CentOS проходит с песнями (пришлось поправить один хидер)
Скрипт для создания кеш-директорий имеет в самом начале exit 0 :)))))
Конфиг у меня такой
-----------------------------------
user nobody nobody;
worker_processes 4;
worker_rlimit_nofile 81920;
worker_priority -10;
#error_log /dev/null;
error_log logs/error.log;
pid /var/run/ncache.pid;
events
{
worker_connections 20480;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 15;
cache_max_size 25;
upstream backend1 {
server 192.168.0.14:80;
cachedir /servers/ncache1/data0/ 128 128;
cachedir /servers/ncache1/data1/ 64 64;
}
upstream backend2 {
server 192.168.0.14:80;
cachedir /servers/ncache2/data0/ 128 128;
cachedir /servers/ncache2/data1/ 64 64;
}
upstream backend3 {
server 192.168.0.14:80;
cachedir /servers/ncache3/data0/ 128 128;
cachedir /servers/ncache3/data1/ 64 64;
}
upstream backend4 {
server 192.168.0.14:80;
cachedir /servers/ncache4/data0/ 128 128;
cachedir /servers/ncache4/data1/ 64 64;
}
server {
listen 8080;
set $purge_uri $request_uri;
access_log off;
location / {
if ($request_method ~ "PURGE") {
rewrite (.*) /PURGE$1 last;
}
proxy_pass http://backend1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#here you can ignore any client use "Cache-Control:no-cache" headers
#refresh the cache
proxy_ignore_client_no_cache off;
}
#allow some one who can use http PURGE method delete the caches
location /PURGE/ {
internal;
allow 10.1.1.0/24;
deny all; purge;
}
#use "http://{serverip}/status_infos" watch nginx services status
location /status_infos {
access_log off;
stub_status on;
}
}
server {
listen 8081;
set $purge_uri $request_uri;
access_log off;
location / {
if ($request_method ~ "PURGE") {
rewrite (.*) /PURGE$1 last;
}
proxy_pass http://backend2;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#here you can ignore any client use "Cache-Control:no-cache" headers
refresh the cache
proxy_ignore_client_no_cache off;
}
#allow some one who can use http PURGE method delete the caches
location /PURGE/ {
internal;
allow 10.1.1.0/24;
deny all; purge;
}
#use "http://{serverip}/status_infos" watch nginx services status
location /status_infos {
access_log off;
stub_status on;
}
}
server {
listen 8082;
set $purge_uri $request_uri;
access_log off;
location / {
if ($request_method ~ "PURGE") {
rewrite (.*) /PURGE$1 last;
}
proxy_pass http://backend3;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#here you can ignore any client use "Cache-Control:no-cache" headers
refresh the cache
proxy_ignore_client_no_cache off;
}
#allow some one who can use http PURGE method delete the caches
location /PURGE/ {
internal;
allow 10.1.1.0/24;
deny all; purge;
}
#use "http://{serverip}/status_infos" watch nginx services status
location /status_infos {
access_log off;
stub_status on;
}
}
server {
listen 8083;
set $purge_uri $request_uri;
access_log off;
location / {
if ($request_method ~ "PURGE") {
rewrite (.*) /PURGE$1 last;
}
proxy_pass http://backend4;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#here you can ignore any client use "Cache-Control:no-cache" headers
refresh the cache
proxy_ignore_client_no_cache off;
}
#allow some one who can use http PURGE method delete the caches
location /PURGE/ {
internal;
allow 10.1.1.0/24;
deny all; purge;
}
#use "http://{serverip}/status_infos" watch nginx services status
location /status_infos {
access_log off;
stub_status on;
}
}
}
-------------------
Т.е. отличие от nginx'а важными параметрами будут
cache_max_size (2 ^ cache_max-size кол-во элементов хранимых в кеше,
т.е. в конфиге 2^25 т.е. порядка 30 млн.)
cachedir собственно директории для кеша. Параметры 128 и 64, что стоят
в конфиге говорят о вложенности, но каким образом я еще не понял.
Сам кеш он чистит удаляя самые старые объекты. Если необходима принудительная
очистка, то делается PURGE-запрос.
Теперь что касается сравнения со squid'ом...
Мне не совсем корректно их сравнивать, т.к. у меня стоял cache_mem в 2Гб
т.е. я сквиду отдавал много памяти. Под нагрузкой он отъедал еще. И запущено
на каждой железке было по четыре сквида.
В сумме получалось порядка 14-15Гб.
ncache же в приведенной выше конфигурации съедает порядка 9.5Гб.
По скорости - ncache, на взгляд, работает быстрее. Если раньше с одной железки
уходило (в среднем) 60Mb/s, сейчас прим. 80Mb/s
Вот, вроде бы и все. Если есть вопросы - welcome.
Удачи,
Слава.
В сообщении от Thursday 28 February 2008 09:46:18 Михаил Монашёв написал(а):
> Здравствуйте Viatcheslav,
>
> VEK> Та-ак....поставил сию весчь на боевые сервера...Неделя = полёт
> нормальный VEK> Кому интересно - могу отписать.
>
> Отпиши плз как его конфигурировать и как он кэш чистит. Из того, что
> есть на сайте, это совершенно не понятно.
>
> --
>
> С уважением,
> Михаил Монашёв, SoftSearch.ru
> mailto:postmaster at softsearch.ru
> ICQ# 166233339
> http://michael.mindmix.ru/
> Без бэкапа по жизни.
More information about the nginx-ru
mailing list