3

我的 node.js 应用程序不断崩溃。这是一个从 mysql 数据库获取数据的简单 Web 服务。我每天收到大约 20k 到 30k 个查询。我不确定它是否崩溃了,因为我需要给它更多资源,或者我的代码有问题。它托管在 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

你怎么得到你的连接?你得到它一次,还是为每个请求获取一个新的,然后将它返回到池中?池应该在幕后处理陈旧的连接。

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 回答
1

我会说mysql服务器拒绝连接也许你想调查一下

于 2013-02-05T22:15:37.973 回答
0

您可能必须为所有连接处理套接字 ( http://nodejs.org/api/net.html#net_event_error_1 ) 上的错误事件。

这样可以防止它崩溃,然后您应该会看到实际问题。

于 2013-02-05T21:38:53.637 回答