1/18のお昼前後から1次/2次画面において決済注文の取り消しに失敗する事象が確認される。
【障害の切り分け】
調査すると決済取消だけではなく、取引状態参照も出来ない事が判明。
決済注文(リンクタイプ)は出来るので、プロトコルタイプのプログラムまたは通信に問題がある線が濃厚になる。
GMOにログの確認を依頼するも、詳しい結果は週明けになるとの回答。
試しにWeb2サーバー(テストサイト)から本番DBに接続し、決済取消を実行するとエラーは発生せず。
これらの結果により、問題があるのはWeb1サーバー(本サイト)と特定。
【ログの精査】
代行システムのエラーログには特に記載なしのため、プログラムのバグが原因ではない模様。
IIS(Webサーバー)のログにも特に記載はなし。
Windowsのログ(Application)に「System.Net.Httpの依存関係が読み込めませんでした」と記載あり。
System.Net.Http.dllはGMOとの通信であるプロトコルタイプのプログラムでのみ使用しているため、
現在発生している障害内容とログの内容が一致する。
【dllの解析】
System.Net.Http.dllのバージョンを確認すると、Web2サーバーと開発環境のバージョンは4.7.3062.0
Web1サーバーのバージョンは4.3.7.2050.0と若干異なることを確認。
更に調べると新しいバージョンは通常のWindowsのUpdateでdllが更新されるのが判明。
セキュリティ上の問題で開発環境とWeb2サーバーは自動で更新プログラムが実行されるが、
Web1サーバーでは以前自動で更新されてしまったdllが問題でエラーが発生した経緯があり、
自動では更新せず、年1回まとめて更新作業を行っている。
【更新作業】
System.Net.Http.dllが原因とわかったので、了承を得てWeb1サーバーでWindowの更新プログラムを実行。
インストール後再起動し、dllのバージョンが4.7.3062.0になっているのを確認。
ログイン制限をして受注制限を解除し、クレジットの注文登録を行い、小田切様に注文取消を依頼。
取消が確認出来たため、ログイン制限を解除し、受注制限を再び実行。
【更新後の経過】
20:15の受注制限後は、1次/2次の注文登録及び注文取消に問題は発生せず。 各種ログにも記載なし。
【直接の原因】
開発環境及びWeb2サーバーにWindowsの更新プログラムが実行された状態で1/16の夜に代行システムを更新した。
そのため図らずも決済取消には最新のSystem.Net.Http.dllが必要となってしまったが、
Web1サーバーには最新のdllが存在せず、エラーが発生した。
【今後の対応】
開発環境・Web1サーバー・Web2サーバーのWindowsの状態を揃える。
しかしながら参照しているdllは多岐にわたる上に、WebサーバーはWindowsServer2013とかなり古く、
更新も頻繁なため検証作業はかなり困難ですが、慎重に行っていくしかない。
また、開発環境を更新しないのもセキュリティ的に問題があるので、抜本的な対策を考える必要がある。