BUG? nginx 0.8.1, caching
Denys Fedoryschenko
denys at visp.net.lb
Mon Jun 15 04:30:49 MSD 2009
nginx 0.8.1
Платформа x86 (32-bit), Gentoo Linux 2.6.30
Использую nginx как кеш (сквид в некотором плане неэффективен, больше кушает памяти на каждый обьект).
Заметил, что если юзеры тянут один и тот же файл, он появляется в /cache/temp дважды, т.е. и тянется похоже дважды.
Например файлы
www.nuclearcat.com/files/file1.bin
www.nuclearcat.com/files/file2.bin
Оригинальные имена файлов были: 0000000331 и 0000000371
Отличаются они только бинарной строкой (ключ? т.к. 128 бит), но отличаются достаточно странно в этой части, т.к. md5 вроде как не так предсказуем (т.е. меняется обычно весь и закономерностей не прослеживается)
, и http заголовком Date.
См.
00000000 FD 8A 5D 4A │ 84 85 DE 49 │ FD FD 35 4A │ C4 0B D5 46 │ 00 00 AC 00 │ 30 02 21 3C │ 0A 4B 45 59 │ 3A 20 68 74 │ 74 70 2F 2F │ 64 6F 77 6E ý.]J..ÞIýý5JÄ.ÕF..¬.0.!<.KEY: http//down
00000000 F7 8A 5D 4A │ 84 85 DE 49 │ F7 FD 35 4A │ C4 0B D5 46 │ 00 00 AC 00 │ 30 02 B4 09 │ 0A 4B 45 59 │ 3A 20 68 74 │ 74 70 2F 2F │ 64 6F 77 6E ÷.]J..ÞI÷ý5JÄ.ÕF..¬.0.´..KEY: http//down
Кстати, в письме Игоря Сысоева видел такое:
>Each key takes 128 bytes in shared memory zone. Therefore you need 6.1G zone:
Почему 128 байт? Вроде как ключ 128 бит, т.е. 16 байт. Или это из-за хешей для поиска?
Конфиг прилагаю
user nginx nginx;
worker_processes 1;
error_log /var/log/nginx/error_log alert;
events {
worker_connections 8192;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main
'$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
client_header_timeout 10m;
client_body_timeout 10m;
send_timeout 10m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 4 2k;
request_pool_size 4k;
keepalive_timeout 75 20;
ignore_invalid_headers on;
proxy_cache_key $scheme//$host$uri;
# 4000000 objects (128 byte each)
proxy_cache_path /cache/nginx levels=1:2 inactive=2880m keys_zone=one:512m max_size=2000m;
proxy_temp_path /cache/temp;
server {
listen 0.0.0.0:1234;
location / {
proxy_buffering on;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_cache one;
proxy_cache_valid any 30d;
#proxy_ignore_headers Age,Date;
}
}
}
More information about the nginx-ru
mailing list