Re: проблема с fastcgi_cache_lock
Maxim Dounin
mdounin на mdounin.ru
Сб Июн 16 07:47:51 UTC 2012
Hello!
On Fri, Jun 15, 2012 at 07:33:34PM -0700, Konstantin Svist wrote:
> 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мс...
В идеале - да, в текущей реализации - после 500 ms или
fastcgi_cache_lock_timeout, что наступит раньше.
Maxim Dounin
Подробная информация о списке рассылки nginx-ru