4

サーバー 1: SQL Server 2008 Standard Edition サーバー 2: Windows 2008 Server R2、IIS 7.0

サーバー 2 の Web サイトには、サーバー 1 の SQL Server のデータが必要です。

すべてがしばらくの間 (場合によっては数週間) 正常に動作します。次に、負荷が高いと、サーバー 2 はサーバー 1 の SQL Server に接続できないと報告します。サーバー 2 の IIS がサーバー 1 の SQL に接続できないと報告すると、サーバー 2 の IIS を再起動するまで改善されません。おそらく、IIS の完全なリセットと同様に、アプリケーション プールの再起動が機能するでしょう。よくわかりません。

接続文字列を変更して、接続プールのサイズを不当に大きな値 (1,000) に増やしてみました。失敗はまだ起こります。

Web サイトは C# で記述されています。データ アクセス層は Hibernate です。

例外の始まりは次のとおりです。

[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)]
   System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +428
   System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +65
   System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
   System.Data.SqlClient.SqlConnection.Open() +122
   NHibernate.Connection.DriverConnectionProvider.GetConnection() +60
   NHibernate.Impl.SessionFactoryImpl.OpenConnection() +39

なぜこれが起こっているのですか?それを診断/修正する方法は?私はイライラしており、NHibernate の廃止を検討しています。これには数か月かかり、おそらく他の多くの問題につながるでしょう。

4

2 に答える 2

1

接続タイムアウト値と接続プーリングも増やす必要があると思います。高負荷時に SQL Server への接続を解放しないようにします。

于 2012-12-27T10:53:04.033 に答える