2017-01-03 5 views
0

小さなBigtableクラスター(最低3ノード)をテストしています。 Googleコンソールでは、Write QPSレベルが10Kに近づくにつれて、CPU使用率が〜80%の推奨最大値に近づくことがわかります。Google Bigtableのパフォーマンス:QPS vs CPU使用率

QPSメトリックは、各ノードではなく、インスタンス全体のものですか?その場合、技術的にはQPSの負荷は30,000ガイダンスの1/3にすぎませんが、なぜCPUのしきい値に達するのですか?私はちょうど何か私のデータアップロードプログラム(Dataflow経由で行われている)でオフになっているかどうかを理解しようとしています。

なぜ私は30K Writes/secに近いものを観察することができないのか不思議ですが、これはデータフロー側の制限によるものだと私は思っています。 ..

答えて

0

CPUグラフには、Bigtableに過負荷がかかっていることを示す明確な指標が表示されます。残念ながら、一括書き込みAPIを追加して以来、QPSは過負荷の根本的な原因を特定するための理想的な指標ではありません。 Bigtable/Dataflowの読み込みでは、1回のバッチで複数のリクエストを送信するクラウドbigtableのバルクAPIを使用し、1回のクエリで数回の更新リクエストが可能になりました。 1秒あたりに更新された行はより良いメトリックですが、クラウドビッグテーブル側にはまだ存在しません。 Cloud Bigtableの手順でデータフローのUIに相当する指標があり、その数値を使用してCloud Bigtableのパフォーマンスを判断できます。

私が使用する経験則は、書き込みを行うときに〜1 Cloudflow BigtableノードあたりのデータフローワーカーCPUです。あなたの仕事は8つのCPUと3つのBigtableノードで適切に設定されている可能性が非常に高いです。あなたの説明を考えれば、あなたのシステムはできるだけ効率的に働いていると思います。

+0

上記のおかげで、いつものように役立ちました。他にも2つの観測があります。(1)このポストの提案に従って、部分的な行キーを使用してテーブルをいくつかの領域に分割しました[リンク](http://stackoverflow.com/questions/39169327/populating-data -in-google-cloud-bigtable-is-taking-long-time)です。これは、行を半分にアップロードする時間を削減するようです。 –

+0

(2)不思議なことに、BigtableのスループットはConsole Chartの提案よりもはるかに高いようです。グラフには7Kの書き込み/秒以上のデータが表示されませんでしたが、8データフローの作業者(100m/12/60/3 =ノードあたり〜45K書き込み/秒)を使用して~12分で100mの行を書きました。おそらく、CPU使用率がその段階で最大に近づいた理由です。また、フラットな(データフローではない)1n-standard-8マシンを使って、〜2分で9mスキャン/書き込み/削除操作を実行したので、9m/2/60/3 =〜20k操作/秒です。再び、コンソールチャートは> 7k/secの操作を示していませんでした。 –

+0

私は両方のテストの後に物理的に各行を横断しました - すべてがそこにあるように見えます)実際のパフォーマンスはコンソールチャートよりもはるかに優れています... –