mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
Merge branch 'pr-HeZhanfeng-fix-multi-thread-safety-vulnerabilities' into 5.1.0-bugfix
This commit is contained in:
commit
827bcd2502
@ -6,7 +6,7 @@ import tech.powerjob.common.model.SystemMetrics;
|
|||||||
import tech.powerjob.common.utils.CommonUtils;
|
import tech.powerjob.common.utils.CommonUtils;
|
||||||
import tech.powerjob.server.common.module.WorkerInfo;
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.NumberFormat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Worker机器状态
|
* Worker机器状态
|
||||||
@ -48,32 +48,40 @@ public class WorkerStatusVO {
|
|||||||
* 27.7%(2.9/8.0 GB)
|
* 27.7%(2.9/8.0 GB)
|
||||||
*/
|
*/
|
||||||
private static final String OTHER_FORMAT = "%s%%(%s / %s GB)";
|
private static final String OTHER_FORMAT = "%s%%(%s / %s GB)";
|
||||||
private static final DecimalFormat df = new DecimalFormat("#.#");
|
|
||||||
|
|
||||||
private static final double THRESHOLD = 0.8;
|
private static final double THRESHOLD = 0.8;
|
||||||
|
|
||||||
|
// 静态 NumberFormat 实例,线程安全
|
||||||
|
private static final NumberFormat NUMBER_FORMAT;
|
||||||
|
// 静态初始化块,配置 NumberFormat 的格式
|
||||||
|
static {
|
||||||
|
NUMBER_FORMAT = NumberFormat.getInstance();
|
||||||
|
// 设置最小小数位数为 0
|
||||||
|
NUMBER_FORMAT.setMinimumFractionDigits(0);
|
||||||
|
// 设置最大小数位数为 1
|
||||||
|
NUMBER_FORMAT.setMaximumFractionDigits(1);
|
||||||
|
}
|
||||||
public WorkerStatusVO(WorkerInfo workerInfo) {
|
public WorkerStatusVO(WorkerInfo workerInfo) {
|
||||||
|
|
||||||
SystemMetrics systemMetrics = workerInfo.getSystemMetrics();
|
SystemMetrics systemMetrics = workerInfo.getSystemMetrics();
|
||||||
|
|
||||||
this.status = 1;
|
this.status = 1;
|
||||||
this.address = workerInfo.getAddress();
|
this.address = workerInfo.getAddress();
|
||||||
this.cpuLoad = String.format(CPU_FORMAT, df.format(systemMetrics.getCpuLoad()), systemMetrics.getCpuProcessors());
|
this.cpuLoad = String.format(CPU_FORMAT, NUMBER_FORMAT.format(systemMetrics.getCpuLoad()), systemMetrics.getCpuProcessors());
|
||||||
if (systemMetrics.getCpuLoad() > systemMetrics.getCpuProcessors() * THRESHOLD) {
|
if (systemMetrics.getCpuLoad() > systemMetrics.getCpuProcessors() * THRESHOLD) {
|
||||||
this.status ++;
|
this.status ++;
|
||||||
}
|
}
|
||||||
|
|
||||||
String menL = df.format(systemMetrics.getJvmMemoryUsage() * 100);
|
String menL = NUMBER_FORMAT.format(systemMetrics.getJvmMemoryUsage() * 100);
|
||||||
String menUsed = df.format(systemMetrics.getJvmUsedMemory());
|
String menUsed = NUMBER_FORMAT.format(systemMetrics.getJvmUsedMemory());
|
||||||
String menMax = df.format(systemMetrics.getJvmMaxMemory());
|
String menMax = NUMBER_FORMAT.format(systemMetrics.getJvmMaxMemory());
|
||||||
this.memoryLoad = String.format(OTHER_FORMAT, menL, menUsed, menMax);
|
this.memoryLoad = String.format(OTHER_FORMAT, menL, menUsed, menMax);
|
||||||
if (systemMetrics.getJvmMemoryUsage() > THRESHOLD) {
|
if (systemMetrics.getJvmMemoryUsage() > THRESHOLD) {
|
||||||
this.status ++;
|
this.status ++;
|
||||||
}
|
}
|
||||||
|
|
||||||
String diskL = df.format(systemMetrics.getDiskUsage() * 100);
|
String diskL = NUMBER_FORMAT.format(systemMetrics.getDiskUsage() * 100);
|
||||||
String diskUsed = df.format(systemMetrics.getDiskUsed());
|
String diskUsed = NUMBER_FORMAT.format(systemMetrics.getDiskUsed());
|
||||||
String diskMax = df.format(systemMetrics.getDiskTotal());
|
String diskMax = NUMBER_FORMAT.format(systemMetrics.getDiskTotal());
|
||||||
this.diskLoad = String.format(OTHER_FORMAT, diskL, diskUsed, diskMax);
|
this.diskLoad = String.format(OTHER_FORMAT, diskL, diskUsed, diskMax);
|
||||||
if (systemMetrics.getDiskUsage() > THRESHOLD) {
|
if (systemMetrics.getDiskUsage() > THRESHOLD) {
|
||||||
this.status ++;
|
this.status ++;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user