‘トラブル’ タグのついている投稿


表題の件の通りのことが起きました

報告があったのはIE10と8で起きるということでした。
開発者ツールのコンソールでは

‘google’ は定義されていません

と表示されて画面が真っ白になるという状況。

真っ白な画面のソースを調べてみると

<script defer onreadystatechange=’google.loader.domReady()’ src=//:></script>

というjavascriptが1行あるだけ。
なんでそうなっているのか分からないけれど、googleが定義されてないからエラーが出たのはなんとなく分かる。

Googleで色々検索してみました

日本語で関係ありそうなページは見つからなかった。
「GoogleSiteSearch」で検索すると5件目くらいに吉祥寺北口システムの記事が出てくるくらいに何にも情報が無いので仕方がないことではある。
技術系ではよくあることなのだけど、stackoverflowにこれかなぁというのがあった。世界は広い。

Why is my website a blank screen in IE? (Including IE9!)
http://stackoverflow.com/questions/12028652/why-is-my-website-a-blank-screen-in-ie-including-ie9

報告されている現象は同じ。Answerに

From what I remember, IE does weird things when you try to access elements on the page that haven’t been fully parsed yet.

という説明がある。
IEのjavascriptの実行がマークアップ完了する前に動いてしまう、らしい。
ならば思い切ってIEの時だけはタイマーをかけて検索処理の実行を遅らせてみた。

こんな感じ

var ua = window.navigator.userAgent.toLowerCase();
if (ua.indexOf('msie') != -1) {
  $(document).ready(function(){
    setTimeout( function() {
ここにGoogleSiteSearchのコードを書く
    }, 5000);
  });
}else{
IEじゃない場合はここにGoogleSiteSearchのコードを書く
}

タイマーの5000(5秒)は適当な数字。もっと短くても大丈夫かも知れない。

結果、動きました

これで現象はとりあえず起きなくなった。元々謎の挙動なので、本当に全く起きなくなったのかは分からないけれど、繰り返し確認しても大丈夫になったようだ。
もちろん、タイマーが動く分だけ検索表示は待たされるので、実用的かどうかという面はある。本来ならばしなくて良い待機時間なので。


2013年はWEBサイトそのものの面倒を見る機会が何度かあり、その中でサイトにつながりにくくなるという現象に遭遇した。
出来るだけそうならないよう心がけてはいるものの、そうなってしまったのは自分に原因が無くても申し訳ない気持ちになる。

ネットなどでつながらない報告がある時
「光の100メガプランだけどダメ」
といった書き込みを見かけたりする。それでもダメな時は100%無理だったりするけれど、多くの人はそこまでは知らないよねぇ、と思うことがあるので大まかに原因をまとめてみた。

サーバ負荷が高い

重いスクリプトを実行してサーバそのものが重くなっている場合。

例えばスクリプトの中で無限ループが起きればいつまでたってもレスポンスが返ってこないし、そこまで単純なことで無くてもデータベースへの問い合わせが遅いとか、ロジックが複雑で時間がかかるとか、インターネットで無くても手元のPCでだってよく起きている現象。
WEBサーバの場合はそれが複数同時に起きているので負荷が上がり出すと他の処理も巻き込まれてどんどん重くなってしまうケースが多い。

思い切ってapacheを再起動すると瞬間的に軽くなるが、また同じパターンで重くなることが殆どなので、それで嵐が過ぎるのを待つといった消極的な対応をすることもある。

解決策としてはスクリプトの軽量化や負荷が高くなるボトルネックの対応、サーバを増やしてロードバランシングするなど、色々な手法があり、システム屋として一番頑張れるところではある。
ただし実際起きてしまうと即対応がなかなか出来ないという針のむしろを味わうことになる。

負荷試験を行うという場合は大抵はこの負荷を測って改善する作業を想定する。

サーバのネットワーク負荷が高い

インターネットからサーバまでの回線速度はサーバによって様々で、たとえば「さくらのVPS」では、共有100Mbpsで接続されている。ざっくりな理屈の上では「光の100メガ」の人が一人サーバにガッツリ接続して通信してれば他からの通信は割り込めない状態になる。そうなれば他の人達がいくら速い回線でも繋がらない。

現実にはそこまでネットワークが専有される状況というのは滅多に無いのかもしれないけれど、スペックそのものが良くなっていくにつれて通信出来る量も増えていっているので、昔からの感覚があるのであれば、きっとそれよりは起きやすい。

もっとも簡単に起きるケースに巨大ファイルのダウンロード公開がある。
100Mbpsの回線で50MBのファイルを公開して3人が同時にダウンロードしはじめたら…ということを想像すると分かりやすい。単純計算で考えればもう一杯だ。

ちなみにネットワークが原因でつながらない場合はサーバ負荷は比例して高くなるということは無い。50MBファイルのダウンロードであれば頑張っているのはapacheのプロセス3つだけでしかないし、やっているのはバイナリのレスポンスなだけだ。

CDNといったコンテンツの分散がもっとも簡単な対策だけど、利用するにはお金がかかるわけで、その費用が必要であることを説明して理解してもらうには、現状ではまだそれなりの努力が必要だと思われる。

サーバのネットワークまで届いていない

DNSが参照できなかったりでサーバの名前解決ができない場合や、モバイル環境などで通信トラフィックが混んでいてそもそもインターネットまでちゃんと繋がっていない場合。サーバ側には来てないので状況が全然分からないので解決がなかなか難しい。

「光の100メガ」といった、クライアント側の回線の話ではあるのだけど、それぞれのクライアントで状況が違うので、実はもっとも厄介ではある。ただし、そういった報告やクレームが正式にくることは稀で、コミュニケーション出来る相手であればtracerouteしてもらうなんて手段で個別に解決は出来る。

WebARENA CLOUD9障害中

2010年12月4日

先日からちょこちょこサーバを移行している、WebARENA CLOUD9が現在も障害中でつながらない。

来週やるイベントで配布するフリーペーパーのDTP作業立会いで徹夜して、ひとまず寝ようと帰った矢先、監視サービスで障害発生のメールが来ていた。それが朝、8時半前のこと。
うわっ、と思ってSSHでの接続を試すも駄目で、リソース食いつぶしが起きたかと思いコントロールパネルにアクセスしてみたら、コントロールパネルも重くてなかなか開かない。何とか開いてサーバ再起動を指示したら、再起動処理中のまま、何分待っても変わらない。コントロールパネル自体につながらなくなったりもする。

障害情報もあがっていないので自分のところだけなのかも知れないし、何かしくじったのかと思い、サポートから問い合わせを実施したのが9時過ぎ。それの返事が来たのが13時45分。
その間に、開かないとまずいサイトは並行運用しているWebARENA SuitePRO V2へ移動。最近の更新情報で手元に無いものは、Googleなどの検索エンジンのキャッシュから何とか引っ張り出して復旧。ちなみに、このブログもmysqlサーバを移動した。
作業は11時過ぎに完了。問い合わせから約2時間、その間に返答はなく、障害情報もあがっていなかった。
1時間ほど仮眠して、ランチをしに出かけた時、もしくはランチから戻ってきた14時過ぎのどちらかのタイミングで障害情報があがっていたのを覚えている。(なにせ徹夜でボーっとしてたもので…)

滅多に起きることでは無いのと、眠さと疲れのピークだったので結構ショックだった。WebARENA SuitePRO V2では、そういうトラブルに一度もあっていないので、余計にそう感じた。
問い合わせのレスポンスの速さ、障害情報の速さ、対応の速さ、どれを見てもお客様のサイトどころかテストサーバでも使えないかも知れないなぁと思った。切ない。

個人的にサーバ選定時の第一条件は、問い合わせ対応だと思っている。
普段安定運用できているのは当然の前提で、何か起きた場合、とにかく迅速な対応、仮に障害が複雑で時間がかかるとしても、それならそういうアナウンスを実施できるかは、とても大きな決め手になると思っている。
フューチャースピリッツは、10年以上の付き合いで、トラブルに遭った事は無いが、問い合わせの対応がとにかくしっかりしているという感触を持っており、すごく信頼を置いている。フューチャースピリッツでVPSやクラウドの安価なサービスを始めないかなぁ…なんて勝手なことを思いつつ、状況を見守りたい。

復旧しても特別なにがあるわけじゃない状況までサーバ構成を戻したので、復旧は時間がかかっても構わないのだけれど、はやくサーバ上のデータを消して解約したい。

追記

16時の段階では、まだsshやhttpでの接続は確認できず、コントロールパネルも再起動処理中のままだった。
18時45分、復旧とのことで、そのタイミングで、コントロールパネル含めて問題なく接続できた。データ損失など無く復旧した模様。

追記2

16時段階での復旧に関する案内について問い合わせをしたら、12/6 12:26にお返事いただいた。
問い合わせが立て込んで大変だったのだろうけれど、これじゃあやっぱり厳しいなぁ。