お騒がせな favicon.ico

 
お騒がせな favicon.ico

20150416-1

スパム撃退システムを運用するために借りたフリーのサーバーが 2台。

ある日そのサーバーが悲鳴をあげておりました。ブログから問い合わせたサーバーからのレスポンスが遅延するため、表示に時間がかかるという悪夢のような出来事があったのです。

無料サーバーは同時接続数の上限が思ったよりも低めにされている様で、処理待ちが発生していたんですね。それにしても処理を分散させたのになぜだ?と思ったら、あるファイルへ大量のアクセスがある事がわかりました。

とりあえず導入している皆さんに迷惑がかかっては申し訳ないので、サーバー 2台で処理していたのを 5台まで拡大してその場をしのぎました。

贅沢な分散処理

20150416-2

私が管理しているサーバーが上図の 5台。ファイアバードは契約期限まで使ったら終了する予定なので眠らせてあるのですが、急遽参戦させました。

さて、このシステムを脅かしたのが favicon.ico というファビコン用のファイルです。スパムではなく、一般の善良な市民(ブログ)からこのファイルを取得しようと大量のアクセスが発生していたんですなぁ~

この処理遅延障害には Reota! のオーナーさんと一緒になって原因を究明し、全て対処しました。この事件があったおかげで、Webページには favicon.ico が必要だと心底思いましたね。

なぜ必要か、なんのためのファイルなのかは姉妹ブログである Reota! で記事にされていますので、是非ともお読み下さいな。

この事件のおかげで faivicon.ico が無い時の処理を追加し、存在しない faivicon.ico へアクセスが有ったら処理そのものを中止するように改良しました。加えて、これまでは 1件のアクセスに対して 5回ほどサーバーへ問い合わせていたのを 2回まで減らすという最適化まで行いました。この最適化によって、無料サーバー 1台でも十分処理できる問い合わせ頻度にまで下げる事ができたので、ある意味 favicon.ico 事件は発生してよかったと思っています(笑)


  1. bluem

    おはようございます(^^
    不適合があって改善し予防処置を取る。
    品質マネジメントシステムそのものですね、素晴らしいです!
    プログラミングされた処理が、サイト管理者の知らない部分で動いてる事もあるので、こういう所もNET社会の怖い所ですね。

    1. delphian

      処理遅延でサイトが表示されない現象が発生したときには青ざめましたね。
      実はそのサイト、bluemさんちだったんですよ(笑)
      21時頃から発生したので、大急ぎでサーバーを構築し、bluemさんちをミニバードで処理させる様にしました。

      この現象はあるサイトに貼ってあるウィジェットがやっている事でした。
      誰かがそのサイトへアクセスする度に最新の記事とファビコン取得のため、リクエストがくるのです。で、ウィジェットですから、そこにリストされているサイト全部にリクエストが発行されるんですね。
      そのサイトがセーフかどうかをサーバーへ問い合わせるのですが、同時に 3サイトから問合せが来たりするので、無料サーバーは処理待ちにしてしまったという感じでした。
      サイトのオーナーさんはこの事を知らないだろうなぁ~

  2. ask-evo

    奥が深いですね(^^;
    しかし、処置前は緊急で5台体制だったのが、処置後は1台ですか。

    それにしても、faviconって、もともとhtmlに準拠していないMicrosoftの勝手なものだったらしいですが、あったら便利ではなく、無いと障害になるとはこれまた困ったものですね(^^;

    そもそもデザインの案はないのですが、.icoってどうやって作るんですかね?
    今まで興味が無かったので予備知識が全くありませんw

    なんかそのためだけにソフト新しく導入するのもいやだしなぁ…

    1. delphian

      最適化はしようと思っていたのですが、これがきっかけで実行が早まりましたよ(笑)
      お書きの通り、favicon.icoをルートへ配置するのは IEのためだったと記憶しています。
      MSの勝手がいつの間にか世間の常識になってしまったんですね。困ったものです。

      icoファイルの作成はそれ専用のエディッタもあるし、フォトショのプラグインもあったはず。
      通常の画像を ico形式へ変換するサイトもあるので、そこで変換してもいいと思います。
      http://favicon.qfor.info/c/

      ちなみに 404エラー回避のためだけならファイル形式は何でもいいです。ファイルさえ存在していればいいので、適当なテキストファイル(空でも可)を保存し、favicon.ico へリネームしてサイトのルートへ配置すればOK。
      Webページのヘッダー記述が優先されるので、404エラーの対策だけであればそれで十分かもです(笑)

  3. iMovie

    こんにちは
    対応お疲れさまです。
    こちらの記事とreotaさんの記事を見て、自分の環境を見直していました。
    favicon.icoの置き場所ですが、使用しているテーマのルートなのか、サブドメインのルートなのかどちらなのでしょうか?
    私の場合、以下の状況です。
    blog.mewgull.net 使用しているテーマにあるfavicon設定
    gallery.mewgull.net、archives.mewgull.net プラグインを使ってfavicon設定
    使用しているテーマのバージョンアップを都度行っているので、テーマのルートだと更新時に消えてしまうので、プラグインを使ってました。
    404エラー回避のため、サブドメインのルートに、ダミーを置いておけば良いのかな?
    それとも、favicon設定しているので、置く必要ないのか?
    混乱しております。

    1. delphian

      favicon.ico の置き場所はサイトのトップです。つまり、サブドメンのルートですよ。
      今使っているアイコンのファイル名を変更してそのままコピーすればいいですね。

      >それとも、favicon設定しているので、置く必要ないのか?
      サイトトップの favicon.ico を決め打ちしてきますので、ヘッダーへ設定している云々は関係無いですね。

  4. jerry

    こんにちは
    思いもよらぬことで対応お疲れさまでした。
    いつもながら迅速な対応に感謝いたしております。

    私のところにはファビコンを設置していませんのが、処置しておいた方がよいですよね。
    自分ではよくわかりませんので兄貴に甘えます(笑)
    本物のファビコンもいつか作りたいと思ってます。

    1. delphian

      いや、楽しい対処でございました。ある意味お祭りです(笑)
      とりあえずJerryさんちのサイトトップに favicon.ico を設置してきました。
      が! 何故か表示されませんw
      ま、でも favicon.ico が無いという 404エラーは表示されなくなりますので、当面それでいきましょか。

  5. reota

    この件は、本当にお疲れ様でした。
    私はデータを見て言いたいことだけ言って参加した気になっているようで申し訳ないと思いながら、あえて参加する余地をいただいていると勝手に思い込んでおります(笑)
    faviconのデータ量を考えると、普通は起こらないような事象かもしれませんが、今回は結果的に無料サーバーからBANされる人も出てしまったわけで、侮れないものだなと思いました。

    1. delphian

      いやいや、1人で対処するよりもワイワイやりながら対処する方が何倍も楽しいです(笑)
      faviconは大したデータ量では無いので転送量の問題にはなりませんが、サーバーのメモリ使用量はページの表示とあまり変わらないんですよ。
      1アクセスで 30MB近くもメモリを消費するので、これが同時に来ると一気にメモリを使うため、無料サーバーは同時接続の制限をきつめにしているんでしょうね。
      たった 1個のファイルですが全然侮れませんね(笑)