iotaledger / iri

IOTA Reference Implementation
Other
1.15k stars 370 forks source link

System Load Average too HIGH #1230

Open Fabryprog opened 5 years ago

Fabryprog commented 5 years ago

Bug description

Using IOTA RC 7 my VPS load is too high

IRI version

1.6.0-rc7

Hardware Spec

VPS

Steps To Reproduce

  1. running RC7

Expected behaviour

low load avg

Actual behaviour

load avg is too high

I analise the problem using threads dump

stats using TOP

30108 fabry     20   0  9.833g 2.948g  23260 S 161.0 50.6  12:52.90 java
top - 13:47:27 up 27 days, 19:34,  1 user,  load average: 3.70, 5.89, 9.50
Threads: 138 total,   5 running, 133 sleeping,   0 stopped,   0 zombie
%Cpu(s): 43.3 us,  5.0 sy,  0.0 ni, 43.5 id,  0.1 wa,  0.0 hi,  1.5 si,  6.6 st
KiB Mem :  6110644 total,   119864 free,  3608820 used,  2381960 buff/cache
KiB Swap:  6291452 total,  5812600 free,   478852 used.  2219920 avail Mem

30155 fabry     20   0  9.848g 3.191g  13876 R 99.3 54.8   3:44.54 java
30135 fabry     20   0  9.848g 3.191g  13876 R 43.9 54.8   3:51.82 java
30149 fabry     20   0  9.848g 3.191g  13876 S 25.9 54.8   2:38.41 java

HEAVY THREADS

Thread 30149

"Latest Milestone Tracker" #30 prio=5 os_prio=0 tid=0x00007fac1c7fa800 nid=0x75c5 waiting on condition [0x00007fabb12c5000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x0000000644836740> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

Thread 30155

"Local Snapshots Monitor" #36 prio=5 os_prio=0 tid=0x00007fac1c7fe000 nid=0x75cb runnable [0x00007fabb08b9000]
   java.lang.Thread.State: RUNNABLE
        at org.rocksdb.RocksDB.get(Native Method)
        at org.rocksdb.RocksDB.get(RocksDB.java:810)
        at com.iota.iri.storage.rocksDB.RocksDBPersistenceProvider.get(RocksDBPersistenceProvider.java:164)
        at com.iota.iri.storage.Tangle.load(Tangle.java:40)
        at com.iota.iri.controllers.ApproveeViewModel.load(ApproveeViewModel.java:28)
        at com.iota.iri.utils.dag.DAGHelper.traverseApprovers(DAGHelper.java:109)
        at com.iota.iri.service.snapshot.impl.SnapshotServiceImpl.isOrphaned(SnapshotServiceImpl.java:527)
        at com.iota.iri.service.snapshot.impl.SnapshotServiceImpl.isSolidEntryPoint(SnapshotServiceImpl.java:580)
        at com.iota.iri.service.snapshot.impl.SnapshotServiceImpl.lambda$processOldSolidEntryPoints$6(SnapshotServiceImpl.java:614)
        at com.iota.iri.service.snapshot.impl.SnapshotServiceImpl$$Lambda$100/1201341815.accept(Unknown Source)
        at java.util.HashMap.forEach(HashMap.java:1289)
        at com.iota.iri.service.snapshot.impl.SnapshotServiceImpl.processOldSolidEntryPoints(SnapshotServiceImpl.java:612)
        at com.iota.iri.service.snapshot.impl.SnapshotServiceImpl.generateSolidEntryPoints(SnapshotServiceImpl.java:272)
        at com.iota.iri.service.snapshot.impl.SnapshotServiceImpl.generateSnapshot(SnapshotServiceImpl.java:258)
        at com.iota.iri.service.snapshot.impl.SnapshotServiceImpl.takeLocalSnapshot(SnapshotServiceImpl.java:209)
        at com.iota.iri.service.snapshot.impl.LocalSnapshotManagerImpl.monitorThread(LocalSnapshotManagerImpl.java:130)
        at com.iota.iri.service.snapshot.impl.LocalSnapshotManagerImpl.lambda$start$0(LocalSnapshotManagerImpl.java:97)
        at com.iota.iri.service.snapshot.impl.LocalSnapshotManagerImpl$$Lambda$44/52514534.run(Unknown Source)
        at com.iota.iri.utils.thread.ThreadUtils.lambda$spawnThread$0(ThreadUtils.java:76)
        at com.iota.iri.utils.thread.ThreadUtils$$Lambda$46/735937428.run(Unknown Source)

Thread 30135

"Tip Solidity Rescan" #16 prio=5 os_prio=0 tid=0x00007fac1cb48000 nid=0x75b7 runnable [0x00007fabf0797000]
   java.lang.Thread.State: RUNNABLE
        at org.rocksdb.RocksDB.get(Native Method)
        at org.rocksdb.RocksDB.get(RocksDB.java:810)
        at com.iota.iri.storage.rocksDB.RocksDBPersistenceProvider.get(RocksDBPersistenceProvider.java:168)
        at com.iota.iri.storage.Tangle.load(Tangle.java:40)
        at com.iota.iri.controllers.TransactionViewModel.fromHash(TransactionViewModel.java:78)
        at com.iota.iri.controllers.TransactionViewModel.updateSolidTransactions(TransactionViewModel.java:379)
        at com.iota.iri.TransactionValidator.checkSolidity(TransactionValidator.java:279)
        at com.iota.iri.TransactionValidator.checkSolidity(TransactionValidator.java:222)
        at com.iota.iri.service.TipsSolidifier.scanTipsForSolidity(TipsSolidifier.java:66)
        at com.iota.iri.service.TipsSolidifier.lambda$init$0(TipsSolidifier.java:36)
        at com.iota.iri.service.TipsSolidifier$$Lambda$20/1848289347.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:748)
Fabryprog commented 5 years ago

@GalRogozinski