gallu’s blog

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

ちょっと性能など意識しつつ

  • 動的な静的データ

例えば…掲示板があるです。
当然ながら動的なPageではあるのですが。readのたびに「動的に作る」のももちろんありなのですが、一つとして「書き込まれたときにそのタイミングで静的なpageを作っておく」のもありなのではないでしょうか?
具体的には、例えば「readに対してwriteが100:1」とかなら、かなりの性能改善が期待できます。
例えば…カウンタがあるです。
Top Pageで「毎回SQLでcount(*)を10回ぶん回す」とかかなりシャレにならないです。
そんなにリアルタイムでなくてよければ、例えば一時間に一回countをぶん回して情報をfileにでも書いておいて、とかやると性能改善が期待できます。


動的な情報を適切なタイミングで「静的に」作成しておくってのは(writeされるタイミングとか、一定時間毎とか)、特に性能を考え始めるときに一つの手段としてありえます。

  • いったんファイル

ある、わりと強烈なリクエストを処理する必要があるとします。で、そんなにタイトなリアルタイムである必要はないとします。
その場合、一端「リクエスト情報をファイルに書き込んで終了」して、定期的に「ファイルをベースにしてbatch処理をする」って手段があり得ます。
以前は、某所でのアンケート(ってか投票)でこれをやりました。投票データは「とにかくファイルに書いて終わり」で、投票データのvalidateやらその他諸々の処理は「後で落ち着いて(別マシンで)のんびりとbatch処理」って感じです。
めっさ高圧なメール処理がありまして。一端Maildirでファイル化して終了、cronでMaildirのファイルをmvしてからのんびり処理。
なんだかんだ「ファイルに書き込むだけ」のほうが、ごにょごにょ処理するより早いってのは当然なので。アクセス圧に並のある状況は一度「ファイルでバッファして」後でのんびり処理、ってのも案外に気楽なものです。
ちなみに複数台になるときは「パスワード無しのscp」とか「localに限定しといてNFS」とか色々手段はあります。