MemoryLeakFilter
The MemoryLeakFilter can be helpful to detect leaks. Use it if you think that the memory usage grows continually. The MemoryLeakFilter logs an error if all allocated bytes during a request are not freed when the request returns to the frontend. There are some filters that keep data with a longer lifetime than requests, so that even if the message is logged, this has not to be a "real" leak. The MemoryLeakFilter only covers request based leaks. Leaks within objects with a longer lifetime than a request are not covered by this filter. All known filters, which allocate data with a longer lifetime than requests are not taken into account by the MemoryLeakFilter, but there may be some special configuration that could still cause a potential leak.
To use the MemoryLeakFilter,
Preload the library libNevisMemoryLeakLib.so via LD_PRELOAD. Just add the following line to your env.cfg (where
<path_to_the_lib>
is usually '/opt/nevisproxy/webapp/WEB-INF/lib'):LD_PRELOAD=<path_to_the_lib>/libNevisMemoryLeakLib.so
Restart nevisProxy afterwards.
Once a potential leak occurs, the following entry is logged into the log file:
2014 09 17 13:18:49.610 isi3web MemLeakFlt 14606.00583.390e-14109563294359187-148838d026a-00000000 3-ERROR : MemoryLeakMemWrapper_1_0::_cleanup: (MemoryLeakFilter) potentially leaked 24 bytes for request 'POST /servlet/connector/http/proxy1/request/'. (ALLOCATED 24 bytes at 0x3a7e380: : no callstack available (0))
Use the MemoryLeakFilter only on a test environment, not in production, because there could be a minor performance impact.
The MemoryLeakFilter is supported only on Linux.
ch::nevis::nevisproxy::filter::debug::MemoryLeakFilter
libNPDebugFilters.so.1
Configuration
DumpCallstackInLog
- Type: Boolean
- Usage Constraint: optional
- Default:
false
Dump the callstack into the log-file.