私は最近、新しい要求が受信されるたびに再起動せずに、スタンドアロンのサービスとして実行することになっている以下のようなNode.jsのコードの一部、見た:それは、新しいMySQL接続を毎回開くどのように非ブロッキングmysqlクライアントは実際に動作しますか?
switch(action) {
case 'a':
connectMysql(function(mysqlConnection) {
// some queries X
});
break;
case 'b':
connectMysql(function(mysqlConnection) {
// some queries Y
});
break;
/***** more actions *****/
}
をこれを書いた人は、このアプローチはクエリが並行して実行されることを保証し、同じ時間に膨大なリクエスト量がある場合には互いにブロックしないと考えています。
私はnode.jsのmysqlクライアントがノンブロッキングで、何もブロックしないと思っていたので、これは私を本当に混乱させました。
クエリがスタックされた可能性がある場合、プロセスが多すぎるリクエストを処理していた可能性があります。また、より多くのmysql接続は間違いなく助けになります。
または、非ブロッキングクライアントは単にクエリを非同期で送信することを意味しますが、クエリが多すぎるとmysqlサーバー側でクエリがブロックされる可能性があります。
ありがとうございます。 基本的にmysqlサーバは1つの接続から順番にクエリを実行しますが、一部のクライアントはこの複数のクエリの問題に追いつくためにキューまたは接続プールを実装します。 私が掲示したコードは何とかこの問題を解決しましたが、接続プールを作成する方が無制限の接続を開くのではなく、より良い選択肢になるでしょう。 – nevermind
修正してください。 – mscdex