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