This is happening again. Any ideas? On Tuesday, May 23, 2017 at 4:15:23 PM UTC+2, NateS wrote: > > I've written an OSS project called Clippy which stores clipboard history > in an embedded H2 database: > https://github.com/EsotericSoftware/clippy/ > > I'm seeing the Clippy process sometimes causes CPU usage for long periods > of time. It jumps between 1% and 20% on a 12 core processor and this > continues for hours and hours. I captured stacktraces using jstack have > have attached one below [1]. It appears that MVStore compactRewrite is the > culprit. > > My H2 version is 1.4.192. I will update to the latest, but I wanted to > report this now since I don't know how long it will take before I see the > issue again. My db file is 590 MB and has 83,341 rows. The schema is > simple, just 3 columns: > id INTEGER IDENTITY > text VARCHAR_IGNORECASE NOT NULL > snip VARCHAR_IGNORECASE(2048) NOT NULL > > I have 3 indexes: > id DESC > snip > text > > The data is like: > MAX(LENGTH(text)) == 995,797 > AVG(LENGTH(text)) == 783 > > FWIW, I use "SET LOG 0" to disable the transaction log, as it seems > unnecessary for my app's usage. > > Is there anything I can do to reduce MVStore compactRewrite CPU usage? I > don't mind it happening occasionally, but I'm seeing it happen for 12+ > hours, until I restart my app. Even if the background processing doesn't > affect write speeds, it's not ideal for an app such as mine which is > intended to run in the background on user workstations rather than servers. > Restarting my app seems to help for some time. If it shouldn't be running > constantly, is there something I can do to collect information about the > problem? Unfortunately I can't send the database file, as it may contain > personal information. > > Thanks! > -Nate > > [1]: jstack stacktrace: > "MVStore background writer nio:C:/path/db/db.mv.db" daemon prio=6 > tid=0x000000000ab6e800 nid=0x2148 runnable [0x000000001192d000] > java.lang.Thread.State: RUNNABLE > at > org.h2.mvstore.db.ValueDataType.readString(ValueDataType.java:637) > at > org.h2.mvstore.db.ValueDataType.readValue(ValueDataType.java:532) > at > org.h2.mvstore.db.ValueDataType.readValue(ValueDataType.java:572) > at org.h2.mvstore.db.ValueDataType.read(ValueDataType.java:172) > at org.h2.mvstore.db.ValueDataType.read(ValueDataType.java:159) > at org.h2.mvstore.Page.read(Page.java:708) > at org.h2.mvstore.Page.read(Page.java:195) > at org.h2.mvstore.MVStore.readPage(MVStore.java:1944) > at org.h2.mvstore.MVMap.readPage(MVMap.java:736) > at org.h2.mvstore.Page.getChildPage(Page.java:217) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:823) > at org.h2.mvstore.MVMap.rewrite(MVMap.java:782) > at org.h2.mvstore.MVStore.compactRewrite(MVStore.java:1910) > at org.h2.mvstore.MVStore.compact(MVStore.java:1802) > - locked <0x00000000f00a2c18> (a java.lang.Object) > at org.h2.mvstore.MVStore.writeInBackground(MVStore.java:2504) > at > org.h2.mvstore.MVStore$BackgroundWriterThread.run(MVStore.java:2694) >
-- You received this message because you are subscribed to the Google Groups "H2 Database" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/h2-database. For more options, visit https://groups.google.com/d/optout.
