Gazelle という新しいPlack::Handler(Server)をリリースしました

https://metacpan.org/release/Gazelle

前のISUCONの結果報告で「Chobi」として紹介していたものを名前を変更しました。

GazelleはnginxやApacheでreverse proxyを行うことを前提に書かれたPlack::Handlerです。nginxの後ろにunix domain socketを利用して配置した場合、”Hello World”のベンチマークで、Starmanの3倍、Starletの1.7倍程度高速に動作します。

gazelle_bench.png

一番左はnginxで静的ファイルを配信した場合のQPSです

ベンチマークの詳細はこちら↓です

https://github.com/kazeburo/Gazelle/wiki/Benchmark

特徴など

Gazelleは以下のような特徴をもっています

  • HTTP/1.0のみをサポート。ただしKeepAliveはサポートしない。これにより実装がシンプルに
  • io処理をすべてXSで記述。Perlのファイルハンドルは使わない
  • Linuxではaccept4(2)を使う。accept4(2)がサポートされていないプラットフォームではaccept(2)を使います
  • kazuhoさんのpicohttpparserを使って高速にリクエストのパースを行う
  • acceptから最初のpacketを読み込み、ヘッダーをパースするまで1つのXSで書かれた関数内で処理する。Perlの処理が入らず、またZero Copyで動作する
  • レスポンスの書き出しはwritev(2)を使う
  • Starletを使っているところはそのままの設定で入れ替え可能

その他、Starletと同じく

  • Parallel::Prefork によるPreforkアーキテクチャ
  • Server::Starterを使ってのhot deploy

一言でまとめると、kazuhoさんのソフトウェアで出来ているサーバです。既に某サービスの1台のサーバで使い始めたのでぜひ使ってみてください。

このブログ記事について

このページは、Masahiro Naganoが2014年11月13日 17:19に書いたブログ記事です。

ひとつ前のブログ記事は「ISUCON4 で優勝してきました!!! #isucon」です。

次のブログ記事は「Unicornの2倍のパフォーマンスを実現したRackサーバ「Rhebok」をリリースしました」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja