Hello,
I have the following scenario:
90M nodes, all the same type, with 10 brief properties
220M rels, 8 brief properties
When running any query (for example, MATCH (a)-[:`CP`]->(b) RETURN a,b
LIMIT 25), timeout occurs. The web application (/browser) shows "unknown
error", and intermittently shows "Disconnected from Neo4j. Please check if
the cord is unplugged.". Both console.log and neo4j.0.0.log show no
errors, but the messages.log file inside the graph.db folder repeated shows
errors as follows:
2014-03-17 17:02:02.973+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC
Monitor: Application threads blocked for an additional 1559ms [total block
time: 224.944s]
2014-03-17 17:03:15.081+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC
Monitor: Application threads blocked for an additional 71095ms [total block
time: 296.039s]
2014-03-17 17:03:17.108+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC
Monitor: Application threads blocked for an additional 1726ms [total block
time: 297.765s]
2014-03-17 17:04:27.162+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC
Monitor: Application threads blocked for an additional 69752ms [total block
time: 367.517s]
2014-03-17 17:04:29.507+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC
Monitor: Application threads blocked for an additional 1735ms [total block
time: 369.252s]
2014-03-17 17:05:41.488+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC
Monitor: Application threads blocked for an additional 71878ms [total block
time: 441.13s]
2014-03-17 17:05:43.339+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC
Monitor: Application threads blocked for an additional 1750ms [total block
time: 442.88s]
2014-03-17 17:06:53.169+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC
Monitor: Application threads blocked for an additional 69527ms [total block
time: 512.407s]
2014-03-17 17:06:55.057+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC
Monitor: Application threads blocked for an additional 1787ms [total block
time: 514.194s]
and then eventually timeouts show up in console.log:
Caused by: java.io.IOException: java.util.concurrent.TimeoutException: Idle
timeout expired: 70519/30000 ms
at
org.eclipse.jetty.util.BlockingCallback.block(BlockingCallback.java:103)
~[jetty-util-9.0.5.v20130815.jar:9.0.5.v20130815]
at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:662)
[jetty-server-9.0.5.v20130815.jar:9.0.5.v20130815]
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:198)
~[jetty-server-9.0.5.v20130815.jar:9.0.5.v20130815]
at
com.sun.jersey.spi.container.servlet.WebComponent$Writer.write(WebComponent.java:307)
~[jersey-server-1.9.jar:1.9]
at
com.sun.jersey.spi.container.ContainerResponse$CommittingOutputStream.write(ContainerResponse.java:134)
~[jersey-server-1.9.jar:1.9]
along with broken pipe/EofException in neo4j.log:
Caused by: org.eclipse.jetty.io.EofException
at
org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:186)
at
org.eclipse.jetty.io.WriteFlusher.completeWrite(WriteFlusher.java:400)
at
org.eclipse.jetty.io.SelectChannelEndPoint.onSelected(SelectChannelEndPoint.java:111)
at
org.eclipse.jetty.io.SelectorManager$ManagedSelector.processKey(SelectorManager.java:498)
at
org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:455)
at
org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:420)
... 3 more
Caused by: java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:89)
at sun.nio.ch.IOUtil.write(IOUtil.java:60)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:450)
at
org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:165)
I have boosted both memory settings as well as os-level io settings via
this document:
http://docs.neo4j.org/chunked/1.6.2/configuration-linux-notes.html
Here are my memory settings:
cache_type=none
use_memory_mapped_buffers=true
# 9 bytes per node
neostore.nodestore.db.mapped_memory=900M
# 33 bytes per relationships
neostore.relationshipstore.db.mapped_memory=18150M
# 38 bytes per property
neostore.propertystore.db.mapped_memory=5G
# 60 bytes per long-string block
neostore.propertystore.db.strings.mapped_memory=5G
neostore.propertystore.db.index.keys.mapped_memory=500M
neostore.propertystore.db.index.mapped_memory=500M
wrapper.java.initmemory=8192
wrapper.java.maxmemory=8192
This is run on a quad-core dual-cpu box with 48G ram, no other programs, no
other users. Other relevant information:
neo4j version: community 2.0.1
jvm: Java(TM) SE Runtime Environment (build 1.7.0-b147)
OS: centos 4.1 (Red Hat 4.1.2-54)
Are there any other settings I can change to help with this timeout issue?
It would appear that the timeout for http requests and their response is in
java code starting the jetty server, as I can't find a setting for it
anywhere. If there isn't a setting, is there a guide for importing to a
more configurable server such as tomcat, or am I on the wrong track
completely?
Thanks,
John
--
You received this message because you are subscribed to the Google Groups
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.