Way*_*ker 13 java linux memory xss jvm
我在3个不同的服务器上运行了7个不同的java守护进程(全部7个).java命令行有-Xmx2048m和-Xss1024k.在这3台服务器上,所有21个进程在顶部和顶部都显示不到2.5 GB的VIRT大小.根据守护进程,RES大小从300到1.9 GB不等.
这就是应有的一切.
输入新服务器.更快的CPU,更多的RAM(16 GB而不是8 GB),略微更新的java(旧服务器上为1.6.0_10-b33,新服务器上为1.6.0_31-b04).两个系统(和JVM)都是64位.
将2个守护进程移动到新服务器.在新服务器上,给定相同的任务,守护进程都消耗了大量CPU(大约是核心价值)并且做得少.(从旧系统上的5110处理器转移到新系统上的5620处理器).
几乎是CPU使用的全部额外核心(GC线程??),并为一个守护程序报告5 GB VIRT和2 GB RES,为另一个守护程序报告10.5 GB VIRT和2 GB RES.
什么会导致java忽略(或似乎忽略,如果是这种情况)内存限制的任何想法?
Way*_*ker 11
事实证明这是一个glibc问题.
对我来说简短的回答是:
export MALLOC_ARENA_MAX = 1
这减少了过程占地面积(VIRT在顶部)多达5倍.回到CentOS 5中的水平.
最新版本的glibc有一个新功能"每线程内存池":
http://www.centos.org/docs/5/html/5.4/Technical_Notes/glibc.html
1.71.1日志部分中的最后一项讨论它(并指的是非公共错误....)
| 归档时间: |
|
| 查看次数: |
9086 次 |
| 最近记录: |