Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Аллокация объектов переменного размера на shared memory
- To: nginx-ru@xxxxxxxxx
- Subject: Аллокация объектов переменного размера на shared memory
- From: "megalodon" <nginx-forum@xxxxxxxx>
- Date: Wed, 30 Oct 2013 14:42:12 -0400
- Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=helium.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=wYcO2HUITV20PHpxPZnBc+Z9WbFju2xuy0lKj3iSMVQ=; b=6yJ8JWilMWydsg5SEAH2Bv9nqgnj+SaJx9UyHUiFsjuZSY8UXRQcZAt4ChIBDPq4YOgEJjmwMuk6F8bCcARLb7jLfM7HDOV5StVijVB6E2CXhJnX6p051NDtJ80De2zaqZII6PvgxMBYB2jKVSLzgdEr7T7fMNx/TdcmAx+g2Ec=;
Всем привет.
Столкнулся с такой проблемой: допустим, есть дерево в shared memory, где
ключ - ip адрес, а значение - структура, которая хранит определенную
информацию связанную с этим ip.
С ip необходимо также связать информацию о том, на какие uri он ходил, какие
рефереры присылал, какие ua, и прочие строки. Получается, примерно так:
ip_tree->ip_node ---> per_ip_tree->node. Создать это не проблема, но при
удалении ip_node, скажем по тайм-ауту, необходимо пройтись по всему дереву и
сделать free для указателей всех нод, т.к. ноды в per_ip_tree выделялись по
мере необходимости.
Тут же возникает мысль: выделить сразу большой блок и на нем сделать
ngx_slab_init(). А когда нам потребуется удалить per_ip_tree - будет
достаточно всего лишь сделать один free для всего этого блока, т.к. все ноды
этого per_ip_tree были выделены исключительно из него.
Вопрос: адекватен ли такой подход в данной ситуации? Если нет, какие можете
подсказать варианты?
Заранее всех благодарю.
Posted at Nginx Forum:
http://forum.nginx.org/read.php?21,244268,244268#msg-244268
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|