I’m not sure if it’s possible to diagnose this without knowing what’s on the heap.
I don’t think there are any known issues around heap usage. Certainly a MERGE is going to use a lot of heap space, but it should be recovered once the statement is closed. Similarly, your select could use a lot of heap depending on the number of records scanned, but that should also be released once the statement is closed. > On 20 Sep 2021, at 07:34, Ibrahim Altun <ibrahim.al...@segmentify.com> wrote: > > Hi igniters, > > the situation getting frustrated keeps going really huge GCs. Here is the > last GC report; > > https://gceasy.io/my-gc-report.jsp?p=c2hhcmVkLzIwMjEvMDkvMjAvLS1nYy5sb2cuMC5jdXJyZW50IDIuemlwLS02LTMxLTg=&channel=WEB > > This is production environment we cannot get heap dump since the prodecure > stops the whole world. > > please advise. > > On 2021/09/13 07:47:16, Naveen Kumar <naveen.band...@gmail.com> wrote: >> Just to add what Ibrahim mentioned, I also have a similar issue but I am >> using 2.8.1 and we do have a good number of Insert/merge statements getting >> executed. >> We do get warnings for some of the MERGE statements, like "*The search row >> by explicit key isn't supported. The primary key is always used to used to >> search a row". *Does is have any impact on heap utilization >> >> In our case, heap memory more than the off heap memory and doing a >> frequent rolling-over restarts to avoid OOM. >> >> >> >> On Mon, Sep 13, 2021 at 11:47 AM Ibrahim Altun <ibrahim.al...@segmentify.com> >> wrote: >> >>> Hi Ilya, >>> >>> since this is production environment i could not risk to take heap dump >>> for now, but i will try to convince my superiors to get one and analyze it. >>> >>> Queries are heavily used in our system but aren't they autoclosable >>> objects? do we have to close them anyway? >>> >>> here are some usage examples on our system; >>> --insert query is like this; MERGE INTO "ProductLabel" ("productId", >>> "label", "language") VALUES (?, ?, ?) >>> igniteCacheService.getCache(ID, IgniteCacheType.LABEL).query(insertQuery); >>> >>> another usage example; >>> --sqlFieldsQuery is like this; >>> String sql = "SELECT _val FROM \"UserRecord\" WHERE \"email\" IN (?)"; >>> SqlFieldsQuery sqlFieldsQuery = new SqlFieldsQuery(sql); >>> sqlFieldsQuery.setLazy(true); >>> sqlFieldsQuery.setArgs(emails.toArray()); >>> >>> try (QueryCursor<List<?>> ignored = igniteCacheService.getCache(ID, >>> IgniteCacheType.USER).query(sqlFieldsQuery)) {...} >>> >>> >>> >>> On 2021/09/12 20:28:09, Shishkov Ilya <shishkovi...@gmail.com> wrote: >>>> Hi, Ibrahim! >>>> Have you analyzed the heap dump of the server node JVMs? >>>> In case your application executes queries are their cursors closed? >>>> >>>> пт, 10 сент. 2021 г. в 11:54, Ibrahim Altun < >>> ibrahim.al...@segmentify.com>: >>>> >>>>> Igniters any comment on this issue, we are facing huge GC problems on >>>>> production environment, please advise. >>>>> >>>>> On 2021/09/07 14:11:09, Ibrahim Altun <ibrahim.al...@segmentify.com> >>>>> wrote: >>>>>> Hi, >>>>>> >>>>>> totally 400 - 600K reads/writes/updates >>>>>> 12core >>>>>> 64GB RAM >>>>>> no iowait >>>>>> 10 nodes >>>>>> >>>>>> On 2021/09/07 12:51:28, Piotr Jagielski <p...@touk.pl> wrote: >>>>>>> Hi, >>>>>>> Can you provide some information on how you use the cluster? How >>> many >>>>> reads/writes/updates per second? Also CPU / RAM spec of cluster nodes? >>>>>>> >>>>>>> We observed full GC / CPU load / OOM killer when loading big >>> amount of >>>>> data (15 mln records, data streamer + allowOverwrite=true). We've seen >>>>> 200-400k updates per sec on JMX metrics, but load up to 10 on nodes, >>> iowait >>>>> to 30%. Our cluster is 3 x 4CPU, 16GB RAM (already upgradingto 8CPU, >>> 32GB >>>>> RAM). Ignite 2.10 >>>>>>> >>>>>>> Regards, >>>>>>> Piotr >>>>>>> >>>>>>> On 2021/09/02 08:36:07, Ibrahim Altun < >>> ibrahim.al...@segmentify.com> >>>>> wrote: >>>>>>>> After upgrading from 2.7.1 version to 2.10.0 version ignite nodes >>>>> facing >>>>>>>> huge full GC operations after 24-36 hours after node start. >>>>>>>> >>>>>>>> We try to increase heap size but no luck, here is the start >>>>> configuration >>>>>>>> for nodes; >>>>>>>> >>>>>>>> JVM_OPTS="$JVM_OPTS -Xms12g -Xmx12g -server >>>>>>>> >>>>> >>> -javaagent:/etc/prometheus/jmx_prometheus_javaagent-0.14.0.jar=8090:/etc/prometheus/jmx.yml >>>>>>>> -Dcom.sun.management.jmxremote >>>>>>>> -Dcom.sun.management.jmxremote.authenticate=false >>>>>>>> -Dcom.sun.management.jmxremote.port=49165 >>>>>>>> -Dcom.sun.management.jmxremote.host=localhost >>>>>>>> -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=1g >>>>>>>> -DIGNITE_SKIP_CONFIGURATION_CONSISTENCY_CHECK=true >>>>>>>> -DIGNITE_WAL_MMAP=true -DIGNITE_BPLUS_TREE_LOCK_RETRIES=100000 >>>>>>>> -Djava.net.preferIPv4Stack=true" >>>>>>>> >>>>>>>> JVM_OPTS="$JVM_OPTS -XX:+AlwaysPreTouch -XX:+UseG1GC >>>>>>>> -XX:+ScavengeBeforeFullGC -XX:+DisableExplicitGC >>>>>>>> -XX:+UseStringDeduplication -Xloggc:/var/log/apache-ignite/gc.log >>>>>>>> -XX:+PrintGCDetails -XX:+PrintGCDateStamps >>>>>>>> -XX:+PrintTenuringDistribution -XX:+PrintGCCause >>>>>>>> -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 >>>>>>>> -XX:GCLogFileSize=100M" >>>>>>>> >>>>>>>> here is the 80 hours of GC analyize report: >>>>>>>> >>>>> >>> https://gceasy.io/my-gc-report.jsp?p=c2hhcmVkLzIwMjEvMDgvMzEvLS1nYy5sb2cuMC5jdXJyZW50LnppcC0tNS01MS0yOQ==&channel=WEB >>>>>>>> >>>>>>>> do we need more heap size or is there a BUG that we need to be >>> aware? >>>>>>>> >>>>>>>> here is the node configuration: >>>>>>>> >>>>>>>> <?xml version="1.0" encoding="UTF-8"?> >>>>>>>> <beans xmlns="http://www.springframework.org/schema/beans" >>>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>>>>>> xsi:schemaLocation=" >>>>>>>> http://www.springframework.org/schema/beans >>>>>>>> http://www.springframework.org/schema/beans/spring-beans.xsd >>> "> >>>>>>>> <bean id="ignite.cfg" >>>>>>>> class="org.apache.ignite.configuration.IgniteConfiguration"> >>>>>>>> <property name="gridLogger"> >>>>>>>> <bean >>> class="org.apache.ignite.logger.log4j2.Log4J2Logger"> >>>>>>>> <constructor-arg type="java.lang.String" >>>>>>>> value="/etc/apache-ignite/ignite-log4j2.xml"/> >>>>>>>> </bean> >>>>>>>> </property> >>>>>>>> <property name="communicationSpi"> >>>>>>>> <bean >>>>> class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi"> >>>>>>>> <property name="usePairedConnections" value="true"/> >>>>>>>> </bean> >>>>>>>> </property> >>>>>>>> <property name="failureDetectionTimeout" value="60000"/> >>>>>>>> <property name="systemThreadPoolSize" value="128"/> >>>>>>>> <property name="publicThreadPoolSize" value="128"/> >>>>>>>> <property name="queryThreadPoolSize" value="128"/> >>>>>>>> <property name="serviceThreadPoolSize" value="128"/> >>>>>>>> <property name="stripedPoolSize" value="128"/> >>>>>>>> <property name="dataStreamerThreadPoolSize" value="4"/> >>>>>>>> <property name="rebalanceThreadPoolSize" value="16"/> >>>>>>>> >>>>>>>> <!-- Explicitly enable peer class loading. --> >>>>>>>> <property name="peerClassLoadingEnabled" value="true"/> >>>>>>>> >>>>>>>> <!-- Enable deploymentSpi, >>>>>>>> /usr/share/apache-ignite/libs/segmentify directory will be >>> checked >>>>>>>> every 5 seconds for changed files--> >>>>>>>> <property name="deploymentSpi"> >>>>>>>> <bean >>>>> class="org.apache.ignite.spi.deployment.uri.UriDeploymentSpi"> >>>>>>>> <property name="temporaryDirectoryPath" >>>>>>>> value="/tmp/temp_ignite_libs"/> >>>>>>>> <property name="uriList"> >>>>>>>> <list> >>>>>>>> >>>>>>>> <value>file://freq=5000@localhost >>>>> /usr/share/apache-ignite/libs/segmentify/</value> >>>>>>>> </list> >>>>>>>> </property> >>>>>>>> </bean> >>>>>>>> </property> >>>>>>>> >>>>>>>> <property name="cacheConfiguration"> >>>>>>>> <list> >>>>>>>> <!-- Partitioned cache example configuration (Atomic >>>>> mode). --> >>>>>>>> <bean >>>>> class="org.apache.ignite.configuration.CacheConfiguration"> >>>>>>>> <property name="name" value="default"/> >>>>>>>> <property name="atomicityMode" value="ATOMIC"/> >>>>>>>> <property name="backups" value="1"/> >>>>>>>> </bean> >>>>>>>> </list> >>>>>>>> </property> >>>>>>>> >>>>>>>> <!-- Explicitly configure TCP discovery SPI to provide list >>> of >>>>>>>> initial nodes. --> >>>>>>>> <property name="discoverySpi"> >>>>>>>> <bean >>>>> class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> >>>>>>>> <property name="networkTimeout" value="60000"/> >>>>>>>> <property name="ipFinder"> >>>>>>>> <bean >>>>>>>> >>>>> >>> class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"> >>>>>>>> <property name="addresses"> >>>>>>>> <list> >>>>>>>> <!-- THERE ARE 10 NODES --> >>>>>>>> </list> >>>>>>>> </property> >>>>>>>> </bean> >>>>>>>> </property> >>>>>>>> </bean> >>>>>>>> </property> >>>>>>>> >>>>>>>> <!-- Enabling Apache Ignite native persistence. --> >>>>>>>> <property name="dataStorageConfiguration"> >>>>>>>> <bean >>>>> class="org.apache.ignite.configuration.DataStorageConfiguration"> >>>>>>>> <property name="defaultDataRegionConfiguration"> >>>>>>>> <bean >>>>>>>> class="org.apache.ignite.configuration.DataRegionConfiguration"> >>>>>>>> <property name="persistenceEnabled" >>>>> value="true"/> >>>>>>>> <property name="checkpointPageBufferSize" >>>>>>>> value="#{ 2L * 1024 * 1024 * 1024}"/> >>>>>>>> <property name="maxSize" value="#{ 40L * >>> 1024 * >>>>>>>> 1024 * 1024 }"/> >>>>>>>> </bean> >>>>>>>> </property> >>>>>>>> <property name="storagePath" >>>>> value="/srv/ignite/persist"/> >>>>>>>> <property name="walPath" value="/srv/ignite/wal"/> >>>>>>>> <property name="walArchivePath" >>> value="/srv/ignite/wal"/> >>>>>>>> <property name="walMode" value="LOG_ONLY"/> >>>>>>>> <property name="walSegmentSize" value="#{ 256L * >>> 1024 * >>>>> 1024 }"/> >>>>>>>> <property name="walFlushFrequency" value="5000"/> >>>>>>>> <property name="maxWalArchiveSize" value="#{ 512L * >>> 1024 >>>>> * 1024 }"/> >>>>>>>> <property name="writeThrottlingEnabled" >>> value="true"/> >>>>>>>> <property name="checkpointFrequency" value="300000"/> >>>>>>>> <property name="checkpointWriteOrder" >>> value="SEQUENTIAL" >>>>> /> >>>>>>>> </bean> >>>>>>>> </property> >>>>>>>> </bean> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> <https://www.segmentify.com/>İbrahim Halil AltunSenior Software >>>>> Engineer+90 >>>>>>>> 536 3327510 • segmentify.com → <https://www.segmentify.com/>UK • >>>>> Germany • >>>>>>>> Turkey <https://www.segmentify.com/ecommerce-growth-show> >>>>>>>> <https://www.g2.com/products/segmentify/reviews> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >> >> -- >> Thanks & Regards, >> Naveen Bandaru >>