プロセスの永続化でコスト削減 #perlbeginners
DESCRIPTION
2013/11/29 PerlBeginners#!11 で発表したLTです。ビギナー向け勉強会なので、内容はいたって初歩的な範囲にしてあります。上級者からすると物足りない感じ。TRANSCRIPT
プロセスの永続化でコスト削減尾形 鉄次 (OGATA Tetsuji)
Twitter: @xtetsuji2013/11/29 PerlBeginners #11
自己紹介
• 尾形 鉄次 (OGATA Tetsuji)
• Twitter: @xtetsuji
• Blog: http://post.tetsuji.jp/ (最近サーバ不調)
• レガシーとモダンの間の伝道師
CGI回顧と最近
CGIが遅い理由• リクエストが来たら「Perlインタープリタを起動する」「Perlプログラムを読み込む」「付随するモジュールをロードする」といった処理を毎回行う
• Linuxにとってこれらが一気に来られたらかなり重い仕事になる
プロセスの永続化• そんなわけで生まれたのがmod_perlや
FastCGIとかSpeedyCGIとか…
• mod_perlはApacheとPerlにロックオン
• FastCGIは仕様が面倒ではあるがCGI
同様言語やウェブサーバを選ばない
最近では
• Perlのウェブプログラミングでは、Plack
ベースのウェブサーバ(Starman、Starlet、Monocerosなど)を裏に置いて、表でApacheやNginxが受ける形になって来ている
×××でも悪くない• Perl CGI(Plackのエンジン含む)でも社内とか自分ツールの規模感であればパフォーマンスに問題無いしいいのでは?
• mod_perlも癖はあるけど悪くないよ
• FastCGIはちょっと実装面で困る事も
永続プロセス嬉しい
• mod_perlやPlackベースのウェブサーバであれば「Perlインタープリタ」「Perl
プログラム」「付随するモジュール」は全てロードされた状態で待ち受け
• コスト低い(CPU/HDD>>>メモリ)
永続プロセス嬉しい
• CPUよりメモリの時代だけど64bit化やメモリの価格下落で対応可能
• 永続プロセスは、一度起動したらそのまま入出力を待つ形式だけど、入出力(I/O)自体のコストは低いので無問題
リフレッシュも
• 永続プロセスもリクエストを受けつづけるとメモリの肥大化が見られ場合があるのでpreforkモデルが使われる
• 子プロセスに処理させ、一定数のリクエストを処理したら親が子を刷新する
安泰なウェブ開発• ウェブ開発の世界は進化した
• もうCGIのようなものでパフォーマンスに頭を悩ませる必要はない
• DB(MySQLとか)も永続プロセスというかサーバですね
用語• 起動したプログラムは「プロセス」
• 起動しっぱなしのプログラムを便宜的に「永続プロセス」とか呼んでいる
• 巷ではその類の物は「デーモン」とか「サーバ」と呼ばれる事が多い
用語• プロセスを起動する事をLinuxではfork
と言う事も多い
• もともとはプロセスの分岐複製のこと
• 複製ではない新規プロセスの生成でも内部的にforkが使われているので、用語が流用されることがある(fork/exec)
メールというやつ
メールというやつ
• 今も生き残るメールとメール関連開発
• メールサーバ(MTA)でメールが受信したタイミングで処理をしたい
• e.g. エラーメール処理など
Postfix pipe
• 最近のMTA業界はPostfixで枯れている
• PostfixもSendmail由来のpipeがある
• 例えば “.forward” で“|/path/to/mail-recieve.pl”
• やったことある人多いのでは?
pipeは都度起動• Postfix pipeは永続プロセスではなく都度起動するプロセスなの注意
• 処理すべきメールが大量に押し寄せるとサーバが気絶する事がありがち
• ウェブ側が100req/secで大丈夫でもMTA
が100recv/secで大変になることある
MTAでも永続化• qpsmtpdなどのPerl製のサーバがある
• Perlの永続プロセスを使った大量の受信メール処理といった事例もある
• そういう設計にしてコストを低くして難局を乗り切る
ノウハウが少ない
• 世間はあまりメールに興味失い気味
• 検索してもノウハウ少ない
• 続きは「Postfix友の会」などでフォローしたい(主宰はPB同様あずまさん)
続きは…で• PerlBeginnersはビギナー向け勉強会だし雰囲気だけでも想像してもらえれば
• 続きは、Machida.pm、Postfix友の会主催イベント等の、より高度な内容を扱うイベントでやろうと思います
• ぜひ他の勉強会でも会いましょう
ご清聴ありがとうございました