Webサービスを作ったらファイル転送量に注意しよう思った
先日
というサイトを作って公開をしたのだが
公開(12月 13日 21時頃)
嬉しいことに好評で Twitter 拡散されていったのだが
公開終了(12月 14日 3時頃)
レンタルサーバーで運営しているのだが
サイトにアクセスしてみると
509 エラー
他サービス含めて自分のHP もアクセスできなくなってしまった
慌てて鯖に課金、ドミネーターを停止
アクセスは確かに多かった、が...
たかが 2000アクセス程度で転送量 約30GBのバンド幅制限を越すのはおかしい
調べてみた
クライアント & サーバー
まずクライアントとサーバー間
約650KB (560KBキャッシュ)
これは原因ではなさそうだ... にしても少し大きい気がする
CSSフレームワーク(Foundation) がこの内の殆どを占めていた
後回しにはするが、この辺もしっかり見なおしたほうが良さそうだ
サーバー & Twitter
次に思いつくのは バックエンドでの TwitterAPI へのリクエスト
とは言ってもそこまで大量に TwitterAPI を使ってるわけではない
...と思っていたのだが
一回のアクセスにつき最大で 200ツイート x 8ユーザ
計測してみた所大体 300kB x 8 = 2.4MB ??
計算が間違ってるかもしれないが仕様を変えて削減を考えよう...
サーバー & サーバー
そして発見した最大の原因はサーバーに置いた辞書ファイルだった
ローカル環境で Apache のアクセスログを見ていたら発見した
合計で 3MB もあるが、さらにそれを非同期で毎回呼び出していたので大量のファイル転送が行われていた
PHP の file_get_contents 関数を使う時に絶対パスで指定していたのが問題で
相対パスに変えた所ファイル転送されなくなり解決したようだ
この経験に懲りてサービスを公開するときはよくサイトの軽量化を見直そうと思う