在Java销售过程中混淆内存报告

时间:2015-01-22 00:28:55

标签: linux memory solr jvm newrelic

我的服务器中运行了一个solr服务器。服务器有14Gb RAM。

当我查看New Relic图表时,服务器中使用的内存量似乎在3Gb左右:

enter image description here

当我执行htop命令时,我得到了不同的结果:

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
17063 root       20   0 33.4G 12.5G 11.3G S 451. 88.8  1h17:59 java -jar start.jar
17430 root       20   0 33.4G 12.5G 11.3G R 97.8 88.8  2:30.47 java -jar start.jar
17456 root       20   0 33.4G 12.5G 11.3G R 96.4 88.8  1:07.96 java -jar start.jar
17457 root       20   0 33.4G 12.5G 11.3G R 94.0 88.8  1:33.25 java -jar start.jar
17459 root       20   0 33.4G 12.5G 11.3G R 82.1 88.8  2:34.93 java -jar start.jar
17431 root       20   0 33.4G 12.5G 11.3G R 69.8 88.8  3:35.84 java -jar start.jar
17065 root       20   0 33.4G 12.5G 11.3G S  0.9 88.8  0:05.35 java -jar start.jar
17067 root       20   0 33.4G 12.5G 11.3G S  0.9 88.8  0:05.40 java -jar start.jar
17069 root       20   0 33.4G 12.5G 11.3G S  0.9 88.8  0:05.37 java -jar start.jar
17072 root       20   0 33.4G 12.5G 11.3G S  0.9 88.8  0:05.37 java -jar start.jar
17075 root       20   0 33.4G 12.5G 11.3G S  0.9 88.8  0:05.37 java -jar start.jar
17077 root       20   0 33.4G 12.5G 11.3G S  0.9 88.8  0:05.33 java -jar start.jar
17066 root       20   0 33.4G 12.5G 11.3G S  0.9 88.8  0:05.42 java -jar start.jar
17068 root       20   0 33.4G 12.5G 11.3G S  0.9 88.8  0:05.46 java -jar start.jar
17073 root       20   0 33.4G 12.5G 11.3G S  0.9 88.8  0:05.25 java -jar start.jar
17074 root       20   0 33.4G 12.5G 11.3G S  0.9 88.8  0:05.33 java -jar start.jar
17070 root       20   0 33.4G 12.5G 11.3G S  0.5 88.8  0:05.27 java -jar start.jar
17076 root       20   0 33.4G 12.5G 11.3G S  0.5 88.8  0:05.42 java -jar start.jar
17071 root       20   0 33.4G 12.5G 11.3G S  0.5 88.8  0:05.37 java -jar start.jar
17078 root       20   0 33.4G 12.5G 11.3G S  0.5 88.8  0:01.42 java -jar start.jar

为什么htop说这个过程消耗了11.3Gb?

free cmd:

             total       used       free     shared    buffers     cached
Mem:      14779804   14258740     521064        360      10628   12114752
-/+ buffers/cache:    2133360   12646444
Swap:            0          0          0

New Relic java进程内存使用情况:

enter image description here

我的进程真正使用了多少内存?为什么New Relic为整个服务器显示3Gb,为java进程显示13Gb?

1 个答案:

答案 0 :(得分:1)

您可以在New Relic论坛

找到相关信息

https://discuss.newrelic.com/t/why-do-free-and-or-top-show-different-memory-usage-than-the-new-relic-ui/273

对于单个进程,New Relic的Linux服务器监视器(LSM)不是以root用户身份运行的。由于Linux使用copy on write virtual memory scheme且非root用户对进程间共享的内存信息的访问权限有限,因此对于LSM查询的每个进程,将重新计算进程间共享的内存。结果是在受影响的进程的New Relic用户界面中反映出意外大的总内存使用量。 您在系统概述选项卡中看到的总内存使用情况由Linux内核报告,该内核可以完全访问有关进程之间共享内存的信息,此数字应准确反映计算机上使用的实际总内存。