2009-08-31 7 views
4

私たちの設定は、Debian lennyの標準のnginx(ver 0.7.59)+上層サーバです。今、我々はweb/appと1 db boxのための1つの牛の箱にいる。最近、私たちは、細かいことが最終的に「ぶら下がり」することに気付きました。つまり、彼らはもはやnginxからのリクエストを受け取らなくなります。我々は15の細い線を走らせており、10-15分後に最初の1つまたは2つがぶら下がります。一日中放置されていれば、同じくらいの数に加えてさらに数回は掛かったままになります。これまでに私が見た唯一の修正は、nginxを再起動することです。再起動後、ハングしたシンがリクエストを直ちに受信し始めます。このため、それらの細かい部分が上流のプールから取り出されたように見えます。Nginxアップストリームサーバをプールから削除する

nginxがバックエンドサーバーと10秒以内に3回「通信」できない場合、既定値(われわれの既定値)を正しく理解していれば、アップストリームサーバーを "動作不能 "状態になる。その後、10秒間待ってから、そのサーバーを再試行します。それは理にかなっていますが、薄いハングが無期限に見られています。私はそれぞれの細かい点についてmax_failsを0に設定しようとしましたが、それは助けになりませんでした。上流のサーバーが永久的に「不稼動」になる原因を突き止めることはできません。

最近、急激な成長率の上昇が見られたため、それが関連するかどうかは不明ですし、短期間でより多くのトラフィックが発生したことからも明らかです。

nginxにはサーバーが完全にプールから外れてしまう何か(変更可能な指示文やその他の条件)がありますか?

答えて

5

私はnginxのリバースプロキシサポートに多くの問題があり、最終的にはHAProxyをMongrelとnginxの間に置くことでより良いアーキテクチャを達成しました。私たちはnginxのは、あまりにも多くの要求で雑種をあふれさせるというものであったと雑種の要求キューは、固体ではなかった(HAProxy前)以前見たもの

ウェブ=> nginxの=> haproxy =>雑種

とそれ:だから私たちのアーキテクチャですあまりにも多くのキューに入れられたリクエストに素早く立ち往生することになります。 HAProxysのキューははるかに安定しており、nginxよりもバックエンド間のすべてのリクエストのバランスがよくなります。 nginxは、実際には最小接続などのアルゴリズムが優れている場合にのみ、ラウンドロビンバランスを提供します。 ThinがMongrelと同じ問題を抱えているかどうかはわかりません。

私たちの新しい設定では、nginxでは、単一のハプロキシインスタンスへのプロキシとhaproxyだけで、登録されたすべての混乱が設定されています。 HAProxyは上流のok/fail検出をより良くサポートしており、各アプリケーションサーバーをMongrelにとって重要な1つの接続(maxconn指令)に制限することもできます。

maxconnディレクティブは、EngineYardがnginxのネイティブにするnginx用のパッチを持っているので、HAProxyを配備する必要はありません。

参照:nginx-ey-balancer

+0

うん我々の前にいることがわかるのだと私たちは(公正プロキシバランサプラグインを使用して言及するのを忘れhttp://brainspl.at/articles/2007/11/09/a-fair- proxy-balancer-for-nginx-and-mongrel; http://wiki.nginx.org/NginxHttpUpstreamFairModule)は、ラウンドロビンの代わりに最低ビジーアルゴを使用します。それはうまく動作し、#要求/シンは時間の経過とともにも非常に近いです。 私はちょうどnginxからの要求をもはや受け取らないようにしている原因を突き止めることができたら、HAProxyのような別のレイヤーを導入する必要はないと思っていました。 nginx-ey-balancerは、基本的にHAProxyを必要とするHAProxyのmaxconn algoを模倣していますか? –

+1

はい、nginx-ey-balancerは、HAProxyを必要とするHAProxyのmaxconn algoを模倣します。私たちが最初にhaproxyに切り替えた理由のほとんどは、今や私たちのアーキテクチャーの一部になっています。 –

+0

あなたの助けに感謝します。 nginx-ey-balancerを試してみると思います。 nginx v 0.6.34/35と0.8.0用のパッチしかありません。どちらかが0.7.59に一致し、どちらが最善か期待しているか、0.8.xが安定するまで待ちます。 –

関連する問題