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