<div>It is suspicious that your problem is caused by ngx_pcalloc().</div><div><br></div><div>When you allocated a large size of memory, nginx does not allocate it in pool, instead, it uses standard malloc() in C, because the size is larger than the pool size. When a block is allocated by malloc(), it may not be returned to OS even if it has been freed by free(). Why? GCC memory management layer can cache the blocks in process for future allocation.</div>
<div><br></div><div>I don't understand why you must copy the input chain of client. In fact, if you can reap the buffers-chain together, you can directly write each part into log file separately. Moreover, first create a hole in file, then fill the log into a hole will get rid of interlace
among different log records.<br></div><br><div class="gmail_quote">On Fri, Oct 5, 2012 at 12:20 AM, Maxim Dounin <span dir="ltr"><<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<div class="im"><br>
On Thu, Oct 04, 2012 at 02:13:17PM +0900, ±è¿µÁø wrote:<br>
<br>
> hi, i am web server(nginx) module developer.<br>
> my nginx modules has a major problem.<br>
> maybe... this problem is seem to nginx core bug.<br>
> i hope this is my module problem. Because, i wish the problem to be settled<br>
> soon.<br>
><br>
</div>> *my module function:*<br>
<div class="im">> large post data logging from specified file(nginx.conf setting :<br>
> /home1/test_access.log)<br>
</div>> *problem:*<br>
<div class="im">> constant use of memory(nginx-1.2.2 , same situation)<br>
> [image: º»¹® À̹ÌÁö 1]<br>
<br>
</div>[...]<br>
<div class="im"><br>
> rc_post = ngx_http_read_client_request_body(r,<br>
> ngx_testmodule_post_read_request_body);<br>
><br>
> ngx_testmodule_resheader(r);<br>
> ...<br>
> return ngx_http_send_response(r, NGX_HTTP_OK, &ngx_http_text_type, &cv);<br>
> }<br>
><br>
><br>
> i have tested my nginx module. but... i don't know.. difficult problem..<br>
> i am turning to you for help.<br>
<br>
</div>One obvious problem in your code is that you use<br>
ngx_http_read_client_request_body() incorrectly.<br>
<br>
After a call to ngx_http_read_client_request_body() you _must_<br>
follow the pattern<br>
<br>
    rc = ngx_http_read_client_request_body(r, ...);<br>
<br>
    if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {<br>
        return rc;<br>
    }<br>
<br>
    return NGX_DONE;<br>
<br>
See e.g. ngx_http_proxy_module.c for an example.  Failing to do so<br>
will likely result in request hangs/socket leaks.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Maxim Dounin<br>
<a href="http://nginx.com/support.html" target="_blank">http://nginx.com/support.html</a><br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
nginx-devel mailing list<br>
<a href="mailto:nginx-devel@nginx.org">nginx-devel@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-devel" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-devel</a></div></div></blockquote></div><br><br clear="all"><br>-- <br>


<p><span lang="EN-US">--</span></p>

<p><span lang="EN-US">Charles Chen</span></p>

<p><span lang="EN-US">Software Engineer</span></p>

<p><span lang="EN-US">Server Platforms Team at Taobao.com</span><br></p><br>