crumbjpLinuxとApacheの憂鬱この広告は、90日以上更新していないブログに表示しています。2008-11-30アパッチのソケットサーバ実装apache少しずつアパッチの中の話をしていきます。今回はネットワークサーバの基本となるソケット実装の話です。アパッチのソケットサーバ実装は結構有名な方法だと思っていたのですが人との会話中に、意外と知られていないのかもしれないと感じる事もあったので書いてみようと思った次第です。--accept()に戻るこの様な実装は良く見かけますし実際、簡易なサーバアプリケーションならばこれで問題ありません。一般的な実装の特徴と問題点クライアント処理を行うプロセスを分離できるので、実装時に考慮するべき点が少ないので実装難度が低くなります。不幸にも特定のクライアント処理中にプロセスが死んでしまった場合でも、他のクライアント処理には影響が無いので障害に強くなります。代表的なFTPサーバであるproftpdなどもこの実装です。)しかしアパッチの様な不特定多数のクライアントを相手とする場合はクライアントの接続毎に子プロセスを生成を行うこの方法は非効率です。アパッチでは以下の様な実装方法で効率化を図っています。--accept()に戻る複数の子プロセスが独自に平行してaccept()しておりクライアント接続があった際にそのどれか一つのaccept()が復帰します。いえば私自身、アパッチのソースを読んで初めてマルチプロセスで並列にaccept()が出来る事を知りました。(しかしプラットフォーム依存の様です)毎回fork()しないので効率的です。クライアントプロセス数を調節することで簡単に処理能力を調整できます。頑張って図解してみます。workerの違いですがperforkは上記の方法そのままです。workerでは、子プロセスがマルチスレッドになっていて以下のスレッドで処理されます。listen_thread(単一スレッド)accept()で得たclient_sockをキューに積むworker_thread(複数スレッド)上記のキューからclient_sockを取り出しWEBサーバとしての処理を行う。VPSのスローダウン仮説サクラvps3Gのmongoで原因不明のスローダウンが発生。認証周り以前、盛大にハマったので、備忘録です。和訳(&少々所感)しました。今時、digest認証なんかしたくないんだが。クエリーITシステムを構築するということ月別アーカイブはてなブログをはじめよう!hiropponさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。