1
0
mirror of https://gitee.com/bookshelfplus/bookshelfplus synced 2025-09-25 19:05:14 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
Files
bookshelfplus/bookshelfplus/src/main/java/plus/bookshelf/Controller/Controller/StatusController.java

138 lines
7.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package plus.bookshelf.Controller.Controller;
import com.sun.management.OperatingSystemMXBean;
import com.sun.management.ThreadMXBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import plus.bookshelf.Common.Response.CommonReturnType;
import java.lang.management.ManagementFactory;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
@Api(tags = "网站后台状态检测")
@Controller("status")
@RequestMapping("/status")
public class StatusController extends BaseController {
// @ApiOperation(value = "线程CPU占用时间", notes = "获取服务器当前线程CPU占用时间。此方法通过统计线程CPU占用时间来统计当前进程占用CPU情况。")
// @RequestMapping(value = "getProcessCpu", method = {RequestMethod.GET})
// @ResponseBody
// public Object get() {
// OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
// ThreadMXBean threadBean = (ThreadMXBean) ManagementFactory.getThreadMXBean();
// String processCpu = getProcessCpu(operatingSystemMXBean, threadBean);
//
// System.out.println(processCpu);
// return processCpu;
// }
@ApiOperation(value = "系统状态", notes = "获取服务器当前系统负载。SystemLoadAverage返回-1时代表不支持。")
@RequestMapping(value = "get", method = {RequestMethod.GET})
@ResponseBody
public CommonReturnType get() {
// HashMap<String, Object> hashMap = new HashMap<>();
// hashMap.put("server", "OK");
// return CommonReturnType.create(hashMap);
return CommonReturnType.create(null);
}
// @ApiOperation(value = "系统负载", notes = "获取服务器当前系统负载。SystemLoadAverage返回-1时代表不支持。")
// @RequestMapping(value = "get", method = {RequestMethod.GET})
// @ResponseBody
// public Object get() {
// OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
// return operatingSystemMXBean.getSystemLoadAverage();
// }
// @ApiOperation(value = "服务端状态", notes = "获取服务器当前状态信息")
// @RequestMapping(value = "get", method = {RequestMethod.GET})
// @ResponseBody
// public Object get() {
// OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
// ThreadMXBean threadBean = (ThreadMXBean) ManagementFactory.getThreadMXBean();
// // com.sun.management.OperatingSystemMXBean mxbean = operatingSystemMXBean;
// // System.out.println("操作系统: " + mxbean.getName());
// // System.out.println("CPU数量:" + mxbean.getAvailableProcessors());
// // System.out.println("虚拟内存:" + mxbean.getCommittedVirtualMemorySize() / 1024 + "KB");
// // System.out.println("可用物理内存:" + mxbean.getFreePhysicalMemorySize() / 1024 + "KB");
// // System.out.println("Free Swap Space Size :" + mxbean.getFreeSwapSpaceSize() / 1024 + "KB");
// // System.out.println("Process CPU Time : " + mxbean.getProcessCpuTime());
// // System.out.println("总物理内存大小:" + mxbean.getTotalPhysicalMemorySize() / 1024 + "KB");
// // System.out.println("Total Swap Space Size:" + mxbean.getTotalSwapSpaceSize() / 1024 + "KB");
//
// Map<String, Object> result = new HashMap<>();
// result.put("SystemCpuLoad", operatingSystemMXBean.getSystemCpuLoad());
// result.put("ProcessCpuLoad", operatingSystemMXBean.getProcessCpuLoad());
//
// // result.put("ProcessCpuTime", operatingSystemMXBean.getProcessCpuTime());
//
// // result.put("CommittedVirtualMemorySize", operatingSystemMXBean.getCommittedVirtualMemorySize());
//
// // result.put("FreePhysicalMemorySize", operatingSystemMXBean.getFreePhysicalMemorySize());
// // result.put("TotalPhysicalMemorySize", operatingSystemMXBean.getTotalPhysicalMemorySize());
// result.put("PhysicalMemorySizeRate", 100l * operatingSystemMXBean.getFreePhysicalMemorySize() / operatingSystemMXBean.getTotalPhysicalMemorySize());
// // 可用物理内存百分比
//
// // result.put("FreeSwapSpaceSize", operatingSystemMXBean.getFreeSwapSpaceSize());
// // result.put("TotalSwapSpaceSize", operatingSystemMXBean.getTotalSwapSpaceSize());
// result.put("SwapSpaceSizeRate", 100l * operatingSystemMXBean.getFreeSwapSpaceSize() / operatingSystemMXBean.getTotalSwapSpaceSize());
// // 可用交换空间百分比
//
// // result.put("SystemLoadAverage", operatingSystemMXBean.getSystemLoadAverage());
//
// result.put("aaa", getProcessCpu(operatingSystemMXBean, threadBean));
//
// // Object[] a = new Object[]{
// // // operatingSystemMXBean.getArch(),
// // // operatingSystemMXBean.getName(),
// // // operatingSystemMXBean.getSystemLoadAverage(),
// // // operatingSystemMXBean.getVersion(),
// // // operatingSystemMXBean.getAvailableProcessors(),
// //
// // // operatingSystemMXBean.getSystemCpuLoad(),
// // // operatingSystemMXBean.getProcessCpuLoad(),
// // // operatingSystemMXBean.getProcessCpuTime(),
// //
// // // operatingSystemMXBean.getCommittedVirtualMemorySize(),
// //
// // // operatingSystemMXBean.getFreePhysicalMemorySize(),
// // // operatingSystemMXBean.getTotalPhysicalMemorySize(),
// //
// // // operatingSystemMXBean.getFreeSwapSpaceSize(),
// // // operatingSystemMXBean.getTotalSwapSpaceSize(),
// // };
// return result;
// }
// // refer: https://blog.csdn.net/as403045314/article/details/101337176
// private long preTime = System.nanoTime();
// private long preUsedTime = 0;
//
// /**
// * getSystemLoadAverage()方法得到的操作系统统计的整个系统负载不能较好的反应本进程的CPU占用情况
// * 此方法通过统计线程CPU占用时间来统计当前进程占用CPU情况
// *
// * @param osMxBean
// * @param threadBean
// * @return
// */
// public String getProcessCpu(OperatingSystemMXBean osMxBean, ThreadMXBean threadBean) {
// long totalTime = 0;
// for (long id : threadBean.getAllThreadIds()) {
// totalTime += threadBean.getThreadCpuTime(id);
// }
// long curtime = System.nanoTime();
// long usedTime = totalTime - preUsedTime;
// long totalPassedTime = curtime - preTime;
// preTime = curtime;
// preUsedTime = totalTime;
// // return (((double) usedTime) / totalPassedTime / osMxBean.getAvailableProcessors()) * 100;
// return String.valueOf(new BigDecimal(usedTime * 100 / (totalPassedTime * osMxBean.getAvailableProcessors())));
// }
}