
私はしばらくの間、ローカルで Cassandra を使用して開発を行ってきましたが、クエリの応答時間は 50 ミリ秒程度です。
Cassandra コミュニティ ami から 5 ノードの EC2 クラスターをセットアップしました。すべて正常に動作し、opscenter は稼働しており、問題はありません。
キースペースを作成する場合でも、空のテーブルで select * を実行する場合でも、AWS ネットワーク外のマシンからクエリを実行すると、応答時間は 20 秒を超えます。
同じリージョン内のマシンからクエリを実行すると、応答時間は 1 ~ 2 秒で、依然として非常に遅いです。
EC2マシンはすべてm1.large eu-west-1aです
なぜこのようなことが起こるのか、または問題を見つけるためにどこを調べればよいのか、何かご存知ですか?
答え1
DevCenter の現在のバージョンは、(クエリが次々に実行される対話型コンソールではなく) (長めの) CQL スクリプトの実行を主なシナリオとしてサポートするように設計されています。DevCenter は、基盤となるコネクタとして Cassandra 用の DataStax Java ドライバーを使用しています。
上記のシナリオでは、「競合」が発生しないようにするために、実行ごとに新しいセッションが作成されます。セッションが初期化されると、ドライバーは自動ノード検出を実行し、接続プールなどを作成します。基本的に、ドライバーは多くの準備作業を行います。クライアント マシンから EC2 ノードまでのレイテンシ、クラスターのサイズ、およびこれらのノードの構成 (接続要件を参照) によっては、この初期化フェーズにかなりのコストがかかる場合があります。
ご想像のとおり、準備に費やされる時間は、DDL スクリプトの実行や挿入/更新の適切なサイズに占める割合は大きくありません。ただし、対話型のシナリオでは、最適ではない動作 (説明しているもの) が発生します。
DevCenter の次のバージョンでは、インタラクティブなシナリオに対応し、それに合わせて最適化して、期待どおりのユーザー エクスペリエンスを実現します。このシナリオのサポートは、私たちの優先事項リストの上位にあります。