Mercurial > hg > nginx
comparison src/core/ngx_palloc.c @ 2917:62010fa37ead
try to reuse last 4 free large allocation links
this fixes a pool growing for multi-requests keepalive connections
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 03 Jun 2009 13:57:28 +0000 |
parents | 3a8a53c0c42f |
children | cb7d05c097db |
comparison
equal
deleted
inserted
replaced
2916:759ff3e380e3 | 2917:62010fa37ead |
---|---|
212 | 212 |
213 static void * | 213 static void * |
214 ngx_palloc_large(ngx_pool_t *pool, size_t size) | 214 ngx_palloc_large(ngx_pool_t *pool, size_t size) |
215 { | 215 { |
216 void *p; | 216 void *p; |
217 ngx_uint_t n; | |
217 ngx_pool_large_t *large; | 218 ngx_pool_large_t *large; |
218 | 219 |
219 p = ngx_alloc(size, pool->log); | 220 p = ngx_alloc(size, pool->log); |
220 if (p == NULL) { | 221 if (p == NULL) { |
221 return NULL; | 222 return NULL; |
223 } | |
224 | |
225 n = 0; | |
226 | |
227 for (large = pool->large; large; large = large->next) { | |
228 if (large->alloc == NULL) { | |
229 large->alloc = p; | |
230 return p; | |
231 } | |
232 | |
233 if (n++ > 3) { | |
234 break; | |
235 } | |
222 } | 236 } |
223 | 237 |
224 large = ngx_palloc(pool, sizeof(ngx_pool_large_t)); | 238 large = ngx_palloc(pool, sizeof(ngx_pool_large_t)); |
225 if (large == NULL) { | 239 if (large == NULL) { |
226 ngx_free(p); | 240 ngx_free(p); |