Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: BUG? nginx 0.8.1, caching
On Mon, Jun 15, 2009 at 03:30:49AM +0300, Denys Fedoryschenko wrote:
> 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
Нет, md5 - это имя файла в кэше, считается от KEY:.
А в начале файла служебная информация - expires, начало ответа, длина заголвка
и прочее.
> Кстати, в письме Игоря Сысоева видел такое:
> >Each key takes 128 bytes in shared memory zone. Therefore you need 6.1G zone:
> Почему 128 байт? Вроде как ключ 128 бит, т.е. 16 байт. Или это из-за хешей
> для поиска?
Потому что помимо самого md5 ключа в зоне хранится информация о закэшированом
файле, и кроме того, указатели в дереве и в очереди. Ну и потом объём
выравнивается до степени двойки - так устроен аллокатор.
--
Игорь Сысоев
http://sysoev.ru
|