« コミックダッシュ! 無関係な外国本が混ざる件について暫定対処中 | トップに戻る | コミックダッシュ! モバイル版実験中 - 外出先でコミック発売日を確認しよう » |
2007年7月18日
コミックダッシュ!等の重さ対策についていろいろと試行錯誤中です
最近、コミックダッシュ! が重い とお叱りを受ける日々が続いております。
ユーザの皆さまにはご不便をお掛けして申し訳ございません。
いろいろ機能追加もしていきたいところなのですが、その前にまず
足回り整備ということで、いくつか試行錯誤をしていました。
サービスの注目度合いという意味でコミックダッシュ!の重さをご指摘頂く
ことが多かったのですが、実際にはこのブログも含め、自宅サーバに乗って
いる全てのサービスが平等に重い時間帯が発生していたという状態でした。
その第一の要因は、実は一般ユーザの皆さまのアクセスではなく、
検索エンジンやRSSリーダサービスの巡回ロボット
のアクセスにあると見ています。何か異常に重いなーと感じたときに
Webサーバの生ログを逐一観察していると、大抵の場合、
Googlebot、Yahoo! Slurp、Bloglines、Livedoor FeedFetcher
などの巡回ロボットが大量のアクセスをしている最中だったのです。
そこで、いくつかの対策を講じることにしました。まず簡単にできる
設定変更として、Apacheの MaxClients の設定を150→200に増やし、
KeepAliveTimeout の設定は逆に15→10に減らしました。
通常のユーザのアクセスではhtmlファイルと一緒に大量のjpgファイルなども
持っていく必要がありますから、コネクションを繋ぎっぱなしにすることに
価値があるのですが、ロボットのアクセスではhtmlやxmlの単体データを
取得したら終了ですから、KeepAliveは短いほうがリソース開放を早めて
他のユーザに迷惑を掛けにくいのではないかという判断です。
これはそれなりに効果があったようです。
続いて、目をつけたのは、メガとんトラック と Wii-Tube です。
コミックダッシュ!のプログラム改造よりもこちらを優先しました。
メガとんトラックの個別linkidページやWii-Tubeの個別ビデオ再生ページは
それぞれ数十万ページが存在するにも関わらず全てPerlによる動的生成で
HTMLデータを作って表示していました。
それが何を意味するのかというと、GooglebotなどがこれらのPermaLinkを
逐一巡回するたびに、Perlのプログラムがいちいち起動されるということです。
例えばメガとんトラックは 既に45万ページものPermaLinkを 持っています。
Googleにしてみれば星の数ほどある巡回対象のほんの一部なのかもしれませんが、
45万回の巡回を動的ページにされるのは相当なサーバ負荷につながります。
そこで思い切ってロジックを180度転換させ、メガとんトラックの個別linkidページは
全て 静的HTMLのpublish で作り出すモデルに変更しました。情報に更新があった
ときに静的HTMLデータ自体を再publishするという具合です。
(もはや自分でブログシステムみたいなものを作っているのと変わりないですな・・・)
自宅のWebサーバにはメガとん用だけで実際に 45万もの.htmlファイル が
作られた状態になっていて、それはそれで壮観ではあります。
Wii-Tubeのほうは、改造と移行が難しかったため、まだ完全に静的HTML化に移行
できたわけではありませんが、一度作られたHTMLをキャッシュとしてディスク上に残し、
次のアクセスからはキャッシュがあればそれを丸ごと返す、というロジックにしました。
Perlはアクセスごとに起動されてしまうものの、その処理内容は随分と軽くなっています。
以上、コミックダッシュ!本編とは違う部分だけに手を入れていたワケですが、
これらの対処によってサーバ全体の負荷上昇が多少抑えられ、重い時間帯も
少しずつ減ってきました。ただ、まだ重くて快適に操作できない時間帯が何度も
発生することを確認しています。今後も少しずつですが改善を試みたいと思います。
なお、コミックダッシュ!などで以下のように、HTMLデータは取得完了しているのに
Amazon画像だけが読めなくて 枠線だけが表示されるような状態になることもよくあります。
これは、実はコミックダッシュ!やあまともで表示されている商品画像はすべて
Amazon本家への直リンクになっているためです。すなわちAmazon側の画像表示サーバの
ほうも悲鳴を上げているためにこういうことが起こっています。
こればかりは私のほうではいまのところ如何ともしがたいところなのですが、
こういった状態が続くとそうも言っていられません。結局はコミックダッシュ!やあまともの
サービス自体の快適度に著しく影響を与えてしまいますので、必要であれば自宅サーバ側で
画像データまで一時キャッシュするようなことも考え始めないといけないのかもしれません。
皆さまにはご不便をお掛けして申し訳ございません。何卒ご容赦ください m(_ _;)m
今後ともコミックダッシュ!等のサービスを何卒宜しくお願いいたします。
投稿者 CK : 2007年7月18日 23:59 | コミックダッシュ!
« コミックダッシュ! 無関係な外国本が混ざる件について暫定対処中 | トップに戻る | コミックダッシュ! モバイル版実験中 - 外出先でコミック発売日を確認しよう » |
▼ コメント ▼
ご自由にコメントください(=゜ω゜)ノ
※管理人は多忙のためお返事はほとんどできません(スミマセン)。スパムおよび本文と無関係なコメントは削除対象になる可能性があります。
▼ トラックバック ▼
このエントリーのトラックバックURL: