プロセスの永続化でコスト削減 #perlbeginners

1,593 views

Published on

2013/11/29 PerlBeginners#!11 で発表したLTです。ビギナー向け勉強会なので、内容はいたって初歩的な範囲にしてあります。上級者からすると物足りない感じ。

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,593
On SlideShare
0
From Embeds
0
Number of Embeds
63
Actions
Shares
0
Downloads
3
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

プロセスの永続化でコスト削減 #perlbeginners

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

×