・Windows Server 2012R2 一難去ってまた一難
SQLServerが解決したと思ったら、今度はIISの挙動がおかしいことが分かりました。ページを修正してもそれがブラウザの方に反映されません。キャッシュをクリアしても、更新ボタンで再読み込みしても全く変わりません。これは初めて経験するIISの現象で、ネットを検索してみましたが、全く情報がありません。
仕方がないので、IISでサイトのアプリケーションプールを一度切断してから、リセットして、力ずくで更新するようににしました。これでしばらくはいいのですが、数時間あるいは一日経つとまた更新できなくなります。サイトの方は、それまで通りのページを返していますので、IISは動いているということです。
・設定を変えてみる
IIS上のキャッシュ関連と思われる設定を全て操作し、書き換えてみたりしましたが、全く効果ありません。システムのエラーイベントを見ても、それらしいものはなく、http関連で「w3svc0のログが書き込めない」というエラーが一日に1回くらい出ているだけです。またサイトのログの一部が欠落しているという現象も起きていました。
何か表面に出ないエラーが起きているようです。SQLServerの時もインストール先を変えて解決したので、今回もエラーの出ているログファイルをC:に変えてみました。しかし効果がありません。
・やっと効果が現れる、2週間経過
ハードエラーという前提で、一部のサイト、アプリのコンパイル先を変えるように設定し、アプリもC:に移してみました。次の日、このサイトに関しては、更新ができるようになりました。ようやく、少し先が見えてきました。ここまで、苦節2週間…。
ハードエラーの可能性が高いので、チェックディスクをおこなう。コンパイル先もあるので、C:D:の両方をおこなう。しかし、両方とも、問題なし、1〜2分くらいでスキャンが終了する。ハードエラーではなかった。
・原因はアクセス権?
ここまでも、アドバイスを受けながら色々試してきたのだが、ハードエラーでないなら、セキュリティではないかといわれる。アプリやHTMLの入っているフォルダのセキュリティをみると、Everyoneフルコントロールが一つだけ付いている。一般のフォルダにあるAdministratorsやusersが無く、トップのドライブからの継承になっていた。
ただ、この「Everyoneフルコントロール」一つだけというのは、手動で設定した覚えがない。もし設定したとすると、Administratorsやusersを削除したことになり、これは少し危険を伴うので、考えにくいのだ。
・アクセス権を追加したがダメ
結果として、Cのフォルダを参考にして、Dドライブのアクセス権を設定しなおすことにした。これで解決かと思ったが、翌日また同じ現象が起きていて、愕然となる。アクセス権ではないのか。しかしCドライブでは問題なく動く。ディスクエラーも無い。最後の手段はOSの再インストールかと思ったが、その前に、余っていた別のディスクを接続し、それをフォーマットしてみる。そのアクセス権を見てみると、問題のドライブとほとんど同じだった。これにDドライブのデータを全てコピーする。半日かかった。その後、現象の起きたサイトを新ドライブに設定し直す。念のため、Cドライブに一つ残しておく。3時間くらい経って様子をみると問題は起きていない。まだ安心はできないが、うまくゆきそうな予感がする。翌日、サイトが固まっていないことを確認する。多分これでいいだろうと思う。
・原因はディスク(USB)
新ドライブがOKなので、フォーマットかと思い、Dドライブを半分に分けて、フォーマットしてみる。そしてデータを移し、様子をみる。しかし、これはだめ。ディスクを変更するしかないと思ったが、その前に、ネットに載っていた、.netのユーザーIUSERS等を直接フォルダに設定してみる。これは、今までで一番効果があり、すぐに更新できるようになった。これで解決かと思ったが、その夜再起動すると、翌日また固まっていた。
これで分かったのだが、このドライブは、再起動すると、設定されていたアクセス権の一部が外れてしまうようだ。以前にも、再起動すると、USBディスクの一部が共有が取れてしまうという現象があった。ただ、これは複数のディスクを接続した時の現象だったが。
・分かりにくいトラブルと経験不足
SQLServerの時もそうだが、動き出して数時間後に現象が出るため、大変分かりにくく、時間も一日単位でかかる。大変難しいトラブルだったが、ようやく似た現象にたどり着いた。
トラブルのあったディスクはI-O DATA HDJ-UTだ。I-Oのせいではないと思うが、新しくバッファローのディスクを用意し、それを初期化して稼動させる。再起動後も問題は起きていない。おそらくこれで大丈夫だろうと思う。
分かりにくい現象だったが、自分の分析力がもう少しあれば、気がついただろうと思う。やはり能力不足を感じてしまう。一ヶ月以上の時間を費やし、大変高いサーバーになってしまった。
SQLServerの停止も同じ原因だと思われます。
・WindowsServerは避けた方がいい?
今までもよくいわれてきたことだが、WebサーバーはWindowsは避けた方がいいといえる。今までの資産を生かすために、仕方なくWindowsを使用しているが、今回のようにServerをバージョンアップしたりすると、そのトラブル情報が極めて少なくトラブルが解決しにくい。これは今に始まったことではない。業者にサポートしてもらっている場合はいいが、自社で構築している場合はアウトである。Linux系のようにフリーライセンスであれば諦めもつくが、高いライセンス料を払うWindowsではアウトなどといってはいられない。自己責任というには、高すぎるリスクだといえる。
・勝ち組企業のおごりでユーザーは苦戦
これから自己責任でWebを開発しようという人は、間違いなくWindowsServerは避けた方がいいだろう。Apache、PHP、MySQLでやってゆけば、最低限の情報がネットで公開されている。Windowsのように全くないということはないだろう。レンタルサーバーも多い。システムを開発するものにとって、サーバーが普通に動くことは最低限必要なことであり、今回のようなトラブルはあってはならないことである。マイクロソフトにはその「普通に動くこと」を有料にしているとしか思えない。Googleも同じだ。二人とも、ぜひスティーブジョブスのポリシーを学んでもらいたい。そうでないと、米国次第の日本は、独自検索を持つ、韓国(ネイバー)、中国(バイド)にITでは負けることになるような気がする。
共有元ページ