Кеширование проблема: перестает кешировать
Dmitry E. Oboukhov
unera at uvw.ru
Sat Jul 27 21:54:40 UTC 2013
продолжаю играться с кешированием
на тестах (в том числе конкурентных, ab) все было хорошо - попробовали
под нагрузкой.
nginx 1.2.1
конфиг такой:
proxy_cache_path /var/lib/nginx/proxy levels=1:2 keys_zone=proxy:30m max_size=1G;
location ~ /cached/ {
proxy_pass http://backend;
proxy_cache proxy;
proxy_buffering on;
proxy_cache_valid 200 60m;
proxy_cache_lock on;
proxy_method GET;
proxy_cache_use_stale updating;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header "X-Taxi-Location" "/cached";
proxy_set_header Cookie '';
proxy_ignore_headers 'Set-Cookie';
proxy_cache_key $uri;
proxy_hide_header 'Set-Cookie';
expires off;
}
Все запросы что имеют в урле /cached/ кешируются на 60m
Но есть проблема.
пока нагрузка небольшая все замечательно:
смотрим логи nginx (grep /cached/) а так же смотрим логи бакенда
(такой же греп). Видим что на nginx приходят сотни запросов, а на
бакенд (апач) единицы.
Все хорошо.
затем повышаем нагрузку и где-то на 100-500 запросов в секунду на апач
начинают "просачиваться" запросы минуя кеш.
то есть нормальное соотношение у нас там если он все кеширует = где-то
1000:1 (то есть на 1000 запросов nginx приходится один на бакенд).
но при работе под нагрузкой соотношение меняется к 1000:500 и местами
даже к 1000:800.
На апаче вижу строго одинаковые запросы (он эту нагрузку держит,
отдает 200'ки). в tcpdump никаких заголовков, касающихся кеша не вижу.
апач всегда выдает заголовок x-accel-expires: 600 для всех ответов по
роуту /cached/.
в error логе nginx ошибок никаких про кеш нет.
правда на старте выдает вот такую фигатень:
2013/07/27 23:53:32 [info] 9945#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf:65
2013/07/27 23:53:32 [alert] 9952#0: epoll_ctl(1, 0) failed (1: Operation not permitted)
2013/07/27 23:53:32 [alert] 9952#0: failed to register channel handler while initializing push module worker (1: Operation not permitted)
2013/07/27 23:53:32 [alert] 9953#0: epoll_ctl(1, 0) failed (1: Operation not permitted)
2013/07/27 23:53:32 [alert] 9953#0: failed to register channel handler while initializing push module worker (1: Operation not permitted)
2013/07/27 23:53:32 [alert] 2232#0: cache manager process 9952 exited with fatal code 2 and cannot be respawned
В какую сторону покопать?
--
. ''`. Dmitry E. Oboukhov
: :’ : email: unera at debian.org jabber://UNera@uvw.ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20130728/a4b325cd/attachment.bin>
Подробная информация о списке рассылки nginx-ru