当Cassandra运行时,几乎所有的RAM都被消耗了,为什么?

li9yvcax  于 8个月前  发布在  Cassandra
关注(0)|答案(3)|浏览(104)

我有CentOS 6.8,Cassandra 3.9,32 GB RAM。当我启动Cassandra时,一旦它启动,它就开始消耗内存,并在我开始从CQLSH或Apache Spark查询时开始添加'Cached'内存值,在这个过程中,用于其他处理(如cron执行)的内存非常少。
这里有一些细节从我的系统

free -m
         total       used       free     shared    buffers     cached
Mem:         32240      32003        237          0         41      24010
-/+ buffers/cache:       7950      24290
Swap:         2047         25       2022

下面是top -M命令的输出

top - 08:54:39 up 5 days, 16:24,  4 users,  load average: 1.22, 1.20, 1.29
Tasks: 205 total,   2 running, 203 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.5%us,  1.2%sy, 19.8%ni, 75.3%id,  0.1%wa,  0.1%hi,  0.0%si,  0.0%st
Mem:    31.485G total,   31.271G used,  219.410M free,   42.289M buffers
Swap: 2047.996M total,   25.867M used, 2022.129M free,   23.461G cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
14313 cassandr  20   0  595g  28g  22g S 144.5 91.3 300:56.34 java

您可以看到只剩下220 MB,缓存了23.46 MB。
我的问题是如何配置Cassandra,以便它可以使用“缓存”内存到特定值,并为其他进程留下更多的RAM。
先谢了。

oug3syen

oug3syen1#

您可以在cassandra-env.sh的conf文件夹下设置大小。这篇文章应该有所帮助。http://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsTuneJVM.html

8dtrkrch

8dtrkrch2#

编辑/etc/cassandra/jvm.options并为内存消耗设置所需的值,例如-Xms1G-Xmx1G,如果您想给予1 Gb。
请注意,“缓存”内存仍然可以被其他进程获取。它只是一种保留,例如。其实也没那么糟。但即使是Cassandra的非缓存内存消耗也相当高,因此对于Cassandra上没有高工作负载的开发,您可能仍然需要配置限制。

u1ehiz5o

u1ehiz5o3#

在Linux中一般缓存内存作为你的23 g就真的很好了。这些内存被用作文件系统缓存等等-而不是cassandra本身。Linux系统倾向于使用所有可用内存。
这有助于以多种方式加快系统速度,以防止磁盘读取。
你仍然可以使用缓存的内存--只要启动进程并使用你的内存,内核会立即释放它。

相关问题