Cassandraの5ノードクラスターがあり、各ノードに約650 GBのデータがあり、レプリケーション係数は3です。最近、/ var/log/cassandra/system.logに次のエラーが表示され始めました。
INFO [ReadStage-5] 2017-10-17 17:06:07,887 NoSpamLogger.Java:91-最大メモリ使用量に達した(1.000GiB)、1.000MiBのチャンクを割り当てることができない
私はfile_cache_size_in_mbを大きくしようとしましたが、この同じエラーが追いつくのではなく、早くなります。私はこのパラメーターを2GBにしようとしましたが、役に立ちませんでした。
エラーが発生すると、CPU使用率が急上昇し、読み取りレイテンシが著しく不安定になります。私はこのサージが1/2時間おおよそに現れるのを見ます。以下のリストのタイミングに注意してください。
INFO [ReadStage-5] 2017-10-17 17:06:07,887 NoSpamLogger.Java:91-最大メモリ使用量に達し(1.000GiB)、1.000MiBのチャンクを割り当てることができませんINFO [ReadStage-36] 2017-10-17 17: 36:09,807 NoSpamLogger.Java:91-最大メモリ使用量に達した(1.000GiB)、1.000MiBのチャンクを割り当てることができないINFO [ReadStage-15] 2017-10-17 18:05:56,003 NoSpamLogger.Java:91-最大メモリ使用量に達しました(2.000GiB)、1.000MiBのチャンクを割り当てることができないINFO [ReadStage-28] 2017-10-17 18:36:01,177 NoSpamLogger.Java:91-最大メモリ使用量に達した(2.000GiB)、1.000MiBのチャンクを割り当てることができない
私が持っている2つのテーブルは1時間ごとにパーティション化されており、パーティションは大きいです。例nodetool table statsからの出力は次のとおりです
Read Count: 4693453
Read Latency: 0.36752741680805157 ms.
Write Count: 561026
Write Latency: 0.03742310516803143 ms.
Pending Flushes: 0
Table: raw_data
SSTable count: 55
Space used (live): 594395754275
Space used (total): 594395754275
Space used by snapshots (total): 0
Off heap memory used (total): 360753372
SSTable Compression Ratio: 0.20022598072758296
Number of keys (estimate): 45163
Memtable cell count: 90441
Memtable data size: 685647925
Memtable off heap memory used: 0
Memtable switch count: 1
Local read count: 0
Local read latency: NaN ms
Local write count: 126710
Local write latency: 0.096 ms
Pending flushes: 0
Percent repaired: 52.99
Bloom filter false positives: 167775
Bloom filter false ratio: 0.16152
Bloom filter space used: 264448
Bloom filter off heap memory used: 264008
Index summary off heap memory used: 31060
Compression metadata off heap memory used: 360458304
Compacted partition minimum bytes: 51
**Compacted partition maximum bytes: 3449259151**
Compacted partition mean bytes: 16642499
Average live cells per slice (last five minutes): 1.0005435888450147
Maximum live cells per slice (last five minutes): 42
Average tombstones per slice (last five minutes): 1.0
Maximum tombstones per slice (last five minutes): 1
Dropped Mutations: 0
Read Count: 4712814
Read Latency: 0.3356051004771247 ms.
Write Count: 643718
Write Latency: 0.04168356951335834 ms.
Pending Flushes: 0
Table: customer_profile_history
SSTable count: 20
Space used (live): 9423364484
Space used (total): 9423364484
Space used by snapshots (total): 0
Off heap memory used (total): 6560008
SSTable Compression Ratio: 0.1744084338623116
Number of keys (estimate): 69
Memtable cell count: 35242
Memtable data size: 789595302
Memtable off heap memory used: 0
Memtable switch count: 1
Local read count: 2307
Local read latency: NaN ms
Local write count: 51772
Local write latency: 0.076 ms
Pending flushes: 0
Percent repaired: 0.0
Bloom filter false positives: 0
Bloom filter false ratio: 0.00000
Bloom filter space used: 384
Bloom filter off heap memory used: 224
Index summary off heap memory used: 400
Compression metadata off heap memory used: 6559384
Compacted partition minimum bytes: 20502
**Compacted partition maximum bytes: 4139110981**
Compacted partition mean bytes: 708736810
Average live cells per slice (last five minutes): NaN
Maximum live cells per slice (last five minutes): 0
Average tombstones per slice (last five minutes): NaN
Maximum tombstones per slice (last five minutes): 0
Dropped Mutations: 0
ここに行く:
cdsdb/raw_data histograms
Percentile SSTables Write Latency Read Latency Partition Size Cell Count
(micros) (micros) (bytes)
50% 0.00 61.21 0.00 1955666 642
75% 1.00 73.46 0.00 17436917 4768
95% 3.00 105.78 0.00 107964792 24601
98% 8.00 219.34 0.00 186563160 42510
99% 12.00 315.85 0.00 268650950 61214
Min 0.00 6.87 0.00 51 0
Max 14.00 1358.10 0.00 3449259151 7007506
cdsdb/customer_profile_history histograms
Percentile SSTables Write Latency Read Latency Partition Size Cell Count
(micros) (micros) (bytes)
50% 0.00 73.46 0.00 223875792 61214
75% 0.00 88.15 0.00 668489532 182785
95% 0.00 152.32 0.00 1996099046 654949
98% 0.00 785.94 0.00 3449259151 1358102
99% 0.00 943.13 0.00 3449259151 1358102
Min 0.00 24.60 0.00 5723 4
Max 0.00 5839.59 0.00 5960319812 1955666
この問題を軽減する方法を提案していただけませんか?
投稿されたcfhistograms出力に基づいて、パーティションは膨大です。
raw_dataテーブルの95%パーセンタイルは、107MBのパーティションサイズで、最大3.44GBです。 customer_profile_historyの95%パーセンタイルのパーティションサイズは1.99GB、最大は5.96GBです。
これは、これらの巨大なパーティションがsstableに書き込まれるときに、30分ごとに気づく問題に明らかに関連しています。データモデルは、パーティション間隔を「時間」ではなく「分」に変更するために、パーティションサイズに基づいて変更する必要があります。したがって、2GBのパーティションは33MBのパーティションに削減されます。
推奨されるパーティションサイズは、最大100MBに近づけることです。理論的には100MB以上を保存できますが、パフォーマンスは低下します。そのパーティションのすべての読み取りは、ネットワーク経由で100MBを超えるデータであることを覚えておいてください。あなたの場合、それは2GBを超えているため、それに伴うすべてのパフォーマンスへの影響があります。