xmx堆选项?

6mw9ycah  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(454)

我正在我的服务器上运行cassandra(一个java进程),它的内存有限。我编辑了Cassandra的配置( 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

但它似乎使用了超过180mb的内存,而且另一个服务器进程也在不断消失。我猜内核正在杀死另一个进程,因为内存有限。
这里有一块屏幕 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 Cassandra使用的内存是433MB吗?在我将java堆限制为180mb之后,这看起来可能吗?如果堆被限制为180MB,那么其他433-180=253mb是什么?我也可以限制吗?

fzsnzjdm

fzsnzjdm1#

cassandra有一个堆上部分(由-xmx控制)和一个堆外部分。大多数堆外数据结构通常会随着数据大小而扩展,例如分区索引、bloom过滤器和压缩块数据都存储在直接内存区域中,并随着磁盘使用量的增加而增加。
您可以对它们进行一些调整,但它们不太明显,而且有性能折衷。例如,提高 bloom_filter_fp_chance0.010.1 将使用更少的内存,但您可以在读取路径上读取额外的sstables。

相关问题