2013-07-06 129 views
3

我問漂亮:爲什麼我必須殺死-9 neo4j?

$ neo4j stop 
Stopping Neo4j Server [74949]........................ lots of dots ...... 

等了幾分鐘,好聽又問道:

$ kill 74949 
$ ps x | grep neo 
74949 ?? R  30:13.01 /Library/Java/Java...org.neo4j.server.Bootstrapper 

仍在運行。完成要求很好。

$ kill -9 74949 

爲什麼neo4j不尊重TERM信號?如果它在等待什麼,我怎麼能找出什麼?

通常情況下,我會問服務器故障這種問題,但neo4j站點在這裏指向。

+1

如果下次發生這種情況,請執行'jstack PID'並提供線程轉儲,因爲它提供了有關JVM當前正在執行的操作的信息。 –

回答

1

不一定有用的遞減順序...

  • ps alx可能給一個提示(進程狀態 - 但與Java程序的問題不在於經常JVM本身已經死了/鎖定,但東西是的運行在top 100%的CPU使用率
  • 的JVM)內可能表明一個死循環
  • Java進程可以在狀態結束了所有他們仍然是在幾乎總是妄圖gc'ing以釋放內存,啓用gc日誌記錄可以幫助您檢測到這種情況。
  • afaik neo4j通過jmx(visualvm或jconsole)可以遠程監視,而且我已經使用這些工具來確定哪個線程掛了我們的Glassfish服務器之一。
+0

如果有查詢正在運行,是否可以阻止neo4j停止? –

+0

是的,在查詢運行之前,我停止了'停止'。 –

+0

你們找到解決方案嗎?我該如何阻止它? – Chet

-1

如果執行kill [PID],則只發送(TERM SIGNAL),該進程將自行關閉。如果您發送SIGNAL號碼9(KILL SIGNAL),則該過程將立即結束。不管它現在的狀態如何。信號9(不能忽略)。

+0

我明白'kill'命令,謝謝。實際上,kill的默認信號是TERM。否則,你是正確的,但你的答案不能幫助我'neo4j'。 –