Странное поведение кэша 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