Home > Thrift Archive

Thrift Archive

Thrift: TThreadPoolServer

Thrift (ver. 20080411p1)のTThreadPoolServerがバグっている件。

過負荷時に、処理が追い付いていないにも関わらずaccept(2)し続け、ファイルディスクリプタを食いつぶす。

対処するには、まず以下のようにthreadManagerを作る際にタスクキューサイズの上限を設定する。ここでは128。


shared_ptr<ThreadManager> threadManager(ThreadManager::newSimpleThreadManager(20, 128));

次に以下のパッチを当てる。

これで安定稼働する模様。 thanks to id:tkng and id:nvaca
ってか次のstableいつでるんだよー!

Thriftを利用したログからの復旧機能の実装

さてさて卒論発表終わりましたよ。寝まくり&飲んだくれ&焼肉。暇な人遊んで。

最近、多言語RPC機構が欲しくなる機会が多く、Thriftを使ってみたりしています。

まずは3つ目のサイボウズ開発本部アルバイトの山本さんの記事を読むと、thriftがどういうものなのかが分かると思います。簡単に言いますと、RPCのAPIを独自記法で定義したファイルを用意し、それをthriftコンパイラに入力として与えると、各言語用にRPC用のコードを自動生成してくれるというものです。

クライアント・サーバーコードを各言語で書けるのは当然として、マルチスレッド型・イベント型などサーバーの種類を選べる等々、色々気が利いていて良い感じです。

似たものとしてbinpacというのも有るらしいのですが、これは実装は公開されてないみたいです。Googleの人がfirst authorなので中で使われているのかもしれませんね。

ところで先日コードを読んでいたら、Thriftを使うとログからのサーバー状態復旧機能が簡単に作れる事に気づいたので書いてみます。White Paperにもこの機能について少し言及はしてあるのですが具体的なコードまでは書いてません。

Continue reading

Home > Thrift Archive

お薦め本
広告
Archives
Categories

Return to page top