Странное поведение кэша nginx

Alexander Pyhalov alp на rsu.ru
Ср Июн 22 14:21:44 MSD 2011


Здравствуйте.
У меня возникла достаточно странная проблема.
Когда закешированный статический файл изменяется, nginx возвращает его 
либо с большим таймаутом в конце передачи файла (около минуты) (в 
частности, если из текстового файла удалить строку), либо возвращает 
часть файла (обрезает его, в результате клиент получает какой-то мусор) 
(в частности, если в текстовый файл добавить строку). Проблема 
наблюдается только при изменении файла (при изменении mtime проблемы нет).
При отключении кэша проблема исчезает (но, естественно, нагрузка на 
сервер возрастает). При этом аналогичные конфигурации nginx на других 
серверах работают нормально. Обновление nginx до 1.0.4 не помогает. На 
глюки с памятью сервера не похоже (затрагивает только nginx, остальные 
приложения работают нормально, пробовал запускать memtester на свободной 
области памяти, он говорит, что все в порядке).

Конфигурация следующая:
server {
         listen   80; ## listen for ipv4
         server_name ...;
         access_log off;
         client_body_buffer_size 128k;

         open_file_cache max=2048 inactive=600s;
         open_file_cache_valid 2000s;
         open_file_cache_min_uses 1;
##      open_file_cache_errors on;

         location ~ /\.(ht|svn) {
                 deny  all;
         }

         location ~ \.(lib|inc|admin|handler|action|sql|log)$ {
                 deny  all;
         }

         location ~ /(crons|scripts|shared)/ {
                 deny all;
         }


         location ~ \.php$ {
#               limit_conn one 2;
                 include       fastcgi_params;
                 fastcgi_index       index.php;
                 fastcgi_param       SCRIPT_FILENAME 
/path/to/www$fastcgi_script_name;
                 fastcgi_buffer_size 64k;
#               fastcgi_buffer_size 4k;
                 fastcgi_buffers 32 256k;
#               fastcgi_buffers 1024 4k;
                  if ($uri !~ "^/images/") {
#                       fastcgi_pass unix:/var/run/fastcgi-mhouse-pool;
                         fastcgi_pass        mhouse_fastcgi;
                 }
         }

         location / {
                 root   /path/to/www;
                 index  index.php;
         }
}

$ uname -a
Linux hostname.provided.here 2.6.35-28-generic #50-Ubuntu SMP Fri Mar 18 
18:42:20 UTC 2011 x86_64 GNU/Linux

$ nginx -V
nginx version: nginx/0.7.67
TLS SNI support enabled
configure arguments: --conf-path=/etc/nginx/nginx.conf 
--error-log-path=/var/log/nginx/error.log 
--http-client-body-temp-path=/var/lib/nginx/body 
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi 
--http-log-path=/var/log/nginx/access.log 
--http-proxy-temp-path=/var/lib/nginx/proxy 
--lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid 
--with-debug --with-http_dav_module --with-http_flv_module 
--with-http_geoip_module --with-http_gzip_static_module 
--with-http_realip_module --with-http_stub_status_module 
--with-http_ssl_module --with-http_sub_module --with-ipv6 --with-mail 
--with-mail_ssl_module 
--add-module=/build/buildd/nginx-0.7.67/modules/nginx-upstream-fair

Есть какие-нибудь идеи, как искать причину подобного поведения?
-- 
С уважением,
Александр Пыхалов,
системный администратор ЮГИНФО ЮФУ.



Подробная информация о списке рассылки nginx-ru