注意 - 在Stackoverflow的其他地方有類似的問題,但它與Spring Data有關,而且我沒有使用Spring Data。Neo4J「GC Monitor:應用程序線程被阻塞10000ms」
我有一個從Twitter數據構建的簡單的社交圖。到目前爲止約有120,000個節點和約200,000個關係。
的Neo4j的表現似乎有點打了小姐,像這樣的查詢偶爾服用200秒:
MATCH p=(:User {twId: 838853137247141888})-[:FOLLOWS*0..3]->(:User {twId: 40002648})
RETURN SUM(REDUCE(s = 1.0, n IN NODES(p)[0..-1] | s/SIZE((n)-->()))) AS connectedness
我看着在logs/debug.log
並注意以下的常規流,即使沒有疑問發生在圖上:
2017-05-27 18:50:40.041+0000 WARN [o.n.k.i.c.MonitorGc] GC Monitor: Application threads blocked for 2436ms.
2017-05-27 18:50:46.831+0000 WARN [o.n.k.i.c.MonitorGc] GC Monitor: Application threads blocked for 5705ms.
2017-05-27 18:50:55.631+0000 WARN [o.n.k.i.c.MonitorGc] GC Monitor: Application threads blocked for 8699ms.
2017-05-27 18:50:56.450+0000 WARN [o.n.k.i.c.MonitorGc] GC Monitor: Application threads blocked for 719ms.
我.neo4j-community.vmoptions
僅包含以下
-Xmx6G
(我嘗試了一大堆,看是否可以解決這個問題 - 它沒有)
我在MacOS塞拉利昂運行的Neo4j社區v3.1.3 10.12.4
說實話,我在分析Neo或確定服務器的性能時,我不知道從哪裏開始,並且文檔對我的特定問題沒有太大的幫助。
提示非常感謝。
更新:
我也看到在啓動時在我debug.log
以下
2017-05-27 19:23:06.439+0000 ERROR [o.n.k.a.i.s.LuceneSchemaIndexProvider] Failed to open index:3, requesting re-population. Lock held by this virtual machine: /Users/chris/social-graph/schema/index/lucene/3/1/write.lock
org.apache.lucene.store.LockObtainFailedException: Lock held by this virtual machine: /Users/chris/social-graph/schema/index/lucene/3/1/write.lock
at org.apache.lucene.store.NativeFSLockFactory.obtainFSLock(NativeFSLockFactory.java:127)
at org.apache.lucene.store.FSLockFactory.obtainLock(FSLockFactory.java:41)
at org.apache.lucene.store.BaseDirectory.obtainLock(BaseDirectory.java:45)
更新:
您能確認一下您是否有一個唯一的約束或索引:User(twId)?如果沒有該索引,您的查詢將會抓取。您可以使用PROFILE爲查詢添加前綴以獲取查詢執行的可視計劃。你可以運行它,展開計劃的所有元素,導出它並將圖像添加到描述中? – InverseFalcon
感謝您回覆我@InverseFalcon - 我添加了:schema的輸出,以及查詢計劃。我確實有一個索引:用戶(twId) –
您可能已經意識到了這一點,但要注意在這裏除以零錯誤,看起來如果路徑中的節點沒有外向關係,則可能會有風險。 – InverseFalcon