web-dev-qa-db-ja.com

Azureで接続プールをリセットする方法(エラー:最大プールサイズに達しました)?

Azure Webサイトで以下のエラーが発生し、修正するためにスクランブルをかけています。

Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.

プールをリセットまたは増やすにはどうすればよいですか?

2
TruMan1

AzureのSQL接続プールは、他のデータベースと同じように増やすことができます。デフォルトでは、100の接続を取得します。システムにそれほど多くのユーザーがいない場合は、接続が使用されなくなったときに接続を閉じたり破棄したりしていることを確認することをお勧めします。

connectionString="Server=XXX;Database=XXX;User Id=XXX;password=XXX;
    connection timeout=0;Max Pool Size = 500;Pooling = True"
4

スタートアップコマンドを実行して、アプリプールのアイドルタイムアウトを変更できます。スタートアップタスクから呼び出されたcmdファイルから次のようなものを実行します(この例ではタイムアウトが無効になっています)。

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00

同様の手法を使用して、特定のメモリしきい値に達した後にアプリプールをリサイクルできます( この記事 を参照)

0
David Makogon

Web.configのMax Pool Size = 500;のような接続文字列構成を調整して、現在のAzureSQLデータベース層の最大接続数と一致させます

各AzureSQL Tierリソースの制限の詳細については、次を参照してください。 https://Azure.Microsoft.com/en-us/documentation/articles/sql-database-resource-limits/

0
Korayem