がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

「高負荷Webサービスへの対策と構成」いてきました

先に。所々きっつい突っ込みするですが(って思ったけどそうでもなかった)、全体としては「わりあいによい感じ」でした。


まず「高負荷」の定義がちゃんとあるのがぐっど。且つ、対応の角度があちこちに散らばってるのもぐっど。
ってあたりは、ほかの普通の講義にも参考にして欲しいなぁとか思う事しきり。
# 高負荷の講義やって「高負荷の定義は?」って質問に固まられるとこっちが固まっちゃいますがな。


まずターゲティングされてるのが「CPU負荷の増大」。最終的には「プロファイラつかえや」とかになるのでしょうが。
とりあえず「ループの中をチェック」とか「でっかいデータとかファイルとか」「画像処理とか動画処理とか」。
うんまっとうだけど…割合に最近の若い子が知らない話なのかも。82の法則とかいう話が昔話になられても困るんだけど(苦笑


DBがボトルネックってもも結構多々。個人的には「5+重(5重以上)にネストしたおしたSQL」に原子分解の呪文でも唱えてみたくなるのですがどんなもんなんでしょうか?
「DBのディスクフラグメンテーションによる速度低下」も、実は案外に耳にする話だったりします。


ネットワークがボトルネックなのはある意味基本。でも最近この辺で逃げられなくなってる現状があるのがある意味つらい(笑
ディスクのI/Oは旧来から伝わる伝統的な「重い処理(ってか遅い処理)」だと思うのですが…どんなもんなんですかねぇ?


とまぁ、Listingは非常によいと思うです。


で、次に対策。


コーディングの対策として「ループ内処理の改善」は、至極まっとう。ある意味懐かしいとすら言える内容なので、特に突っ込みなし。
SQLの話で例えば「data_formatなどは本当にSQLでやる必要あるの?」という疑問は非常に同意。っつか必要あるって言われたらむしろ悩むぞ?
index(RDBのインデックス)の話は…当たり前な話のはずなんだけど、案外知られてなかったり。大事大事。
SQLを一度EXPLAINでってのも至極まっとう…なんだけど、最近やってないなぁ(苦笑
# まぁそも「ややこしいSQLを発行しないようにしてる」ってのもあるんだけど。
EXPLAIN…記憶に間違いなければ大抵のDBMSで使えたと思うですが…NGなシステムとかあったら教えてぷりぃづ。


処理構造の対策は…ぢつはちょっと突っ込みたい。
出力キャッシュの話が出ていて、割と絶賛してたんだけど。個人的にはトラブルの経験も多々あるだけに、ちょっと慎重。
もちろん「慎重に選定したうえで使えば」効果は絶大なんだけど…まぁトラウマ多々なので。
この辺は一度、しっかり考察してみたいなぁ。
クエリキャッシュについて「開発時にこれに阻まれて性能を勘違いする可能性」については同意。開発時は「運用以上に不利な状況」でチェックしてなんぼです。
バッチ処理はおおむね同意。っつか「リアルタイムぢゃなくていいモノまでリアルタイムにしない」のは大切。
ただ、メールをバッチ処理するときは注意。一定時間内の通数(個人的にmail圧と呼んでますが)が高いと、一時的に嫌がられます(MWではこれがあるので「SMTPしゃべるクラス」を実装中)。


ソフトウェア対策は…「チョイスできる環境なら」程度の話も多々。でも、手持ちのカードとしては認識したい内容ばかり。
PHP5が4より早いってのは、どのみちPHP4眼中にないので却下w
OSについては…バージョンアップもそうだけど、OS自体を軽くするのも多少なり効果が…あるのか? タイトな環境だと結構響きそう。
DBのレプリケーション関連は…一定の環境下において有効なはず。ちょっとこの辺実践積みたいなぁ。
オプティマイザ系列は…どうなんだろ? 論理的に有効なのはよくわかるんだけど。可能なら、MWを全部オプティマイズしたりするとよいんだろうか?


クラスタリング周りの話が色々。
無料で出来るよねぇな話は最近おいら的にもhotな話。っつかマジ時間やりくりしてがっつり触りたい。
ただ…うん確かに「設計しくったらNG」ってのは非常に強いので色々と注意。
ちなみに、PHPでのセッションの話で「NFSでディスク共有」って出てたけど。これ、asyncデフォルトなNFS(古いバージョンが確かこっち)だと色々と引っかかりやすいので要注意。
個人的には、ここは少々しんどくても基本DBだと思うなぁ。
各ソース(プログラムだけじゃなくて、テンプレートだとか画像だとかcssだとかjsだとかその他諸々)のばらまき方はどこまでいっても議論のネタ。個人的には、一箇所「ばらまき元」作ってrsyncをバッチでとかいうのが好み。
ただここまでやってなお次に「キャッシュ系のファイルの取り扱い」とかが出てくるので色々面倒。
この辺は…さすがに「共通化出来るほどの数」やってないからなぁ。憶測&特定現場固有の可能性も多々。でも考察しておく事は非常に重要だと思うけど。


監視周りの話が少し。うんなんて言うかめっさ重要だよねぇ。
で…監視周りを考えるたびに「嗚呼なんでAWKもっとちゃんとまじめにやらんかったんやろう」とか思ってしまう…のはダメかしらん?
いやまぁグラフィカルいいんだけど、アラートメールとかってAWKでシンプルに処理すると楽なのよ。
…自分の勉強かねて「AWK講座」でも書こうかしらん?


質疑応答。…時間が無くて駆け足な感じでしたが(苦笑
本日唯一初耳だったのが「アクセラレータでApacheプロセスが落ちる」こと。…まぁ予想はしてたけどやっぱりありえるんだぁって感じ。


まぁ全体を通して…「全然知らない話」はほぼ無かったものの「かなり忘却の彼方に行きかけてた」話はあったので、脳内整理をする意味合いを含めて、参加した価値は十分にあったかなぁと。
一度、色々と知識整理しないと…自分でも忘れてる事多そうだ(苦笑