一条运维短信引起的思考
2016-04-11 00:00
591 查看
刚吃完饭,看到手机来了几条短信,显示内存不够,赶紧登陆机器
发现问题:
8G内存,占用了7G,而我的java进程设置了 -Xms2048m -Xmx2048m ,那内存跑哪去了?
恰好看到azkaban计算可用内存代码,留存一份,代码如下:
private static void readMemoryInfoFile() {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(MEMINFO_FILE));
long sizeMemFree = 0;
long sizeBuffers = 0;
long sizeCached = 0;
long sizeSwapCached = 0;
int count = 0;
String line = br.readLine();
while (line != null) {
if (line.startsWith("MemFree:") || line.startsWith("Buffers:")
|| line.startsWith("Cached") || line.startsWith("SwapCached")) {
int idx1 = line.indexOf(":");
int idx2 = line.lastIndexOf("kB");
String strSize = line.substring(idx1+1, idx2-1).trim();
if (line.startsWith("MemFree:")) {
sizeMemFree = Long.parseLong(strSize);
} else if (line.startsWith("Buffers:")) {
sizeBuffers = Long.parseLong(strSize);
} else if (line.startsWith("Cached:")) {
sizeCached = Long.parseLong(strSize);
} else if (line.startsWith("SwapCached:")) {
sizeSwapCached = Long.parseLong(strSize);
}
//all lines read
if (++count == 4) {
break;
}
}
line = br.readLine();
}
if (count < 4) {
logger.error("Error: less than 4 rows read from /proc/meminfo for free memory information");
}
long sizeTotal = sizeMemFree + sizeBuffers + sizeCached + sizeSwapCached;
logger.info(String.format("Current system free memory is %d kb (MemFree %d, Buffers %d, Cached %d, SwapCached %d)",
sizeTotal, sizeMemFree, sizeBuffers, sizeCached, sizeSwapCached));
if (sizeTotal > 0) {
updateFreeMemAmount(sizeTotal);
}
} catch (IOException e) {
logger.error("Exception in reading memory info file", e);
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
logger.error("Exception in closing the buffered reader", e);
}
}
}
以后别不知道怎么计算一个机器的可用内存了哈!
命令行的方式就是
参考:
azkaban.execapp.ServerStatisticsServlet.fillRemainingMemoryPercent
发现问题:
8G内存,占用了7G,而我的java进程设置了 -Xms2048m -Xmx2048m ,那内存跑哪去了?
恰好看到azkaban计算可用内存代码,留存一份,代码如下:
private static void readMemoryInfoFile() {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(MEMINFO_FILE));
long sizeMemFree = 0;
long sizeBuffers = 0;
long sizeCached = 0;
long sizeSwapCached = 0;
int count = 0;
String line = br.readLine();
while (line != null) {
if (line.startsWith("MemFree:") || line.startsWith("Buffers:")
|| line.startsWith("Cached") || line.startsWith("SwapCached")) {
int idx1 = line.indexOf(":");
int idx2 = line.lastIndexOf("kB");
String strSize = line.substring(idx1+1, idx2-1).trim();
if (line.startsWith("MemFree:")) {
sizeMemFree = Long.parseLong(strSize);
} else if (line.startsWith("Buffers:")) {
sizeBuffers = Long.parseLong(strSize);
} else if (line.startsWith("Cached:")) {
sizeCached = Long.parseLong(strSize);
} else if (line.startsWith("SwapCached:")) {
sizeSwapCached = Long.parseLong(strSize);
}
//all lines read
if (++count == 4) {
break;
}
}
line = br.readLine();
}
if (count < 4) {
logger.error("Error: less than 4 rows read from /proc/meminfo for free memory information");
}
long sizeTotal = sizeMemFree + sizeBuffers + sizeCached + sizeSwapCached;
logger.info(String.format("Current system free memory is %d kb (MemFree %d, Buffers %d, Cached %d, SwapCached %d)",
sizeTotal, sizeMemFree, sizeBuffers, sizeCached, sizeSwapCached));
if (sizeTotal > 0) {
updateFreeMemAmount(sizeTotal);
}
} catch (IOException e) {
logger.error("Exception in reading memory info file", e);
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
logger.error("Exception in closing the buffered reader", e);
}
}
}
以后别不知道怎么计算一个机器的可用内存了哈!
命令行的方式就是
cat /proc/meminfo | grep -E "^MemTotal:|^MemFree:|^Buffers:|^Cached:|^SwapCached:"
参考:
azkaban.execapp.ServerStatisticsServlet.fillRemainingMemoryPercent
相关文章推荐
- Python 实现Zabbix自动发送报表
- Zabbix安装详解
- 用zabbix监控nginx_status状态
- Zabbix监控Linux主机设置方法
- Zabbix监控交换机设置方法
- 使用zabbix监控mongodb的方法
- 集群运维自动化工具ansible之使用playbook安装zabbix客户端
- zabbix进行数据库备份以及表分区的方法
- 部署企业级zabbix+Orabbix监控Oracle数据库
- zabbix 触发器 Triggers
- zabbix 分布式部署
- zabbix event事件
- openstack开发之--zabbix被坑的地方
- RedHat6(CentOS6)下Zabbix2安装
- Zabbix配置文件详解之服务端zabbix_server
- zabbix配置指南
- zabbix 监控windows 服务器
- zabbix服务器安装教程
- Zabbix 3.0 安装步骤
- zabbix之固定端口监控redis ,zabbix监控memcached