プログラミングとにかく大量のメールを受信するだけサーバが欲しかったのでPerlで作ってみました。Parallel::Preforkを使ったプリフォーク型サーバにしました。Parallel::Preforkでプリフォークの制御を行っています。以下がサーバのプログラムになります。プログラムの構成としては、Starletのコードを参考にしています。200,);$server-&gt;run;メールを受信してファイル書き込まずに捨てるだけのサーバです。大量のメールを受信してもだいぶ軽い動作になりました。TODOとしては、テストでメール受信統計などを取ることができるようになればいいなと思ってます。以下、主に使っているモジュールについての解説です。Net::Server::Mail::SMTPNet::Server::Mail::SMTPはSMTPプロトコルを実装したモジュールです。Net::Server::Mail::SMTPを使えば、自前のSMTPサーバを簡単に作ることができます。DATAなどのコマンドに対する処理をコールバックの形で書きます。意図したレスポンスがサーバから返ってくることが確認できます。host.テストでSMTPサーバを作成したい場合などに便利ですね。自動テストのためにメールサーバを一時的に起動するParallel::PreforkParallel::Preforkはプリフォークサーバを書くためのモジュールです。Parallel::Preforkはシグナル管理が可能になっています。次のようなプリフォーク型Echoサーバを書くことができます(あんま有用ではないですが)。親プロセス」分のプロセスが存在していることが確認できます。prefork_echoまた、telnetを用いて接続も確認できます。test2```何回か繋ぎ直すと、異なるプロセスが対応する様子が確認できます。pstreeなどで親プロセスの番号を調べて、SIGTERMを送るとサーバを終了させることができます。3963このように簡単にプリフォークサーバを書けるようになっています。#2196f3">まとめ</span></h2>メール送信系のシステムをテストする場合は、Net::Server::Mail::SMTPで受信サーバを書くのがとても良いです。プリフォークサーバを書きたい場合は、Parallel::Preforkがとても便利です。このようなツールを書くのに便利なモジュールがあって、やっぱりCPANは素晴らしいですね。se...最近インフラの話題が熱いです。予選で敗退しました(うさぎ工房)isuconは初回からずっと出ているのでこれで3回目。.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。