Welcome! Log In Create A New Profile

Advanced

Не работает proxy_cache_lock on;

Pavel V.
December 17, 2012 12:08PM
Здравствуйте.

Пытаемся внедрять кеширование ответов от скриптов.
Кеширование происходит, но не работает директива proxy_cache_lock.
По логам сервера видно, что на апач одновременно передается несколько запросов,
хотя используется proxy_cache_lock on; и ожидается, что на апач упадет один запрос.

Подскажите, что сделано не так?

Подробности:

nginx version: nginx/1.1.17 , пакет nginx-full из оф. репозитария Debian.

Кусок лога (формат лога приведен ниже, вместе с частью конфигурации):

# tail -f /var/log/nginx/apache1.log |grep /ru/informers/small/
[test] "2.038" 9.2.3.4 - - [17/Dec/2012:16:40:13 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "127.0.0.1:80"
[test] "2.041" 9.2.3.4 - - [17/Dec/2012:16:40:13 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "127.0.0.1:80"
[test] "2.068" 9.2.3.4 - - [17/Dec/2012:16:40:13 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "127.0.0.1:80"
[test] "2.074" 9.2.3.4 - - [17/Dec/2012:16:40:13 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "127.0.0.1:80"
[test] "2.080" 9.2.3.4 - - [17/Dec/2012:16:40:13 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "127.0.0.1:80"
[test] "2.082" 9.2.3.4 - - [17/Dec/2012:16:40:13 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "127.0.0.1:80"
[test] "2.082" 9.2.3.4 - - [17/Dec/2012:16:40:13 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "127.0.0.1:80"
[test] "2.092" 9.2.3.4 - - [17/Dec/2012:16:40:13 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "127.0.0.1:80"
[test] "2.093" 9.2.3.4 - - [17/Dec/2012:16:40:13 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "127.0.0.1:80"
[test] "-" 9.2.3.4 - - [17/Dec/2012:16:40:14 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "-"
[test] "-" 9.2.3.4 - - [17/Dec/2012:16:40:14 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "-"
[test] "2.420" 9.2.3.4 - - [17/Dec/2012:16:40:14 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "127.0.0.1:80"
[test] "-" 9.2.3.4 - - [17/Dec/2012:16:40:14 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "-"
[test] "-" 9.2.3.4 - - [17/Dec/2012:16:40:14 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "-"
[test] "-" 9.2.3.4 - - [17/Dec/2012:16:40:14 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "-"
[test] "-" 9.2.3.4 - - [17/Dec/2012:16:40:14 +0000] 200 "GET /ru/informers/small/51.png HTTP/1.0" 6853 "-" "ApacheBench/2.3" "-"
.... Далее идут логи запросов с ответами только из кэша

Этот лог снят в момент запуска команды
#ab -c 10 -k -n 10000 http://test/ru/informers/small/51.png

Аналогичное поведение видно для той же команды и в момент устаревания уже имеющегося элемента кэша.

Значащие директивы контекста http:

proxy_temp_path /var/cache/nginx/tmp;
proxy_cache_path /var/cache/nginx/test_my_informers levels=1 keys_zone=test_my_informers:10m;

log_format main '[$host] "$upstream_response_time" $remote_addr - $remote_user [$time_local] $status '
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$upstream_addr" ';

Других директив proxy_* в контексте http не описано.
Проксирование настроено только для одного локейшена на данном сервере (первый опыт :-) ).

Конфигурация server используемого вирт хоста:

server {
listen 1.2.3.4:80;
server_name test;

access_log /var/log/nginx/test-access.log;
error_log /var/log/nginx/test-error.log;

root /web/test/htdocs;

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;

location / {
access_log /var/log/nginx/apache1.log main;
access_log /var/log/nginx/test-access.log;
proxy_pass http://127.0.0.1:80;
proxy_read_timeout 60;
}

location ~ /([a-zA-Z]+)/informers/(small|medium|large)/([0-9]+)\.png$ {
access_log /var/log/nginx/apache1.log main;
access_log /var/log/nginx/test-access.log;
expires 5m;
proxy_pass http://127.0.0.1:80;
proxy_cache test_my_informers;
proxy_cache_valid 200 302 304 5m;
proxy_cache_lock on;
proxy_cache_key "$host$request_uri";
proxy_ignore_headers Expires Cache-Control Set-Cookie;
proxy_hide_header Set-Cookie;
}
}

Спасибо за возможные комментарии.




--
С уважением,
Pavel mailto:pavel2000@ngs.ru

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Не работает proxy_cache_lock on;

Pavel V. December 17, 2012 12:08PM

Re: Не работает proxy_cache_lock on;

Maxim Dounin December 18, 2012 06:54AM

Re: Не работает proxy_cache_lock on;

Pavel V. December 18, 2012 07:42AM

Re: Не работает proxy_cache_lock on;

Pavel V. December 23, 2012 03:18AM

Re: Не работает proxy_cache_lock on;

Maxim Dounin December 23, 2012 06:24AM

Re: Не работает proxy_cache_lock on;

Pavel V. December 23, 2012 07:24AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 297
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready