2012-03-10 86 views
4

我在亞馬遜上有一個ubuntu服務器,我試圖在上運行一個node.js程序。該程序只有一行:node.js程序掛在亞馬遜linux服務器上

console.log('Here I am.'); 

沒有得到輸出和程序不會退出。

當我運行ps的X,我可以看到一個[節點]過程STAT d狀態:

751 ?  D  0:04 [node] 

的過程不能使用sudo殺-9 751

問題之前停止, node.js程序運行得很好,就像我的實際 - 更復雜的node.js程序一樣。

我甚至重新啓動了Ubuntu服務器,並嘗試在重新啓動後立即運行單線測試node.js程序。它掛起並沒有輸出任何東西。

節點--version返回

v0.7.6-pre 

任何想法,爲什麼出現這種情況?這是一個與Amazon實例,node.js安裝或其他問題有關的問題嗎? nginx在同一臺服務器上運行得很好,但node.js程序如上所述掛起。

(如預期,同樣的代碼運行在我的本地Mac OS X環境就好了)

更新:我恢復到0.6.12穩定版,但同樣的問題仍然存在。

+1

通常狀態D表示IO,它在內核中調用。這可以解釋爲什麼你不能殺死它。爲了幫助診斷問題,請嘗試將stdout重定向到文件(使用'>')。我懷疑問題可能出在輸出到控制檯/屏幕上。也請嘗試使用v0.6穩定版本。 – 2012-03-10 19:59:07

+0

嘗試了這兩種方法(重定向輸出並首先恢復到0.7.5,然後恢復到0.6.12),但同樣的問題依然存在。當掛起的節點程序運行時,top顯示節點和rsyslogd佔用一個CPU的100%。有時候,jbd2/xvda1-8也在CPU佔用率高的頂級列表中。 – Mayoneez 2012-03-11 08:24:17

+0

安裝0.6.12後,測試程序*確實運行了一次。在第二次運行中,它掛斷了。 – Mayoneez 2012-03-11 08:26:28

回答

1

問題解決(有點)。

這是一個謎。我在Amazon EC2上創建了一個新實例(與我所使用的「完全相同」),安裝了git,nginx,node.js和我的node.js程序。現在一切正常。

肯定是我的實例有問題。我只是不明白它是什麼,但由於我沒有看到任何重要的事例,我只是拋棄了它。

這可能是問題的原因是我剛開始編譯和編譯的0.7.6-pre版本。也許有一些導致這種特殊行爲的遺留問題。

相關問題