用到一个插件hyperic-sigar

1:下载hyperic-sigar后解压,把sigar-amd64-winnt.dll(64位机器,32位用sigar-x86-winnt.dll)放到你本机的jdk\bin、jdk\jre\bin、jre\bin目录下。

2:maven引入hyperic-sigar依赖,这样就可以用了。

1         <dependency>
2             <groupId>org.fusesource</groupId>
3             <artifactId>sigar</artifactId>
4             <version>1.6.4</version>
5         </dependency>

3:hyperic-sigar解压后到hyperic-sigar-1.6.4\bindings\java\examples目录下这里面有很多官方提供的例子,可以直接复制到你的工程下运行测试。


我用的是websocket+java-timer做的。

 1 public class KeepRunTime extends TimerTask {
 2
 3     private static Sigar sigar = new Sigar();
 4
 5     @Override
 6     public void run() {
 7         RunTime rt = new RunTime();
 8         rt.setMem(mem());
 9         rt.setCpus(cpu());
10
11         DataPushService.pushData(JSONObject.toJSONString(new WebMessage(rt, WebMessage.RUNTIME)));
12     }
13
14     // CPU使用率
15     public static TreeSet<Cpu> cpu() {
16         try {
17             TreeSet<Cpu> cpus = new TreeSet<Cpu>();
18             CpuPerc[] list = sigar.getCpuPercList();
19             for (int i=1; i<list.length+1; i++) {
20                 Cpu cpu = new Cpu();
21                 cpu.setNo(i);
22                 cpu.setCpuName("CPU-"+i);
23                 cpu.setCpuCombined(CpuPerc.format(list[i-1].getCombined()));
24                 cpus.add(cpu);
25             }
26             return cpus;
27         } catch (SigarException e) {
28             System.err.println("获取CPU使用率异常");
29             e.printStackTrace();
30             return null;
31         }
32     }
33
34     // MEM使用率
35     public static String mem() {
36         try {
37             Mem mem = sigar.getMem();
38             // 内存总量
39             Long memTotal = mem.getTotal() / 1024L;
40             // 当前内存使用量
41             Long memUsed = mem.getUsed() / 1024L;
42             // 使用率
43             Double usePercent = ((memUsed*1.0)/memTotal)*100;
44             // 四舍五入
45             return String.format("%.2f", usePercent);
46         } catch (SigarException e) {
47             System.err.println("获取MEM使用率异常");
48             e.printStackTrace();
49             return null;
50         }
51     }
52
53 }

View Code

 1 public class RunTime {
 2
 3     // 内存使用率
 4     private String mem;
 5     // CPU使用率
 6     private TreeSet<Cpu> cpus;
 7
 8     public String getMem() {
 9         return mem;
10     }
11     public void setMem(String mem) {
12         this.mem = mem;
13     }
14     public TreeSet<Cpu> getCpus() {
15         return cpus;
16     }
17     public void setCpus(TreeSet<Cpu> cpus) {
18         this.cpus = cpus;
19     }
20
21     @Override
22     public String toString() {
23         return "RunTime [mem=" + mem + ", cpus=" + cpus + "]";
24     }
25
26 }

View Code

 1 public class Cpu implements Comparable<Cpu>{
 2
 3     private int no;
 4
 5     private String cpuName;
 6
 7     private String cpuCombined;
 8
 9     public int getNo() {
10         return no;
11     }
12
13     public void setNo(int no) {
14         this.no = no;
15     }
16
17     public String getCpuName() {
18         return cpuName;
19     }
20
21     public void setCpuName(String cpuName) {
22         this.cpuName = cpuName;
23     }
24
25     public String getCpuCombined() {
26         return cpuCombined;
27     }
28
29     public void setCpuCombined(String cpuCombined) {
30         this.cpuCombined = cpuCombined;
31     }
32
33     // 正序
34     @Override
35     public int compareTo(Cpu o) {
36         return (this.no - o.no);
37     }
38
39     @Override
40     public String toString() {
41         return "Cpu [no=" + no + ", cpuName=" + cpuName + ", cpuCombined="
42                 + cpuCombined + "]";
43     }
44
45 }

View Code

js:

 1 var runtime = function(data) {
 2     $("#mem").html(data.obj.mem + '%');
 3
 4     var cpus = data.obj.cpus;
 5     var html = "<p>";
 6     for (var i = 1; i < cpus.length + 1; i++) {
 7         html += "<b>" + cpus[i-1].cpuName + ":</b>" +
 8                 "<span class='runtime' id='span-cpu'>"+ cpus[i-1].cpuCombined + "</span>";
 9         if (i % 2 == 0) {
10             html += "</p><p>";
11         }
12     }
13     $("#cpu").html(html);
14 };

View Code

效果:

这里面用了websocket,没提出来具体的代码。

下次我写一个基于netty、websocket.io、springmvc、mybatis、h2database、httpclient、fastjson、https的整合,我现在就在写这样一个项目,等写好了做一个简化版的发上来。

转载于:https://www.cnblogs.com/zhengbn/p/6585609.html

java web 监控cpu、内存等。hyperic-sigar相关推荐

  1. java cpu监控,java系统监控CPU 磁盘

    java系统监控CPU 磁盘 import java.io.*; /** * linux 下cpu 内存 磁盘 jvm的使用监控 * @author avery_leo * */ public cla ...

  2. java 监控系统cpu,java系统监控CPU 磁盘

    java系统监控CPU 磁盘 import java.io.*; /** * linux 下cpu 内存 磁盘 jvm的使用监控 * @author avery_leo * */ public cla ...

  3. 安装Java Visualvm监控堆内存和参数说明

    安装Java Visualvm监控堆内存和参数说明 1.概述 这篇文章介绍使用Java Visualvm工具监控堆内存VisualGC插件的安装以及监控堆内存参数说明. 摘要 VisualGC插件安装 ...

  4. 性能入门工具jmeter监控cpu内存插件的安装与使用

    引子 无论是大侠还是大虾,只要谈到性能最基本的性能指标(影响时间,吞吐量,cpu,内存等)是离不开的,这里就是最简单的入门级的操作.不用命令,直接在压测工具jmeter里查看调试. 上图看一下执行后的 ...

  5. Linux CentOs7 监控CPU 内存 硬盘IO读写,网络负载,CPU温度等

    一般我们都知道TOP命令可以加载服务器的负载详情,但界面不太友好.因此用到htop 我们开发的软件服务需要在服务器上运行,所以服务器性能代表了软件的性能上限,因此服务器性能调优是个十分重要的环节,然而 ...

  6. java如何监控cpu耗时_超级干货:3个性能监控和优化命令讲解

    原标题:超级干货:3个性能监控和优化命令讲解 小编为大家整理出了三个有关性能监控和优化命令详细讲解,别看只有三个,但不影响他噎啊,本篇文章很长,涉及top命令.free命令和 vmstat命令,真的是 ...

  7. Java线上CPU内存冲高问题排查步骤

    1 引言 作为一名从事Java开发快一年的程序员,在线上经常碰到某个模块的Pod发出CPU与内存告警的问题,而这些问题会导致系统响应缓慢甚至是服务不可用.一般情况下可以通过重启或者调高Pod的资源量或 ...

  8. TrafficMonitorr网速流量监控/CPU内存率查看工具

    简介: Traffic Monitor (网络流量监控器) 是一款 Windows 平台上开源免费的实时网速监控软件.它体积小巧而且是绿色软件,能以类似 360 助手的「桌面悬浮窗」的形式,保持在桌面 ...

  9. mysql监控内存cpu使用率_监控 cpu 内存 网卡的使用情况的一个命令 比较实用

    sar -r -u -n DEV 1 1000 >/data/200.sql  2>&1 & 监控结果: 02:51:11 PM kbmemfree kbmemused  ...

最新文章

  1. Error creating bean with name 'messageSource' defi
  2. hadoop 爬虫_python爬虫知识点梳理:带你全面入门python爬虫
  3. 数据库高可用和分区解决方案-MySQL 篇
  4. python 网关配置界面代码_Linux下使用python自动修改本机网关代码分享
  5. 将图卷积神经网络用于解码分子生成
  6. 7/100. Move Zeroes
  7. 在.NET中调用存储过程
  8. 1.1 BeautifulSoup使用方法
  9. Flutter进阶—实现动画效果(七)
  10. Android的logger机制分析
  11. android 模拟器 锁屏,如何在模拟器中测试Android锁屏小部件?
  12. 【PHP】百度贴吧自动/云签到脚本(PC 端)
  13. 计算机访问网络延迟越低越好吗,内存延迟参数是否越低越好
  14. 从零开始学《离散数学》-电子科技大学
  15. 【Beta】 第七次Daily Scrum Meeting
  16. Unity SteamVR锁定头盔位置旋转
  17. 如何用java代码给Word文档添加水印?
  18. python Ran out of input 异常解决
  19. MyBatisPlus 学习笔记_MP的AR模式
  20. 无责任猜想#冰桶挑战#大佬们相爱相杀众生相

热门文章

  1. mysql数据库插入图片_向MySql数据库插入与读取图片文件
  2. webloigc12服务启动不了_一键启动知多少!
  3. php生成静态页面并预览
  4. 每天一个linux命令(15):tail 命令
  5. 【深度学习】图像数据集处理常用方法合集(部分基于pytorch)
  6. 机器学习中训练集、验证集和测试集的区别
  7. mooc浙大数据结构PTA习题之一元多项式的乘法与加法运算
  8. linux技术工程师,LINUX系统工程师技术(Engineer)-------第四天
  9. php pdo 打印sql语句,php – 使用PDO准备SQL语句
  10. 实现根据条件删除_Vue源码解析,keep-alive是如何实现缓存的?