SitecoreではCDS-DB間接続が一時的に切断されても大丈夫

Azureのsitecore(CDS)で下記のようなCDS-DB間の接続断のメッセージが出ることが月に数回あります。
MSに問い合わせると、非通知のメンテナンスやリコンフィグレーションの影響であることが多いです。

CDS-DB間接続が瞬断されたタイミングでWEBページの表示に影響があるのか(500エラーが出てしまうのか)
気になったので試験してみました。

ManagedPoolThread #7 15:56:11 ERROR Exception processing remote events from database: core
Exception: System.Exception
Message: サーバーから結果を受信しているときに、トランスポート レベルのエラーが発生しました。 (provider: TCP Provider, error: 0 – 既存の接続はリモー

ト ホストに強制的に切断されました。)
Source: Sitecore.Kernel
場所 Sitecore.Data.DataProviders.Sql.DataProviderCommand.ExecuteReader()
場所 Sitecore.Data.DataProviders.Sql.DataProviderReader..ctor(DataProviderCommand command)
場所 Sitecore.Data.DataProviders.Sql.SqlDataApi.<>c__DisplayClass12.<CreateReader>b__10()
場所 Sitecore.Data.DataProviders.NullRetryer.Execute[T](Func`1 action, Action recover)
場所 Sitecore.Data.DataProviders.Sql.SqlDataApi.CreateReader(String sql, Object[] parameters)
場所 Sitecore.Data.DataProviders.Sql.SqlDataApi.<CreateObjectReader>d__6`1.MoveNext()
場所 System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
場所 Sitecore.Eventing.EventQueue.ProcessEvents(Action`2 handler)
場所 Sitecore.Eventing.EventProvider.RaiseQueuedEvents()

Nested Exception

Exception: System.Data.DataException
Message: Error executing SQL command: SELECT TOP(1) [EventType], [InstanceType], [InstanceData], [InstanceName], [UserName], [Stamp], [Created] FROM

[EventQueue] ORDER BY [Stamp] DESC

Nested Exception

Exception: System.Data.SqlClient.SqlException
Message: サーバーから結果を受信しているときに、トランスポート レベルのエラーが発生しました。 (provider: TCP Provider, error: 0 – 既存の接続はリモー

ト ホストに強制的に切断されました。)
Source: .Net SqlClient Data Provider
場所 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
場所 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
場所 System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
場所 System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync()
場所 System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket()
場所 System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer()
場所 System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte& value)
場所 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet

bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
場所 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
場所 System.Data.SqlClient.SqlDataReader.get_MetaData()
場所 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean

isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
場所 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean

async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
場所 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method,

TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
場所 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
場所 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
場所 Sitecore.Data.DataProviders.Sql.DataProviderCommand.ExecuteReader()

Nested Exception

Exception: System.ComponentModel.Win32Exception
Message: 既存の接続はリモート ホストに強制的に切断されました。

1.試験方法
SQL Serverを2分間程度停止している間にTOPページのフルリロード(Ctrl+F5)を繰り返すという事を行いました。

2.試験結果
SQL Serverが停止している間(2分間)もTOPページは表示され続けました。
(接続できない旨のエラーは吐かれ続けます。)
Sitecoreでは、DB情報をキャッシュしているので表示に影響が出ませんでした。
キャッシュがクリアされるタイミングはPublishされた時、アイテムに変更が加わった時、ワーカープロセスが再起動された時
になります。
Sitecoreでは、DBに接続できない場合にリトライも行うので、瞬断程度ではWEBページの表示に影響はまず出ないと思われます。

Comments are closed.