2012-03-19 7 views
4

私はnode.jsアプリケーションで作業していますが、時折フリーズしているようです。私はこれがユーザーコードスレッドがフリーズしているためだと仮定します。それは約5分の使用後に起こるようですが、私は理由を知らない。デッドロックされている場所を教えてくれるツールはありますか?すべての行にログを追加するだけでなく、node.jsアプリケーションをどのようにデバッグしますか?

私はいくつかのトレースステートメントを追加しましたし、次のコードにそれを絞られている

....より多くの情報を追加する更新:

exports.addLocationToRoute = function(req, res) { 
    console.log("27"); 
    console.log(req.body); 

    var queryConfig = { 
     text: "INSERT INTO route_locations (route_id, location_id, order_id) VALUES ($1, $2, $3);", 
     values: [req.params.id, req.body.locationId, req.body.order] 
    }; 

    pg.connect(conString, function(err, client) { 
    console.log("28"); 
... 

私はトレースに27の出力を参照してくださいではなく、 28.なぜそれらの2つのポイントの間に凍結されているのかを確認する方法はありますか?

アップデート2:

は、私はちょうどもう一度再現しようとしましたが、それはコード内の別のポイントで凍結となっていますが、この時点で、それはまた、私が使用している

pg.connect(conString, function(err, client) { 
+1

[node.jsアプリケーションをデバッグする方法](http://stackoverflow.com/questions/1911015/how-to-debug-node-js-applications) –

+2

重複する可能性はありません。私は具体的にどのようにデッドロックされているコード内の場所を見つけるかについて尋ねています。 – dan

+0

これはまったく別の質問のようです。 –

答えて

4

を呼び出しているJetBrainsのWebStorm私のJavascript開発のためのIDE。これは完全なノードサポートを備えているため、ブレークポイントを設定してコードをトレースすることができます。しかし、WebStormは無料ではありません。 また、ノードのデバッグの古いトピックを見てもよい: How do I debug Node.js applications?

Chrome Development Toolsの使用についての受け入れ答えがあるのですが、私はむしろ、デバッグ用node-inspectorを使用して、より人気のある答えの道を追ったと思います。

+0

すべてのJetBrains IDEにはNode.jsプラグインが必要です。私はIntelliJを使用しています。同じものを使用します –

+0

これで、コールスタックがどこにあるのかを知るために凍結したら、これはchrome devツールでは機能しません。 – dan

+0

はい、一時停止できますが、コールスタックについてはわかりません。呼び出されるコールバックがない場合、一時停止はどこにもつながりません。 @j pimmel:はい、アイデアは大丈夫​​ですが、それ以上の費用がかかります。 –

0

ノードを--debugモードにして、それをnode-inspectorと分析したいとします。

コードがロックされている場所では、一時停止ボタン(http://pix.am/LYZz/)で実行を一時停止し、スタックトレースを調べてロックを見つけることができます。

+0

私はそれをセットアップしましたが、ロックされている場所を調べるためにどのように使用できますか?ブレークポイントを追加したくないのは、約5〜10分ごとに1回しか発生しないからです。コードを進めていくうちに、それを再生するには数時間かかるでしょう。 – dan

+0

代わりに、例外で一時停止するように指示します。あなたのアップデートに基づいて、基本的なPostgreSQLサーバがあなたの接続を拒否しているように見えます(あまりにも多くありますか?)同じ接続を何度も再利用するのではなく、 –

+0

リクエストごとに1つの接続が必要です。そうでない場合は、同じ接続を同時に使用する2つのリクエストを持つことができますか? – dan

関連する問題