From f8633f8c4ee38a6ae9fa51f7c76729bf8b17e9e5 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期一, 19 四月 2021 17:38:47 +0800 Subject: [PATCH] fix Feign 熔断不生效 bug --- ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java | 397 ++++++++++++++++++++++---------------------------------- 1 files changed, 157 insertions(+), 240 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java index 93e411b..341d0b3 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java @@ -1,240 +1,157 @@ -package com.ruoyi.framework.web.domain; - -import java.net.UnknownHostException; -import java.util.LinkedList; -import java.util.List; -import java.util.Properties; -import com.ruoyi.common.utils.Arith; -import com.ruoyi.common.utils.ip.IpUtils; -import com.ruoyi.framework.web.domain.server.Cpu; -import com.ruoyi.framework.web.domain.server.Jvm; -import com.ruoyi.framework.web.domain.server.Mem; -import com.ruoyi.framework.web.domain.server.Sys; -import com.ruoyi.framework.web.domain.server.SysFile; -import oshi.SystemInfo; -import oshi.hardware.CentralProcessor; -import oshi.hardware.CentralProcessor.TickType; -import oshi.hardware.GlobalMemory; -import oshi.hardware.HardwareAbstractionLayer; -import oshi.software.os.FileSystem; -import oshi.software.os.OSFileStore; -import oshi.software.os.OperatingSystem; -import oshi.util.Util; - -/** - * 鏈嶅姟鍣ㄧ浉鍏充俊鎭� - * - * @author ruoyi - */ -public class Server -{ - private static final int OSHI_WAIT_SECOND = 1000; - - /** - * CPU鐩稿叧淇℃伅 - */ - private Cpu cpu = new Cpu(); - - /** - * 鍏у瓨鐩稿叧淇℃伅 - */ - private Mem mem = new Mem(); - - /** - * JVM鐩稿叧淇℃伅 - */ - private Jvm jvm = new Jvm(); - - /** - * 鏈嶅姟鍣ㄧ浉鍏充俊鎭� - */ - private Sys sys = new Sys(); - - /** - * 纾佺洏鐩稿叧淇℃伅 - */ - private List<SysFile> sysFiles = new LinkedList<SysFile>(); - - public Cpu getCpu() - { - return cpu; - } - - public void setCpu(Cpu cpu) - { - this.cpu = cpu; - } - - public Mem getMem() - { - return mem; - } - - public void setMem(Mem mem) - { - this.mem = mem; - } - - public Jvm getJvm() - { - return jvm; - } - - public void setJvm(Jvm jvm) - { - this.jvm = jvm; - } - - public Sys getSys() - { - return sys; - } - - public void setSys(Sys sys) - { - this.sys = sys; - } - - public List<SysFile> getSysFiles() - { - return sysFiles; - } - - public void setSysFiles(List<SysFile> sysFiles) - { - this.sysFiles = sysFiles; - } - - public void copyTo() throws Exception - { - SystemInfo si = new SystemInfo(); - HardwareAbstractionLayer hal = si.getHardware(); - - setCpuInfo(hal.getProcessor()); - - setMemInfo(hal.getMemory()); - - setSysInfo(); - - setJvmInfo(); - - setSysFiles(si.getOperatingSystem()); - } - - /** - * 璁剧疆CPU淇℃伅 - */ - private void setCpuInfo(CentralProcessor processor) - { - // CPU淇℃伅 - long[] prevTicks = processor.getSystemCpuLoadTicks(); - Util.sleep(OSHI_WAIT_SECOND); - long[] ticks = processor.getSystemCpuLoadTicks(); - long nice = ticks[TickType.NICE.getIndex()] - prevTicks[TickType.NICE.getIndex()]; - long irq = ticks[TickType.IRQ.getIndex()] - prevTicks[TickType.IRQ.getIndex()]; - long softirq = ticks[TickType.SOFTIRQ.getIndex()] - prevTicks[TickType.SOFTIRQ.getIndex()]; - long steal = ticks[TickType.STEAL.getIndex()] - prevTicks[TickType.STEAL.getIndex()]; - long cSys = ticks[TickType.SYSTEM.getIndex()] - prevTicks[TickType.SYSTEM.getIndex()]; - long user = ticks[TickType.USER.getIndex()] - prevTicks[TickType.USER.getIndex()]; - long iowait = ticks[TickType.IOWAIT.getIndex()] - prevTicks[TickType.IOWAIT.getIndex()]; - long idle = ticks[TickType.IDLE.getIndex()] - prevTicks[TickType.IDLE.getIndex()]; - long totalCpu = user + nice + cSys + idle + iowait + irq + softirq + steal; - cpu.setCpuNum(processor.getLogicalProcessorCount()); - cpu.setTotal(totalCpu); - cpu.setSys(cSys); - cpu.setUsed(user); - cpu.setWait(iowait); - cpu.setFree(idle); - } - - /** - * 璁剧疆鍐呭瓨淇℃伅 - */ - private void setMemInfo(GlobalMemory memory) - { - mem.setTotal(memory.getTotal()); - mem.setUsed(memory.getTotal() - memory.getAvailable()); - mem.setFree(memory.getAvailable()); - } - - /** - * 璁剧疆鏈嶅姟鍣ㄤ俊鎭� - */ - private void setSysInfo() - { - Properties props = System.getProperties(); - sys.setComputerName(IpUtils.getHostName()); - sys.setComputerIp(IpUtils.getHostIp()); - sys.setOsName(props.getProperty("os.name")); - sys.setOsArch(props.getProperty("os.arch")); - sys.setUserDir(props.getProperty("user.dir")); - } - - /** - * 璁剧疆Java铏氭嫙鏈� - */ - private void setJvmInfo() throws UnknownHostException - { - Properties props = System.getProperties(); - jvm.setTotal(Runtime.getRuntime().totalMemory()); - jvm.setMax(Runtime.getRuntime().maxMemory()); - jvm.setFree(Runtime.getRuntime().freeMemory()); - jvm.setVersion(props.getProperty("java.version")); - jvm.setHome(props.getProperty("java.home")); - } - - /** - * 璁剧疆纾佺洏淇℃伅 - */ - private void setSysFiles(OperatingSystem os) - { - FileSystem fileSystem = os.getFileSystem(); - OSFileStore[] fsArray = fileSystem.getFileStores(); - for (OSFileStore fs : fsArray) - { - long free = fs.getUsableSpace(); - long total = fs.getTotalSpace(); - long used = total - free; - SysFile sysFile = new SysFile(); - sysFile.setDirName(fs.getMount()); - sysFile.setSysTypeName(fs.getType()); - sysFile.setTypeName(fs.getName()); - sysFile.setTotal(convertFileSize(total)); - sysFile.setFree(convertFileSize(free)); - sysFile.setUsed(convertFileSize(used)); - sysFile.setUsage(Arith.mul(Arith.div(used, total, 4), 100)); - sysFiles.add(sysFile); - } - } - - /** - * 瀛楄妭杞崲 - * - * @param size 瀛楄妭澶у皬 - * @return 杞崲鍚庡�� - */ - public String convertFileSize(long size) - { - long kb = 1024; - long mb = kb * 1024; - long gb = mb * 1024; - if (size >= gb) - { - return String.format("%.1f GB", (float) size / gb); - } - else if (size >= mb) - { - float f = (float) size / mb; - return String.format(f > 100 ? "%.0f MB" : "%.1f MB", f); - } - else if (size >= kb) - { - float f = (float) size / kb; - return String.format(f > 100 ? "%.0f KB" : "%.1f KB", f); - } - else - { - return String.format("%d B", size); - } - } -} +package com.ruoyi.framework.web.domain; + +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.system.*; +import cn.hutool.system.oshi.CpuInfo; +import cn.hutool.system.oshi.OshiUtil; +import com.ruoyi.framework.web.domain.server.*; +import lombok.Data; +import oshi.hardware.GlobalMemory; +import oshi.software.os.FileSystem; +import oshi.software.os.OSFileStore; +import oshi.software.os.OperatingSystem; + +import java.util.LinkedList; +import java.util.List; + +/** + * 鏈嶅姟鍣ㄧ浉鍏充俊鎭� + * + * @author ruoyi + */ +@Data +public class Server { + private static final int OSHI_WAIT_SECOND = 1000; + + /** + * CPU鐩稿叧淇℃伅 + */ + private Cpu cpu = new Cpu(); + + /** + * 鍏у瓨鐩稿叧淇℃伅 + */ + private Mem mem = new Mem(); + + /** + * JVM鐩稿叧淇℃伅 + */ + private Jvm jvm = new Jvm(); + + /** + * 鏈嶅姟鍣ㄧ浉鍏充俊鎭� + */ + private Sys sys = new Sys(); + + /** + * 纾佺洏鐩稿叧淇℃伅 + */ + private List<SysFile> sysFiles = new LinkedList<SysFile>(); + + + public void copyTo() { + setCpuInfo(); + setMemInfo(); + setSysInfo(); + setJvmInfo(); + setSysFiles(); + } + + /** + * 璁剧疆CPU淇℃伅 + */ + private void setCpuInfo() { + CpuInfo cpuInfo = OshiUtil.getCpuInfo(OSHI_WAIT_SECOND); + cpu.setCpuNum(cpuInfo.getCpuNum()); + cpu.setTotal(cpuInfo.getToTal()); + cpu.setSys(cpuInfo.getSys()); + cpu.setUsed(cpuInfo.getUsed()); + cpu.setWait(cpuInfo.getWait()); + cpu.setFree(cpuInfo.getFree()); + } + + /** + * 璁剧疆鍐呭瓨淇℃伅 + */ + private void setMemInfo() { + GlobalMemory memory = OshiUtil.getMemory(); + mem.setTotal(memory.getTotal()); + mem.setUsed(memory.getTotal() - memory.getAvailable()); + mem.setFree(memory.getAvailable()); + } + + /** + * 璁剧疆鏈嶅姟鍣ㄤ俊鎭� + */ + private void setSysInfo() { + HostInfo hostInfo = SystemUtil.getHostInfo(); + OsInfo osInfo = SystemUtil.getOsInfo(); + UserInfo userInfo = SystemUtil.getUserInfo(); + sys.setComputerName(hostInfo.getName()); + sys.setComputerIp(hostInfo.getAddress()); + sys.setOsName(osInfo.getName()); + sys.setOsArch(osInfo.getArch()); + sys.setUserDir(userInfo.getCurrentDir()); + } + + /** + * 璁剧疆Java铏氭嫙鏈� + */ + private void setJvmInfo() { + JavaInfo javaInfo = SystemUtil.getJavaInfo(); + RuntimeInfo runtimeInfo = SystemUtil.getRuntimeInfo(); + JavaRuntimeInfo javaRuntimeInfo = SystemUtil.getJavaRuntimeInfo(); + jvm.setTotal(runtimeInfo.getTotalMemory()); + jvm.setMax(runtimeInfo.getMaxMemory()); + jvm.setFree(runtimeInfo.getFreeMemory()); + jvm.setVersion(javaInfo.getVersion()); + jvm.setHome(javaRuntimeInfo.getHomeDir()); + } + + /** + * 璁剧疆纾佺洏淇℃伅 + */ + private void setSysFiles() { + OperatingSystem os = OshiUtil.getOs(); + FileSystem fileSystem = os.getFileSystem(); + List<OSFileStore> fsArray = fileSystem.getFileStores(); + for (OSFileStore fs : fsArray) { + long free = fs.getUsableSpace(); + long total = fs.getTotalSpace(); + long used = total - free; + SysFile sysFile = new SysFile(); + sysFile.setDirName(fs.getMount()); + sysFile.setSysTypeName(fs.getType()); + sysFile.setTypeName(fs.getName()); + sysFile.setTotal(convertFileSize(total)); + sysFile.setFree(convertFileSize(free)); + sysFile.setUsed(convertFileSize(used)); + sysFile.setUsage(NumberUtil.mul(NumberUtil.div(used, total, 4), 100)); + sysFiles.add(sysFile); + } + } + + /** + * 瀛楄妭杞崲 + * + * @param size 瀛楄妭澶у皬 + * @return 杞崲鍚庡�� + */ + public String convertFileSize(long size) { + long kb = 1024; + long mb = kb * 1024; + long gb = mb * 1024; + if (size >= gb) { + return String.format("%.1f GB", (float) size / gb); + } else if (size >= mb) { + float f = (float) size / mb; + return String.format(f > 100 ? "%.0f MB" : "%.1f MB", f); + } else if (size >= kb) { + float f = (float) size / kb; + return String.format(f > 100 ? "%.0f KB" : "%.1f KB", f); + } else { + return String.format("%d B", size); + } + } +} -- Gitblit v1.9.3