2017-01-12 2 views
0

私が作成したgaleraセットアップでは、許容できない低パフォーマンスが得られます。私の設定では、アクティブ - アクティブに2つのノードがあり、私は両方のノードでHAプロキシロードバランサを使用してラウンドロビン方式で読み取り/書き込みを行っています。スタンドアロンmariaDBサーバーと比較してgaleraでパフォーマンスが非常に悪くなった

私は簡単に以下の構成を備えた単一mariadbサーバで自分のアプリケーションにTPS 10000乗り越えることができました: 36 vpcu、ガレラで60ギガバイトのRAM、SSD、の10GiG専用パイプ

私はほとんど3500を取得していないのです私は2つのノード(36vcpu、60GBのRAM)を使用していますが、HAのプロキシによってバランスの取られたDB負荷です。詳細については、ha-proxyは別のサーバー上のスタンドアロンノードとしてホストされています。私はhaプロキシを削除しましたが、パフォーマンスは改善されていません。

誰かがmy.cnfでいくつかのチューニングパラメータを提案してもらえますか?これは厳しく実行中のセットアップを調整することを検討する必要があります。 QCオフ

enter image description here

enter image description here

+0

まず、この質問はdba.stackexchange.comにあるはずです。可能なすべての一般的なパフォーマンスのヒントを一覧表示するよりも優先されます。一般的に、galeraクラスタは、(ノードが通信しなければならないので)単一のインスタンスよりも書き込み/トランザクションのパフォーマンスが遅くなります。 35%は予想よりも低いですが、構成内に何かがあるかどうかを判断するために実際に何をしているか(表の設計/照会)によって異なります。また、2ノードクラスタは実際にはクラスタが故障する可能性が高くなります(2つのクラスタに障害が発生した場合は両方とも障害が発生するため)。 – Solarflare

+0

ありがとうSolarflareは、これをdba.stackexchange.comに掲載します。また、私は質問のmy.cnfパラメータを提供しています。 – LakshayK

答えて

0

入れます:私は以下のmy.cnfファイル使用しています

query_cache_size = 0 -- not 22 bytes 
query_cache_type = OFF -- QC is incompatible with Galera 

増加innodb_io_capacity

をどのように遠く離れて( ping時間)は、tノード?

あなたはそれがマスタースレーブであるとふりますことをお勧めします。つまり、HAProxyにすべてのトラフィックを1つのノードに送信し、もう1つをホットバックアップとして残します。このモードでは、特定の処理が高速に実行されます。私はあなたのアプリについて知りません。

+0

こんにちは、ノードは、同じvpcと同じサブネット内にあり、私はping時間が50ミリ秒未満だと思います。私がgaleraを使用する唯一の目的は、共通のデータを保持しながら両方のマシンのCPUを利用できるかどうかを確認して、アプリケーションが単一のデータセットで仮想的に読み書きできるようにすることです。私はgaleraが私にこれをするための最良の選択肢ではないかもしれないと感じています。どう思いますか?どんな提案?NDBはどうですか? – LakshayK

+0

50msは約1500マイル/ 2500kmです。 50msではパフォーマンスが大幅に低下します。実際に1台のマシンでコアの半分以上を消費していましたか?また、受信側で複製を処理するにはCPUの処理が必要であることに注意してください。 –

+0

NDBには他にも多くの問題があります。これには、SQLでできることと不可能なことの重要な変更が含まれます。 –

2

私は簡単に以下の構成で 単一mariadbサーバで自分のアプリケーションにTPS 10000乗り越えることができました:36 vpcu、ガレラで60ギガバイト RAM、SSD、の10GiG専用パイプ

私は私は2台の ノード(36vcpu、60GB RAM)を使用していますが、ha-proxyでバランスのとれたDB負荷を使用していますが、3500 TPSはほとんど得られません。

Galeraに基づくクラスタは、意図したとおりに書き込みを拡大するようには設計されていません。実際、前述のRickのように、同じテーブルの複数のノードに書き込みを送信すると、アプリケーションのデッドロックとして反映される認証の競合が発生し、オーバーヘッドが大きくなります。

ギャレラのセットアップで許容できない低性能を実現しました。 が作成されました。私の設定では、アクティブ - アクティブに2つのノードがあり、 ロードバランサを使用して、両方のノードでラウンドロビン方式で読み取り/書き込みを行っています。

すべての書き込みを1つのノードに送信し、それがパフォーマンスを向上させるかどうかを確認してください。 Galeraが使用する仮想同期レプリケーションの性質上、オーバーヘッドが発生します。これは文字通り、各書き込みにネットワークオーバーヘッドを追加します(実際のクロックベースの並列レプリケーションではこの影響はかなり相殺されますが、わずかに低いスループット量を参照)。

また、レプリケーション認証プロセスはシングルスレッドであり、他のノードへの書き込みをストールするため、アトミック作業単位の処理が完了したらすぐにトランザクションを短くしてCOMMITを保つようにしてくださいwriterノードは、他のノードが大規模トランザクションの認証を行っていること、またはノードがある種のパフォーマンス問題を抱えていることを意味するトランザクションwsrep pre-commitステージを表示します。あなたが単一のノードに移動したときにどのように動くかを教えてください。

+0

のように、彼らは現在、 –

関連する問題