Hi Etienne,

What version are you using? I know that Julian worked on quite some leaks and 
memory leaks were one the main reasons for the Christmas refactoring. But he 
also fixed a lot of things in the 0.6.0 branch. If you're already on 
0.7.0-SNAPSHOT (develop branch) this is something we should definitely 
investigate.

Would it be possible to provide a testcase where I could locally reproduce this 
behavior? Then I could let JProfiler loose on the example and see where the 
memory is leaking to.

Chris



Am 27.02.20, 17:06 schrieb "Etienne Robinet" <[email protected]>:

    Hello,
    after managing to do some read/write with camel, I tried to start fetching 
at specific interval. My goal was being able to fetch at regular pace (like 
every 500ms) to monitor some data. After running some tests, I came across an 
error: 
    
     java.lang.OutOfMemoryError: Java heap space
    
    after rerunning some tests, I saw that the JVM will tak up to 4Gb before 
the crash. After check netstat in Powershell, I realized I was having 50k+ 
different ports occupied on my localhost! I don't know if this has been lokked 
into yet or was never intended to be used like that, but after adding some 
Logs, I can tell that with my route, the app creates a Polling Consumer every 
tick that makes a plcCOnnection.close() when he's done. But after shutting down 
the context, a Plc4xConsumer class will also shutdown a connection. But still, 
in netsat I can see all these open connections for a bit of time. If anyone has 
an idea, that will be great! Here the route: 
    
    <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"; 
default-activation="lazy">
        <camelContext id="S7-PLC-Context" 
xmlns="http://camel.apache.org/schema/blueprint"; streamCache="true" >
            <route>
                <from uri="timer://foo?fixedRate=true&amp;period=1000" />
                <pollEnrich>
                    
<constant>plc4x:s7:tcp://192.168.178.10?address=%25DB1.DBW0:WORD</constant>
                </pollEnrich>
                <setHeader  headerName="fieldName">
                    <constant>default</constant>
                </setHeader>
                <setHeader headerName="fieldQuery">
                    <constant>%MW10:WORD</constant>
                </setHeader>
                <convertBodyTo type="java.lang.Short"/>
                <to uri="plc4x:s7:tcp://192.168.178.10" />
                <log message=" Response code: ${body.getResponseCode(default)} 
at ${date:now:HH:mm:ss}" loggingLevel="INFO" />
            </route>
        </camelContext>
    </blueprint>
    
    
    and the LOGGER :
    17:04:55.883 INFO [pipe-bundle:start 67] Blueprint bundle 
s7-camel/0.1.0.SNAPSHOT has been started
    17:04:55.884 INFO [Blueprint Event Dispatcher: 1] Attempting to start 
CamelContext: S7-PLC-Context
    17:04:55.885 INFO [Blueprint Event Dispatcher: 1] Apache Camel 2.24.2 
(CamelContext: S7-PLC-Context) is starting
    17:04:55.886 INFO [Blueprint Event Dispatcher: 1] StreamCaching is enabled 
on CamelContext: S7-PLC-Context
    17:04:55.886 INFO [Blueprint Event Dispatcher: 1] JMX is enabled
    17:04:55.912 INFO [Blueprint Event Dispatcher: 1] Instantiating new PLC 
Driver Manager with class loader BundleDelegatingClassLoader(s7-camel [67])
    17:04:55.913 INFO [Blueprint Event Dispatcher: 1] Registering available 
drivers...
    17:04:55.916 INFO [Blueprint Event Dispatcher: 1] Registering driver for 
Protocol s7 (Siemens S7 (Basic))
    17:04:55.925 INFO [Blueprint Event Dispatcher: 1] StreamCaching in use with 
spool directory: 
C:\karaf\data\tmp\camel\camel-tmp-e0de8e4a-1313-44d0-a309-e211b894bd4d and 
rules: [Spool > 128K body size]
    17:04:55.958 INFO [Blueprint Event Dispatcher: 1] Can read true can write 
true can subscribe true
    17:04:56.018 INFO [Blueprint Event Dispatcher: 1] Route: route10 started 
and consuming from: timer://foo?fixedRate=true&period=1000
    17:04:56.019 INFO [Blueprint Event Dispatcher: 1] Total 1 routes, of which 
1 are started
    17:04:56.020 INFO [Blueprint Event Dispatcher: 1] Apache Camel 2.24.2 
(CamelContext: S7-PLC-Context) started in 0.136 seconds
    17:04:57.020 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] 
Instantiating new PLC Driver Manager with class loader 
BundleDelegatingClassLoader(s7-camel [67])
    17:04:57.021 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] 
Registering available drivers...
    17:04:57.021 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] 
Registering driver for Protocol s7 (Siemens S7 (Basic))
    17:04:57.021 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] 
Creating POLLING CONSUMER
    17:04:57.038 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] Can 
read true can write true can subscribe true
    17:04:57.055 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] doStart 
POLLING Consumer
    17:04:57.055 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] 
Creating read request
    17:04:57.070 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] POLLING 
Consumer closed is false
    17:04:57.070 INFO [nioEventLoopGroup-519-1] CHANNEL CLOSED : true
    17:04:57.075 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] Value 
obtained java.lang.Short
    17:04:57.077 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] Has 
optimizer : true
    17:04:57.078 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] Writing 
data [0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    17:04:57.087 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo]  
Response code: OK at 17:04:57
    17:04:58.021 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] 
Creating POLLING CONSUMER
    17:04:58.022 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] Can 
read true can write true can subscribe true
    17:04:58.038 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] doStart 
POLLING Consumer
    17:04:58.038 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] 
Creating read request
    17:04:58.041 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] POLLING 
Consumer closed is false
    17:04:58.041 INFO [nioEventLoopGroup-520-1] CHANNEL CLOSED : true
    17:04:58.042 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] Value 
obtained java.lang.Short
    17:04:58.042 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] Has 
optimizer : true
    17:04:58.043 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo] Writing 
data [0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    17:04:58.047 INFO [Camel (S7-PLC-Context) thread #17 - timer://foo]  
Response code: OK at 17:04:58
    17:04:58.256 INFO [pipe-bundle:stop 67] Destroying container for blueprint 
bundle s7-camel/0.1.0.SNAPSHOT
    17:04:58.257 INFO [Blueprint Event Dispatcher: 1] Stopping CamelContext: 
S7-PLC-Context
    17:04:58.257 INFO [Blueprint Event Dispatcher: 1] Apache Camel 2.24.2 
(CamelContext: S7-PLC-Context) is shutting down
    17:04:58.258 INFO [Blueprint Event Dispatcher: 1] Starting to graceful 
shutdown 1 routes (timeout 300 seconds)
    17:04:58.259 INFO [Camel (S7-PLC-Context) thread #18 - ShutdownTask] Closed 
connection false
    17:04:58.260 INFO [nioEventLoopGroup-518-1] CHANNEL CLOSED : true
    17:04:58.260 INFO [Camel (S7-PLC-Context) thread #18 - ShutdownTask] Route: 
route10 shutdown complete, was consuming from: 
timer://foo?fixedRate=true&period=1000
    17:04:58.260 INFO [Blueprint Event Dispatcher: 1] Graceful shutdown of 1 
routes completed in 0 seconds
    
    
    
    Etienne
    
    

Reply via email to