Out of Memory Error
-
I'm getting out of memory errors which I never received before. What are the conditions when one has to tune the memory allocation? This app is relatively small.
Two things changed - Updated to latest version & added some Charting, Charting seems to be the issue. If I don't load the screen then system runs as before.
JRE 1.8.0_171-b11/JDK 1.8.0_162
Windows 10 Pro 16GB/i7Latest mango
Loaded chart screen and walked away
Out of memory
Exported DB and Reimported
Size down to ~680MB
Loaded chart screen and walked way again
h2 db at mem fault time time ~1.4GB
restarted instance
h2 db at 1.9GB
95 datapoints enabled 146 configuedPartial Log output
org.springframework.core.convert.support.StreamConverter@451068cf org.springframework.core.convert.support.StringToArrayConverter@18a9d44f org.springframework.core.convert.support.StringToCollectionConverter@1917c302 CharacterEncodingFilter.FILTERED=true org.springframework.security.web.csrf.CsrfFilter@3f45dfec.FILTERED=true javax.servlet.http.HttpServletResponse=org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterResponse@12fb9bc6 org.springframework.security.web.FilterChainProxy.APPLIED=true _csrf=org.springframework.security.web.csrf.DefaultCsrfToken@592cbe52 __spring_security_filterSecurityInterceptor_filterApplied=true org.springframework.web.servlet.DispatcherServlet.THEME_SOURCE=WebApplicationContext for namespace 'REST_DISPATCHER-servlet': startup date [Thu Oct 25 16:23:20 MDT 2018]; parent: Root WebApplicationContext com.serotonin.m2m2.web.mvc.spring.security.RateLimitingFilter.FILTERED=true etagFilter.FILTERED=true org.springframework.web.servlet.HandlerMapping.pathWithinHandlerMapping=/v2/point-values/time-period/DP_3d092d65-2bcd-4c20-b411-0880fa10802e org.springframework.security.web.csrf.CsrfToken=org.springframework.security.web.csrf.DefaultCsrfToken@592cbe52 org.springframework.web.servlet.HandlerMapping.uriTemplateVariables={xid=DP_3d092d65-2bcd-4c20-b411-0880fa10802e} org.springframework.web.servlet.DispatcherServlet.THEME_RESOLVER=org.springframework.web.servlet.theme.FixedThemeResolver@78b025a4 ': java.lang.OutOfMemoryError: GC overhead limit exceeded Exception in thread "Log4j2-TF-5-AsyncLoggerConfig--2" java.lang.OutOfMemoryError: GC overhead limit exceeded Exception in thread "high-pool-2-thread-6" java.lang.OutOfMemoryError: GC overhead limit exceeded Exception in thread "Scheduler-959055079" java.lang.OutOfMemoryError: GC overhead limit exceeded Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Scheduler-959055079" Exception in thread "qtp818859466-607" java.lang.OutOfMemoryError: GC overhead limit exceeded
Chart Code t0 see what can be done out of the box.
<ma-get-point-value point-xid="DP_5ced8162-7dc9-4946-ac53-4ae8118e476d" point="pH_PV"></ma-get-point-value> <ma-get-point-value point-xid="DP_3d092d65-2bcd-4c20-b411-0880fa10802e" point="EC_PV"></ma-get-point-value> <ma-get-point-value point-xid="DP_23418117-43a1-4d9b-b4fb-651c6cb3a5da" point="AMBT_PV"></ma-get-point-value> <ma-get-point-value point-xid="DP_e89fe385-4758-4861-8c16-f8cb6577f280" point="TUBT_PV"></ma-get-point-value> <ma-get-point-value point-xid="DP_808d90e3-ccb8-43b9-ac0a-e52267ded197" point="CO2_PV"></ma-get-point-value> <ma-get-point-value point-xid="DP_5a3863c8-4ba6-4ca0-a22d-d319d1626cf6" point="RELH_PV"></ma-get-point-value> <ma-point-values point="pH_PV" values="pHValues" from="dateBar.from" to="dateBar.to" rollup="{{dateBar.rollupType}}" rollup-interval="{{dateBar.rollupIntervals}} {{dateBar.rollupIntervalPeriod}}"> </ma-point-values> <ma-point-values point="EC_PV" values="ECValues" from="dateBar.from" to="dateBar.to" rollup="{{dateBar.rollupType}}" rollup-interval="{{dateBar.rollupIntervals}} {{dateBar.rollupIntervalPeriod}}"> </ma-point-values> <ma-serial-chart style="height: 300px; width: 100%" series-1-values="pHValues" series-1-title="AT-001" series-1-color="yellow" series-2-values="ECValues" series-2-title="AT-002" series-2-color="green" series-2-axis="right" legend="true" balloon="true" options="{valueAxes:[{minimum:'0', axisColor:'yellow', color:'yellow', title: 'pH'}, {axisColor:'green', color:'green', title:'EC'}]}"> </ma-serial-chart> <ma-point-values point="AMBT_PV" values="AMBTValues" from="dateBar.from" to="dateBar.to" rollup="{{dateBar.rollupType}}" rollup-interval="{{dateBar.rollupIntervals}} {{dateBar.rollupIntervalPeriod}}"> </ma-point-values> <ma-point-values point="TUBT_PV" values="TUBTValues" from="dateBar.from" to="dateBar.to" rollup="{{dateBar.rollupType}}" rollup-interval="{{dateBar.rollupIntervals}} {{dateBar.rollupIntervalPeriod}}"> </ma-point-values> <ma-serial-chart style="height: 300px; width: 100%" series-1-values="AMBTValues" series-1-title="TT-101" series-1-color="yellow" series-2-values="TUBTValues" series-2-title="TT-001" series-2-color="green" series-2-axis="right" legend="true" balloon="true" options="{valueAxes:[{minimum:'0', axisColor:'yellow', color:'yellow', title: 'Ambient (C)'}, {axisColor:'green', color:'green', title:'Tub (C)'}]}"> </ma-serial-chart> <ma-point-values point="CO2_PV" values="CO2TValues" from="dateBar.from" to="dateBar.to" rollup="{{dateBar.rollupType}}" rollup-interval="{{dateBar.rollupIntervals}} {{dateBar.rollupIntervalPeriod}}"> </ma-point-values> <ma-point-values point="RELH_PV" values="RELHValues" from="dateBar.from" to="dateBar.to" rollup="{{dateBar.rollupType}}" rollup-interval="{{dateBar.rollupIntervals}} {{dateBar.rollupIntervalPeriod}}"> </ma-point-values> <ma-serial-chart style="height: 300px; width: 100%" series-1-values="CO2TValues" series-1-title="AT-102" series-1-color="yellow" series-2-values="RELHValues" series-2-title="AT-101" series-2-color="green" series-2-axis="right" legend="true" balloon="true" options="{valueAxes:[{minimum:'0', axisColor:'yellow', color:'yellow', title: 'CO2 ppm'}, {axisColor:'green', color:'green', title:'Rel Humidity'}]}"> </ma-serial-chart>
-
I converted to mysql and it runs a lot faster. Will convert to no-sql when the POC is done.
-
Hi Chrapchp
you should request a trail licence for your POC. email support@infiniteautomation.com -
Hi Chrapchp,
Craig's suggestion is a good one. You should include your GUID in the trial license request.
I'm surprised the H2 grew at the rate you describe... were your data sources updating quickly?
-
I'm updating once 1 minute. Did not seem to bad. So far no issue with mysql.