web-dev-qa-db-ja.com

NoSpamLogger.Java最大メモリ使用量に達しましたCassandra

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

この問題を軽減する方法を提案していただけませんか?

7
Varsha

投稿されたcfhistograms出力に基づいて、パーティションは膨大です。

raw_dataテーブルの95%パーセンタイルは、107MBのパーティションサイズで、最大3.44GBです。 customer_profile_historyの95%パーセンタイルのパーティションサイズは1.99GB、最大は5.96GBです。

これは、これらの巨大なパーティションがsstableに書き込まれるときに、30分ごとに気づく問題に明らかに関連しています。データモデルは、パーティション間隔を「時間」ではなく「分」に変更するために、パーティションサイズに基づいて変更する必要があります。したがって、2GBのパーティションは33MBのパーティションに削減されます。

推奨されるパーティションサイズは、最大100MBに近づけることです。理論的には100MB以上を保存できますが、パフォーマンスは低下します。そのパーティションのすべての読み取りは、ネットワーク経由で100MBを超えるデータであることを覚えておいてください。あなたの場合、それは2GBを超えているため、それに伴うすべてのパフォーマンスへの影響があります。

10
dilsingi