Hi everyone,
I'm trying to use Fuseki as a temporary memory-only server, i.e. load RDF into
memory, run queries, dispose of server.
My testing was going really well until I tried to take it from development on
laptop to a compute farm.
JVM 1.8.0_112-b15
Fuseki version 3.4.0
Redhat enterprise 7 via LSF
Server invocation: java --Xmx24GB -Xms24GB -jar fuseki-server.jar --update
--port 3355 --mem /test
I load my data (totalling 23 million triples across tens of files) using the
s-put utilty into two graphs, and with time and progress depending on how much
heap I have allocated (14 GB up to 40 GB), it loads for a while and then
explodes. See below for a sample of the whole error.
The perplexing part is that I cannot see any sign of an error to trigger the
dump or predict when it will die. If I do not set -Xms to the same as the -Xmx
parameter, it dies within ten seconds of starting to load (where loading should
take 30 minutes or more). If I give it loads of heap, the crash seems to occur
around it receiving its first SPARQL query after the data is loaded. The client
(calling s-post) sees generic_request.rb:206:in `copy_stream': Broken pipe -
sendfile (Errno::EPIPE), which I infer to mean that the server has gone away
mid-request.
I have tried the following so far:
1. Add heap
2. Change JVM to another Java 8 release
3. Turn up Fuseki logging - No debug messages obviously indicate an error prior
to the crash
Can anybody recommend a course of action to diagnose and fix my issue?
Regards,
Kieron
----------------- thread dump-----------------------
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.112-b15 mixed mode):
"qtp596910004-172" #172 prio=5 os_prio=0 tid=0x00002b9c54002000 nid=0xcc67
waiting on condition [0x00002b9bd3a7f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000004659a2800> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:173)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590)
at java.lang.Thread.run(Thread.java:745)
"qtp596910004-41" #41 prio=5 os_prio=0 tid=0x00002b9c64001000 nid=0xb393
runnable [0x00002b9bd3c2d000]
java.lang.Thread.State: RUNNABLE
..... lots more threads
"VM Thread" os_prio=0 tid=0x00002b9b3c3c5800 nid=0xd1da runnable
"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00002b9b3c01f000 nid=0xd1c0
runnable
.... more GC
"VM Periodic Task Thread" os_prio=0 tid=0x00002b9b3c432800 nid=0xd1ff waiting
on condition
JNI global references: 499
Heap
PSYoungGen total 3185664K, used 1577280K [0x000000069c580000,
0x00000007c0000000, 0x00000007c0000000)
eden space 1592832K, 99% used
[0x000000069c580000,0x00000006fc9d0308,0x00000006fd900000)
from space 1592832K, 0% used
[0x00000006fd900000,0x00000006fd900000,0x000000075ec80000)
to space 1592832K, 0% used
[0x000000075ec80000,0x000000075ec80000,0x00000007c0000000)
ParOldGen total 9557504K, used 9557170K [0x0000000455000000,
0x000000069c580000, 0x000000069c580000)
object space 9557504K, 99% used
[0x0000000455000000,0x000000069c52c950,0x000000069c580000)
Metaspace used 27217K, capacity 27644K, committed 28032K, reserved
1073152K
class space used 3508K, capacity 3636K, committed 3712K, reserved 1048576K
Kieron Taylor PhD.
Ensembl Developer
EMBL, European Bioinformatics Institute