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.

Reply via email to