如何获取服务器的CPU,内存进行限流
文章目录
- 如何获取服务器的CPU,内存进行限流
如何获取服务器的CPU,内存进行限流
- 需要包名
"github.com/shirou/gopsutil/v3/cpu""github.com/shirou/gopsutil/v3/mem"
- 定义存储数据的结构体
type MachineInfo struct {CpuUsedRate float64MemUsedRate float64PassRate float64
}
- 单例模式
var machineInfo *MachineInfovar once sync.Oncefunc GetMachineInfo() *MachineInfo {if machineInfo == nil {once.Do(func() {if machineInfo == nil {machineInfo = new(MachineInfo)machineInfo.MemUsedRate = 0machineInfo.CpuUsedRate = 0}})}return machineInfo
}
- 1s周期获取cpu,mem信息
// 1s更新一次
func (mi *MachineInfo) FetchCpuMemInfo() {GetGoPool().AddFunc(func() {for {time.Sleep(1 * time.Second)v, _ := mem.VirtualMemory()//fmt.Println("mem: \n", v.UsedPercent)// almost every return value is a structmi.MemUsedRate = v.UsedPercent//fmt.Println("mi.MemRate: \n", mi.MemUsedRate)}})GetGoPool().AddFunc(func() {for {time.Sleep(1 * time.Second)// convert to JSON. String() is also implementedv1, _ := cpu.Percent(time.Second, false)//fmt.Println("cpu: \n", v1[0])mi.CpuUsedRate = v1[0]//fmt.Println("mi.CpuRate : \n", mi.CpuUsedRate)}})GetGoPool().AddFunc(func() {mi.CalcPassRate()})
}
- 根据cpu,mem信息获取通过率
func (mi *MachineInfo) CalcPassRate() {GetGoPool().AddFunc(func() {for {var rateMem float64 = 1var rateCpu float64 = 1time.Sleep(1 * time.Second)if mi.MemUsedRate >= 85 {rateMem = 0} else if mi.MemUsedRate < 85 && mi.MemUsedRate >= 75 {rateMem = 0.2} else if mi.MemUsedRate < 75 && mi.MemUsedRate >= 70 {rateMem = 0.4} else if mi.MemUsedRate < 70 && mi.MemUsedRate >= 60 {rateMem = 0.6}if mi.CpuUsedRate >= 85 {rateMem = 0} else if mi.CpuUsedRate < 85 && mi.CpuUsedRate >= 75 {rateMem = 0.2} else if mi.CpuUsedRate < 75 && mi.CpuUsedRate >= 70 {rateMem = 0.4} else if mi.CpuUsedRate < 70 && mi.CpuUsedRate >= 60 {rateMem = 0.6}if rateMem > rateCpu {mi.PassRate = rateCpu} else {mi.PassRate = rateMem}}})
}func (mi *MachineInfo) GetPassRate() float64 {return mi.PassRate
}
- 最后根据通过率进行相应端口的限流策略
- 小知识点
- docker中可以获取宿主机的cpu,内存信息
- 如果不能开启特权模式(docker-compose文件中 privilege: true, 然后映射cpu文件到docker中)
如何获取服务器的CPU,内存进行限流相关推荐
- aix服务器如何查看cpu信息,aix服务器查看cpu内存
aix服务器查看cpu内存 内容精选 换一换 查询该租户下,所有资源的配额信息,包括已使用配额.GET /v1/{project_id}/baremetalservers/limits参数说明请参见表 ...
- 2020年8月腾讯云服务器收费标准(CPU/内存/带宽/磁盘价格表)
2020年8月腾讯云服务器收费标准(CPU/内存/带宽/磁盘价格表) 腾讯云服务器价格是由CPU.内存.公网带宽.云硬盘组成的,云服务器配置不同.CVM实例规格不同云服务器价格也不同,腾讯云公网带宽价 ...
- uuid怎么获取_我们经常说的限流应该怎么做?
我们为什么需要限流 1.在微服务复杂拓扑的情况下,限流是保障服务弹性和拓扑健壮的重中之重. 想一想,如果业务推出了一个秒杀活动,而你没有任何的限流措施:当你搭建了一个账号平台,而完全没有对十几个业务方 ...
- php 获取cpu,Windows下如何利用PHP获取服务器的CPU和内存参数状态信息
通过生成vbs脚本获取CPU和内存信息. class SystemInfoWindows { /** * 判断指定路径下指定文件是否存在,如不存在则创建 * @param string $fileNa ...
- java获取服务器的cpu和内存使用率
使用的是sigar.jar包 sigar.jar下载地址密码1j2r 使用方法这三个文件放到jdk安装目录的bin下: Sigar sigar = new Sigar();Mem mem = siga ...
- C#-获取磁盘,cpu,内存信息
获取磁盘信息zongdaxiao = GetHardDiskSpace("C") * 1.0 / 1024; user = GetHardDiskFreeSpace("C ...
- Python 获取服务器的CPU个数
在使用gunicorn时,需要设置workers, 例如: gunicorn --workers=3 app:app -b 0.0.0.0:9000 其中,worker的数量并不是越多越好,推荐值是C ...
- 怎么查看服务器的CPU内存使用情况
Linux 查看CPU,内存使用情况 Top第一行: 14:29:00-当前系统时间 up 4 days,4:23-系统已经运行了4天4小时23分钟(在这期间没有重启过) 1user-当前有1个用户登 ...
- 今天专攻POWERSHELL获取本机CPU,内存消耗
PS脚本如下: 1 $Server = $env:computername 2 #server's CPU Mem Hardinfor 3 $cpu = gwmi –computername $Ser ...
最新文章
- ZJU-java进阶笔记 第七周(输入输出)
- Delphi7的主窗口
- 安装Autodesk Vault Server 总提示需要重启计算机?
- 使用原型相对于直接在构造函数中定义方法的优势? [重复]
- 由IP和掩码计算广播地址
- STL之Map和MFC之CMap比较学习
- Arithmetic图像处理halcon算子持续更新
- 小白学python需要多久_小白学Python | 你还在说你入不了门吗
- 安卓文本编辑器php cpp,开源的Android富文本编辑器
- 2020 数据技术嘉年华:吹响国产数据库的集结号 诚邀参会览技术前沿
- win7 64 php5ts.dll,windows7 64位 php5.3安装php_mongo.dll方法
- 长话无需短说 讯飞输入法超长语音输入不限时
- JavaScript中大数相加的解法
- git报错:no matching key exchange method found
- AndroidDeveloper Weekly No.1
- winform npoi 将execl转换成datatable,导入数据库
- 机器视觉运动控制一体机应用例程|U盘视觉定位激光打标解决方案
- 安卓手机如何复制粘贴不重叠_复制的文字粘贴时怎么重叠了 - 卡饭网
- 斯蒂夫·乔布斯《你必须要找到你所爱的东西》
- 线性丢番图方程 --算法竞赛专题解析(21):数论
热门文章
- Latex系列4---数学公式
- [Java基础]常见的运行时异常
- vue项目中如何使用有向无环图(dag-diagram)
- KEIL MDK 提示“no browse info for symbol in this context”
- sim卡插上显示不服务器,不插SIM卡手机紧急呼叫成摆设 专家:建统一服务器
- 佛言禅语-----生命的智慧
- VSCode SSH 免密登录
- LINUX查看系统、资源、磁盘和分区、网络、进程、用户
- SpringBoot仿天猫商城java web购物网站的设计与实现
- 浅析ODS与EDW 关系(转载)