代码之家  ›  专栏  ›  技术社区  ›  Rob N

为什么Cassandra要占用这么多内存,尽管有-Xmx堆选项?

  •  0
  • Rob N  · 技术社区  · 7 年前

    config/jvm.options )将这些参数传递给Java虚拟机,以限制堆大小。

    -Xms180M -Xmx180M
    

    ps ax | grep java ,显示:

    [...] /usr/lib/jvm/java-8-openjdk-amd64/bin/java [...] 
       -Xms180M -Xmx180M [...] org.apache.cassandra.service.CassandraDaemon
    

    这里有一块屏幕 top :

    KiB Mem :  1009128 total,    87072 free,   643488 used,   278568 buff/cach
    KiB Swap:        0 total,        0 free,        0 used.   222228 avail Mem 
    
      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                 
    20410 cassand+  20   0 2048132 433828   8456 S  0.3 43.0  41:25.22 java          
    

    是不是 RES 433828

    1 回复  |  直到 7 年前
        1
  •  4
  •   Jeff Jirsa    7 年前

    Cassandra有一个堆上部分(由-Xmx控制)和一个堆外部分。大多数堆外数据结构通常随数据大小而扩展,例如分区索引、bloom筛选器和压缩块数据存储在直接内存区域中,并随磁盘使用量的增加而增加。

    您可以对它们进行一些调整,但它们不太明显,并且具有性能折衷。例如,提高 bloom_filter_fp_chance 0.01 0.1 将使用更少的内存,但您可以在读取路径上读取额外的sstables。

    推荐文章