проблема с fastcgi_cache_lock
Konstantin Svist
fry.kun на gmail.com
Сб Июн 16 02:33:34 UTC 2012
Nginx 1.2.0
Конфиг:
server {
listen 8081;
location / {
proxy_read_timeout 500ms;
proxy_pass http://localhost:8082;
error_page 404 500 502 503 504 =200 @fallback;
}
location @fallback { echo "oops"; }
}
server {
listen 8082;
fastcgi_temp_path /dev/shm/nginx_fcgi_temp 1 2;
fastcgi_cache_path /dev/shm/nginx_fcgi_cache levels=1:2
keys_zone=mycache:500m max_size=5120m;
fastcgi_cache_use_stale error timeout updating;
fastcgi_cache_lock on;
fastcgi_cache_key $request_uri;
fastcgi_cache_valid 200 2h;
fastcgi_cache_bypass $http_pragma $http_authorization;
fastcgi_no_cache $http_pragma $http_authorization;
fastcgi_cache mycache;
location / {
fastcgi_pass backend;
}
}
Запускаю тест:
ab -n5 -c5 'http://localhost:8081/?q=foobar'
Результат:
1й запрос идёт на бэкенд, на обработку 45мс; остальные 4 получают
"oops" после 500мс
Вторая попытка:
1й запрос идёт на бэкенд, на обработку 37мс; 3 получают "oops" после
500мс; последний получает результат из кэша, но только после 500мс
Что происходит?
Я думал что последние 4 должны получить не-"oops" результат после 45мс...
Подробная информация о списке рассылки nginx-ru