I've narrowed this down to JkOptions +FlushPackets
and some combination of workers.properties configurations causing it.  I'm 
trying to pinpoint which combination.

Opened the following bug:
https://issues.apache.org/bugzilla/show_bug.cgi?id=56733

Andy


On Mon, 2014-07-07 at 19:58 +0000, Wang, Andy wrote:


On Mon, 2014-07-07 at 15:51 +0000, Wang, Andy wrote:
> We have a customer that's seeing a very slow memory leak under certain
> circumstances that we haven't yet been able to pinpoint.  I can
> reproduce it, but it requires a very particular method of downloading
> files that I don't quite understand yet. (not entirely sure how this
> would impact mod_jk either).  Our customer is still on an older mod_jk
> 1.2.37 but I'm able to see the behavior on 1.2.40.
>
> They had Microsoft analyze a memory dump and Microsoft came to the
> analysis that mod_jk was leaking 8k at a time and this is the stack of
> each allocation:
> Function                            Destination
> libapr_1!apr_palloc+212             msvcrt!malloc
> libaprutil_1!apr_brigade_create+11  libapr_1!apr_palloc
> libhttpd!ap_rflush+19               libaprutil_1!apr_brigade_create
> mod_jk+3183a                        libhttpd!ap_rflush
> mod_jk+9729
> mod_jk+f3bd
> kernel32!TlsSetValueStub
> ntdll!_except_handler4
> msvcrt!_except_handler4
> ntdll!_except_handler4
> ntdll!FinalExceptionHandler
> msvcrt!_threadstartex
>
> I'm far far from a Windows developer :( so I'm slowly getting a system
> configured to do the debugdiag analysis that Microsoft did with the pdb
> files to get the actual symbols.  This will take me some time so I
> thought I'd mail here to see of anyone has seen anything similar or if
> there's any thoughts on what would be slowly leaking the 8k through
> mod_jk.
>
> If not, I'll try to get the real stack shortly once I get debugdiag
> figured out.
>
> Thanks,
> Andy
>

Managed to reproduce this on httpd 2.2.27 and mod_jk 1.2.40

Here's the stack I'm pulling from Microsoft's debugdiag:

Function   Destination
libapr_1!allocator_alloc+d6   msvcr100!malloc
libapr_1!apr_palloc+d9   libapr_1!allocator_alloc
libaprutil_1!apr_brigade_create+11   libapr_1!apr_palloc
libhttpd!ap_rflush+19   libaprutil_1!apr_brigade_create
mod_jk!ws_flush+1a   libhttpd!ap_rflush
mod_jk!ajp_process_callback+586
mod_jk!ajp_get_reply+c4   mod_jk!ajp_process_callback
mod_jk!ajp_service+60a   mod_jk!ajp_get_reply
mod_jk!service+82f
mod_jk!jk_handler+6ea
libhttpd!ap_run_handler+25
libhttpd!ap_invoke_handler+a2   libhttpd!ap_run_handler
libhttpd!ap_process_request+3e   libhttpd!ap_invoke_handler
libhttpd!ap_process_http_connection+52   libhttpd!ap_process_request
libhttpd!ap_run_process_connection+25
libhttpd!ap_process_connection+33   libhttpd!ap_run_process_connection
libhttpd!worker_main+a7   libhttpd!ap_process_connection
msvcr100!_callthreadstartex+1b
msvcr100!_threadstartex+64
kernel32!BaseThreadInitThunk+e
ntdll!__RtlUserThreadStart+70
ntdll!_RtlUserThreadStart+1b   ntdll!__RtlUserThreadStart
msvcr100!_threadstartex

I have a relatively large file I'm downloading through a servlet
(unfortunately I didn't write the servlet and am not completely familiar
with what they're doing) and memory slowly slowly grows and isn't
released.  300mb file grows by a few megs each download.

I can't reproduce with the default tomcat file servlet so not sure what
the deal here is.

Going to poke some more but hoping for some ideas.

Thanks,
Andy

B�KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKCB��[��X��ܚX�KK[XZ[�\�\��][��X��ܚX�P�X�]
 �\X�K�ܙ�B��܈Y][ۘ[��[X[��K[XZ[�\�\��Z[�X�] �\X�K�ܙ�B�


Reply via email to