2016-08-24 19 views
0

アプリケーションからの大量のポーリングを処理し、メインのApacheサーバの負荷を軽減するために、スタンバイサーバ上で実行される単純なnode.jsサービスがあります。Node.js mysqlクエリが実行されていません

処理する呼び出しの1つが、他のサーバーに対してクエリを実行しますが、クエリを実行しないことがあります。

私の心に
app.get(/^\/rest\/[0-9]*\/*/, function (req, res) { 
    ... get controller from url 

    if (controller=='appListEvents'){ 
     console.log("appListEvents from "+req.connection.remoteAddress+" eid="+eid+" at "+getNow()); 
     var sql="SELECT * from updates where status='PENDING' and eid = "+eid+" order by stamp, id"; 
     connection.query(sql, function (error, rows, fields) { 
     res.type('application/xml'); 
     if (error) { 
      console.log("appListEvents Query error is "+error); 
      res.send('<root><response>AppListEvents Query Error</response></root>'); 
      return; 
     } 
     var xml = eventsToXml(rows); 
     res.send(xml); 
     console.log("appListEvents from "+req.connection.remoteAddress+" eid="+eid+"return XML" + xml); 
     return; 
    }) 
    console.log("appListEvents Out of connection, from "+req.connection.remoteAddress+" eid="+eid); 
    } 

、接続メッセージのアウトが表示されることはありません - のいずれかのデータは、いくつかのXMLが返送された場合には、クエリからあり、または場合にデータがない:コードはここにありますexentsToXmlはデータがないxmlを返します。

これは私が説明したように起こりますが、何かサービスを呼び出すと、接続が拒否されたというメッセージが表示されます。 if(エラー)部分でのエラー処理は決して引き起こされません。

私は、データベースが過負荷になっているため、クエリが削除されていると思います。

答えて

1

connection.query()コールバックが非同期の方法で実行されるため、Out of Connectionメッセージはいつでも表示されます。

+0

そのため、console.logエラーまたはconsole.logの成功メッセージのいずれかによって接続が断絶されることはありませんか? (非同期コールバックが最終的に実行に移るとき) –

+0

私はそれがいつもこのように動作すると思います –