私はSequelizeインスタンスを作成してから、mysqlデータベースで生のクエリを実行する非常に簡単なプログラムを持っています。 MySqlが起動して実行中に問題がなければ、問題なくクエリを実行できます。 しかし、MySqlが実行されていない場合、クエリのタイムアウトに達してからETIMEOUTエラーが発生するまで、クエリはエラーを発生させません。しかし、実際に起こっていることではありません。 mysqlが実行されていない場合、ENOTFOUNDエラーなどを出すクエリが期待されます.Mysqlがダウンしたり、Mysqlが非常にビジーで応答時間が非常に長い場合、エラーを管理して別のアクションを実行できます。 タイムアウト例外を待たずにMySQLが起動しているかどうかをチェックするにはどうすればいいですか?sequelizeでのmysql接続の確認
sequelize = new Sequelize(db_name, db_user, db_pass, opts);
sequelize.query('SELECT * FROM some_table').success(function(result) {
console.log(result);
}).error(function(err) {
console.log(err);
});
それはすべての時間をアップしますので、あなたは不被害妄想だアプリケーションコードを書いていない、あなたのMySQLサーバを監視する必要があります。タイムアウトは、サーバーがダウンして接続が失敗した場合の正しい動作です。遅すぎるとタイムアウト値を引き上げることができます。 – tadman
パラノイアのケースでは、たとえMySQLサーバーが稼働していてもクエリーが過負荷のためにエラーを発したとしても、より良いデータベースインフラストラクチャが必要であることは言うまでもなく、Redisなどのキャッシュサーバーを使用して、あなたのすべてのクエリがあなたの例のようなものであれば、性能を念頭に置いて書かれていません。つまり、10.000行ではOKかもしれませんが、5秒または10秒ごとにクエリされた100万行に対してはOKです。 IMHOあなたはあなたがやっていることの中でより良いアプローチを再設計し研究しなければなりません。 – Gntem