はじめての投稿になりますが、よろしくお願いいたします。
下記のシステム構成にて、システム運用中です。
────────────────────
<サーバ>
・WindowsServer2012 standard
・IIS 8.0
・SQLServer2012 SP1
<ユーザー(クライアント)>
・iPad150台
────────────────────
現在、週に2~3回操作がユーザー側で、
操作がフリーズしてしまう障害が、システム導入時から継続して発生しています。
フリーズすると、ユーザー150台が全ての端末で操作不能となります。
障害時のサーバー側での詳細な挙動を以下にまとめます。
<詳細>
・障害時、ワーカープロセスのジョブが溜まって吐けなくなっている。
(10分以上待っても、ワーカープロセスのジョブが返ってこないことを目視で確認済み。)
・障害時、CPU、メモリは、ほぼ使われていない。(タスクマネージャーで確認)
・障害時に、「SQL Server Management Studio」で
システムの全テーブルをSelectしたが、検索結果が返ってきた。
・障害時に、アプリ側で仕込んだ操作ログでは、
ユーザー操作で発生する全てのSQLは正常に返ってきている。
・障害時のパフォーマンスモニターを見ると、
【Current Connections】が急上昇している。
・障害時だけではなく、平常時もパフォーマンスモニターの
【Buffer cache hit ratioc】の数値が100近くで貼りついている。
・パフォーマンスモニターで【Page Faults/sec】を確認すると、
定常的にページフォールト数が多く、障害発生時はさらに増大していた。
・障害時、ワーカープロセスで500系のエラーは発生していない。
・障害時、ユーザーの直前の操作に偏りが無い。(ユーザー自体も特定のユーザーではない)
・障害時、負荷の掛からない軽微な操作だが、ワーカープロセスのジョブが溜まってしまう。
・障害時は、高負荷の処理では無いが、アクセスが集中する可能性のある時間帯である。
・復旧はアプリケーションプールを再起動すれば、現象が収まる。
・1日1回サーバーは再起動している。
・負荷テストとして、高負荷を掛けたり、アクセスを集中させたりしても、
暫くするとワーカープロセスから処理が返ってくる。
本番時の障害は待っても戻ってこないと思われるため、同じ現象はおそらく再現できていない。
・イベントログやIISのログにはエラーは記載されていない。
<問題切り分けのため実施した内容>
・IIS のアプリケーションプールを5つ(30台×5つ)にわけてみた。
(「Web ガーデン」ではなく、同じ内容アプリケーションプールを5つ用意して、URLを分けて割り振った。)
⇒1つのプール分がフリーズし、残り4つはフリーズしなかった。
残り4つはDBの登録も可能で、問題なく利用できる。
<今後調査・対応しようとしていること>
・フリーツール「Debug Diagnostic Tool」を使用してダンプファイル調査
⇒「1つのプール分がフリーズし、残り4つはフリーズしなかった。」ことで、
アプリケーションプールがハングを起こしている可能性を考慮して、
ダンプファイルを調査しようと考えております。
・SQLのパフォーマンスチューニング
⇒SQLでのメモリ使用を抑えるため対応しようと考えています。
・SQL Server2012をSP1からSP3にバージョンアップ
⇒SP1での不具合を考慮して対応しようと考えています。
上記の問題が発生しております。
原因究明に近づけるため、以下の4点を質問させて下さい。
①.上記の情報から、もしも障害の原因が判断できる場合は教えて下さい。
②.他に有効な調査方法があれば教えて下さい。
③.過去に同じような事象が発生したことがある場合は教えて下さい。
④.環境面で気をつけなければならない設定、パッチなどの情報があれば教えて下さい。
以上、宜しくお願い致します。