概要
「RequestError: failed to cancel request in 5000ms」というエラーが出たのでnode-mssqlタイムアウトの設定について調べていました。
今回はrequestTimeoutに設定がなかったので重い処理がデフォルトでSQLがタイムアウトしてしまっていたのが原因だったようです。
参考
node-mssql/README.md at a55162111e0f3d0e95aa65094ddd9c2e335fa0dd · tediousjs/node-mssql
Microsoft SQL Server client for Node.js. Contribute to tediousjs/node-mssql development by creating an account on GitHub...
Node.js 使用時の接続タイムアウトを設定する | Cloud SQL for SQL Server | Google Cloud
Node.js mssql モジュールを使用して、Cloud SQL for SQL Server に接続する際の接続タイムアウトを構成する方法を説明します。
mssql
該当のサーバーの設定を確認したところタイムアウト設定が抜けていたため、設定できる項目と内容を探していました。
いろいろなタイムアウトがあるんですね・・。
requestTimeoutとconnectionTimeoutの書き方はnode-mssqlのバージョンによって違うみたいです。
const sql = require('mssql'); const config = { user: 'username', password: 'password', server: 'localhost', database: 'your_database', pool: { max: 10, min: 0, idleTimeoutMillis: 10000, // 接続プール内の接続がアイドル状態(使用されていない状態)で保持される最大時間(ミリ秒単位) acquireTimeoutMillis: 30000, // 接続プールから接続を取得する際に待機する最大時間(ミリ秒単位) }, options: { requestTimeout: 15000, // SQL クエリまたはストアドプロシージャの実行にかかる最大時間(ミリ秒単位) }, connectionTimeout: 300000,// データベースへの接続が完了するまでに許可される最大時間(ミリ秒単位) };
おわり。