3

node.jsアプリがクラッシュし続けます。これは、mysqlデータベースからデータを取得する単純なWebサービスです。私は1日に約2万から3万のクエリを受け取ります。より多くのリソースを提供する必要があるためにクラッシュするのか、コードに問題があるのか​​はわかりません。これはAppFogでホストされており、これがクラッシュログです。

hashishパッケージが何であるかはわかりませんが、「npm install hashish」を使用してインストールしようとしましたが、問題は解決しませんでした。

何かご意見は?

C:\Users\Tom\\nodejs>af crashlogs TomsApp
====> /logs/staging.log <====

# Logfile created on 2013-02-05 00:53:01 +0000 by logger.rb/25413
Installing dependencies. Node version 0.8.14
Installing mysql@mysql@0.9.6 from local path
Installing hashish@hashish@0.0.4 from registry
Package is not found in npm registry hashish@hashish@0.0.4
Failed getting the requested package: hashish@hashish@0.0.4
Installing require-all@require-all@0.0.5 from local path

====> /logs/stderr.log <====


events.js:71
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: Connection lost: The server closed the connection.
    at Protocol.end (/mnt/var/vcap.local/dea/apps/ta-0-365d7313671d4e40105a4d158
f1247d5/app/node_modules/mysql/lib/protocol/Protocol.js:63:13)
    at Socket.onend (stream.js:66:10)
    at Socket.EventEmitter.emit (events.js:126:20)
    at TCP.onread (net.js:417:51)
4

3 に答える 3

1

私はmysqlサーバーが接続を拒否していると言うでしょう多分あなたはそれを調べたいと思うでしょう

于 2013-02-05T22:15:37.973 に答える
1

どのように接続を取得していますか?一度取得しますか、それともリクエストごとに新しいものを取得してからプールに戻しますか?プールは、バックグラウンドで古い接続を処理する必要があります。

var mysql = require('mysql');
var pool  = mysql.createPool({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});


// for each request where you need the database connection, wrap it with
pool.getConnection(function(err, connection) {
  // do something with connection here
  ...
  connection.end();
});
于 2013-02-05T22:24:04.957 に答える
0

おそらく、すべての接続について、ソケット(http://nodejs.org/api/net.html#net_event_error_1)でエラーイベントを処理する必要があります。

それはそれがクラッシュするのを防ぎ、そしてあなたは実際の問題を見るはずです。

于 2013-02-05T21:38:53.637 に答える