nodejs監聽cpu使用率、記憶體使用率,並通過socket.io與vue專案互動
通過nodejs 監聽到cpu的使用率和記憶體使用率。
在vue專案中使用socket.io包獲取監聽的資料
nodejs後臺部分
- 安裝
npm install os-utils
- 引入包,監聽的埠為
1111
- 使用io.sockets監聽事件。注意:socket是連線那次的,繫結的監聽事件也要寫在這個上面。
- 然後通過os-utils提供的工具,獲取相應的資料
- 其中on是監聽事件,emit是傳送事件(emit裡面的事件,是讓前端去監聽的)
- start()方法可以在前端調介面再啟動
程式碼如下:
var os = require("os");
var io = require("socket.io").listen("1111");
var osUtils = require("os-utils");
var interval = -1;
var currCPU = 0;
io.sockets.on('connection', socket=> {//連線事件
socket.emit("connected", "連線成功")
console.log("連線成功")
socket.on("disconnect",()=>{
console.log("disconnect")
})
socket.on('endConnection', function (data) {
console.log("endConnection")
console.log(data)
socket.emit("unConnection", "伺服器端已停止")
clearInterval(interval)
interval = -1;
})
})
function start(){
updateCPU();
if (interval < 0) {
interval = setInterval(function () {
var freeMem = os.freemem()/1024/1024/1024;
var totalMem = os.totalmem()/1024/1024/1024;
var data = {
cpuUsage: ( currCPU * 100.0 ).toFixed(2) + "%",
freeMem: freeMem.toFixed(2) + "G",
totalMem: totalMem.toFixed(2) + "G",
usedMem: (totalMem - freeMem).toFixed(2) + "G",
MemUsage: ( (totalMem - freeMem)/totalMem * 100.0 ).toFixed(2) + "%",
};
io.sockets.emit("systemUpdate",data)
console.log(data)
}, 1000);//每隔1s取系統資料
}
}
function updateCPU() {
setTimeout(function () {
osUtils.cpuUsage(function (value) {
currCPU = value;
updateCPU();
});
}, 0);
}
//start() // 直接執行
module.exports = {
start
}
提供介面呼叫的寫法供參考
var systemInfo = require('../public/javascripts/systemInfo');
router.get('/start', function(req, res, next) {
systemInfo.start()
const data = {
code: 20000,
desc: "success"
}
res.send(data)
});
前端vue部分程式碼
vue.config.js
中引入下面程式碼 ,需要先npm安裝vue-socket.io
import VueSocketIO from 'vue-socket.io'
Vue.use(
new VueSocketIO({
debug: false,
connection: 'http://localhost:1111'
})
)
使用socketio的vue檔案
<template>
<div class="co">
<div class="systemInfo" :style="{height:height,width:width}" />
<el-button @click="startConnection">連線</el-button>
<el-button @click="endConnection">斷開連線</el-button>
</div>
</template>
<script>
import { start } from '@/api/systemInfo'
export default {
props: {
width: {
type: String,
default: '100%'
},
height: {
type: String,
default: '300px'
}
},
data() {
return {
chart: null
}
},
mounted() {
// this.startConnection()
},
sockets: {
connected(data) {
if (data) {
console.log('連線成功', data)
}
},
systemUpdate(data) {
console.log(data)
},
unConnection(data) {
console.log(data)
this.$socket.close()
}
},
methods: {
// 開啟連線
startConnection() {
start()
this.$socket.connect()
},
endConnection() {
this.$socket.emit('endConnection', '斷開連線')
}
}
}
</script>
前端取到的資料,效果如下:
相關文章
- 【Azure Developer】通過Azure提供的Azue Java JDK 查詢虛擬機器的CPU使用率和記憶體使用率DeveloperJavaJDK虛擬機記憶體
- 網站主機CPU或記憶體使用率過高導致網站無法訪問網站記憶體
- cpu使用率過高問題(Java)Java
- CPU和記憶體如何互動的記憶體
- 記憶體CPU監控記憶體
- Oracle CPU使用率過高問題處理Oracle
- win10怎麼減少cpu使用率_win10cpu使用率過高的解決方法Win10
- Linux中顯示記憶體和CPU使用率最高的程式的SHELL指令碼例子Linux記憶體指令碼
- Linux檢視CPU使用率Linux
- java專案cpu或記憶體過高,排查問題思路Java記憶體
- 通過互動式命令從github拉取專案模板並建立新專案Github
- Java程式CPU使用率高排查Java
- CPU使用率低負載高負載
- Win10怎麼看cpu使用率?Win10檢視CPU使用率的方法Win10
- 效能分析(2)- 應用程式 CPU 使用率過高案例
- Linux中如何檢視CPU使用率?Linux
- 一文秒懂CPU使用率
- .netcore利用perf分析高cpu使用率NetCore
- 統計記憶體使用率百分比的指令碼記憶體指令碼
- 5. 監控磁碟使用率
- 在Linux中,如何檢視linux中記憶體使用率最高的程序?Linux記憶體
- 15. 監控磁碟IO使用率
- 效能分析(5)- 軟中斷導致 CPU 使用率過高的案例
- eclipse中啟動專案報記憶體溢位問題通過修改配置解決Eclipse記憶體溢位
- vue專案編譯node記憶體溢位Vue編譯記憶體溢位
- 通過關閉Windows Update更新解決服務主機本地系統CPU使用率高問題Windows
- Win10系統中LSAISO程式CPU使用率過高如何解決Win10AI
- 監控磁碟使用率的shell指令碼指令碼
- 使用nice,cpulimit和cgroups限制程式CPU使用率MIT
- PostgreSQL DBA(88) - Linux(CPU使用率 vs 平均負載)SQLLinux負載
- Oracle效能優化-資料庫CPU使用率100%Oracle優化資料庫
- kubectl 如何檢視 node、pod 的 cpu、RAM 使用率?
- 阿里開源 java 專案記憶體監控工具 arthas阿里Java記憶體
- 效能分析(3)- 短時程式導致使用者 CPU 使用率過高案例
- 恆訊科技分析:如何解決SQL Server CPU使用率過高的問題?SQLServer
- CPU 使用率低高負載的原因,看看這篇!負載
- Google Chrome發現新Bug CPU使用率飆升至100%GoChrome
- java記憶體間互動規則Java記憶體