现场测试调整
This commit is contained in:
parent
690499ecfa
commit
c9b8724195
4
pom.xml
4
pom.xml
@ -64,11 +64,11 @@
|
|||||||
<version>2.0.2</version>
|
<version>2.0.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!--设备状态采集 cpu,内存,硬盘等-->
|
<!--设备状态采集 cpu,内存,硬盘等-->
|
||||||
<!--<dependency>
|
<dependency>
|
||||||
<groupId>com.github.oshi</groupId>
|
<groupId>com.github.oshi</groupId>
|
||||||
<artifactId>oshi-core</artifactId>
|
<artifactId>oshi-core</artifactId>
|
||||||
<version>6.4.8</version>
|
<version>6.4.8</version>
|
||||||
</dependency>-->
|
</dependency>
|
||||||
<!-- mybatis-plus -->
|
<!-- mybatis-plus -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.baomidou</groupId>
|
<groupId>com.baomidou</groupId>
|
||||||
|
@ -3,13 +3,17 @@ package club.joylink.xiannccda.ats.message;
|
|||||||
import club.joylink.xiannccda.ats.message.line3.changer.DeviceNameChangerManage;
|
import club.joylink.xiannccda.ats.message.line3.changer.DeviceNameChangerManage;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.boot.ApplicationArguments;
|
import org.springframework.boot.ApplicationArguments;
|
||||||
import org.springframework.boot.ApplicationRunner;
|
import org.springframework.boot.ApplicationRunner;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import oshi.SystemInfo;
|
||||||
|
import oshi.software.os.OSProcess;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OCC客户端管理
|
* OCC客户端管理
|
||||||
@ -31,6 +35,9 @@ public class OccMessageManage implements ApplicationRunner {
|
|||||||
private Boolean collectorData;
|
private Boolean collectorData;
|
||||||
@Value("${receive-msg-timeout:6}")
|
@Value("${receive-msg-timeout:6}")
|
||||||
private Integer receiveMsgTimeout;
|
private Integer receiveMsgTimeout;
|
||||||
|
|
||||||
|
@Value("${monitor-handware-change:false}")
|
||||||
|
private boolean monitorHandwareChange;
|
||||||
Map<Integer, XianOccMessagingClient> clientMap = new HashMap<>();
|
Map<Integer, XianOccMessagingClient> clientMap = new HashMap<>();
|
||||||
|
|
||||||
public void sendMsg(Integer lineId, MessageData md, boolean isRealTime) {
|
public void sendMsg(Integer lineId, MessageData md, boolean isRealTime) {
|
||||||
@ -48,12 +55,13 @@ public class OccMessageManage implements ApplicationRunner {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(ApplicationArguments args) throws Exception {
|
public void run(ApplicationArguments args) throws Exception {
|
||||||
log.info("初始化 occ tcp连接....");
|
log.info("初始化 occ tcp连接.... 是否监控cpu,内存信息:{}", this.monitorHandwareChange);
|
||||||
|
|
||||||
DeviceNameChangerManage.init();
|
DeviceNameChangerManage.init();
|
||||||
// 读取数据配置,创建客户端
|
// 读取数据配置,创建客户端
|
||||||
this.registerClient(new XianOccMessagingClient(this.lineId, this.realPort, this.unRealPort, this.serverHost, this.collectorData, receiveMsgTimeout));
|
this.registerClient(new XianOccMessagingClient(this.lineId, this.realPort, this.unRealPort, this.serverHost, this.collectorData, receiveMsgTimeout));
|
||||||
for (XianOccMessagingClient client : this.clientMap.values()) {
|
for (XianOccMessagingClient client : this.clientMap.values()) {
|
||||||
client.connect();
|
client.connect(this.monitorHandwareChange);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ public class OccTcpClientConnection {
|
|||||||
void reconnect() {
|
void reconnect() {
|
||||||
if (this.channel != null) {
|
if (this.channel != null) {
|
||||||
this.channel.close();
|
this.channel.close();
|
||||||
this.reconnectState.resetState();
|
// this.reconnectState.resetState();
|
||||||
} else {
|
} else {
|
||||||
this.connect();
|
this.connect();
|
||||||
}
|
}
|
||||||
@ -110,7 +110,7 @@ public class OccTcpClientConnection {
|
|||||||
this.channel = null;
|
this.channel = null;
|
||||||
this.client.resetRequestBaseDataFlag();
|
this.client.resetRequestBaseDataFlag();
|
||||||
}
|
}
|
||||||
// this.reconnectState.resetState();
|
this.reconnectState.resetState();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@ package club.joylink.xiannccda.ats.message;
|
|||||||
|
|
||||||
import club.joylink.xiannccda.ats.message.line3.req.LoadHistoryTGDataRequest;
|
import club.joylink.xiannccda.ats.message.line3.req.LoadHistoryTGDataRequest;
|
||||||
import club.joylink.xiannccda.ats.message.line3.req.LoadHistoryTGDataRequest.ApplyTypeEnum;
|
import club.joylink.xiannccda.ats.message.line3.req.LoadHistoryTGDataRequest.ApplyTypeEnum;
|
||||||
import java.sql.Time;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -12,6 +11,10 @@ import java.util.concurrent.TimeUnit;
|
|||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import oshi.SystemInfo;
|
||||||
|
import oshi.hardware.CentralProcessor;
|
||||||
|
import oshi.hardware.GlobalMemory;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class XianOccMessagingClient {
|
public class XianOccMessagingClient {
|
||||||
@ -92,8 +95,10 @@ public class XianOccMessagingClient {
|
|||||||
/**
|
/**
|
||||||
* 连接OCC服务
|
* 连接OCC服务
|
||||||
*/
|
*/
|
||||||
public void connect() {
|
public void connect(boolean monitorHandwareChange) {
|
||||||
|
this.timeOutHandler.monitorHandwareChange = monitorHandwareChange;
|
||||||
this.timeOutHandler.start();
|
this.timeOutHandler.start();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@ -115,13 +120,78 @@ public class XianOccMessagingClient {
|
|||||||
|
|
||||||
static final ScheduledExecutorService Executor = Executors.newSingleThreadScheduledExecutor();
|
static final ScheduledExecutorService Executor = Executors.newSingleThreadScheduledExecutor();
|
||||||
private final LinkedList<OccTcpClientConnection> clientConnections = new LinkedList<>();
|
private final LinkedList<OccTcpClientConnection> clientConnections = new LinkedList<>();
|
||||||
|
private final SystemInfo systemInfo;
|
||||||
|
// private long[] ticks = null;
|
||||||
|
|
||||||
|
private boolean monitorHandwareChange;
|
||||||
|
// private OSProcess osProcess;
|
||||||
|
// private Integer processId;
|
||||||
|
private long[] ticks;
|
||||||
|
|
||||||
|
public ConnectionTimeOutHandler() {
|
||||||
|
this.systemInfo = new SystemInfo();
|
||||||
|
/* List<OSProcess> osProcesses = systemInfo.getOperatingSystem().getProcesses();
|
||||||
|
for (OSProcess osProcess : osProcesses) {
|
||||||
|
String processName = osProcess.getName();
|
||||||
|
if (StringUtils.contains(processName, "java")) {
|
||||||
|
log.info(osProcess.getArguments().toString());
|
||||||
|
for (String arg : osProcess.getArguments()) {
|
||||||
|
if (StringUtils.containsAny(arg, "XianNccDaApplication", "xian-ncc-da")) {
|
||||||
|
*//*System.out.println(osProcess.getProcessID());
|
||||||
|
System.out.println(osProcess.getName());
|
||||||
|
System.out.println(osProcess.getProcessCpuLoadBetweenTicks(osProcess) * 100);*//*
|
||||||
|
this.osProcess = osProcess;
|
||||||
|
this.processId = osProcess.getProcessID();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
public void addConnection(OccTcpClientConnection conn) {
|
public void addConnection(OccTcpClientConnection conn) {
|
||||||
this.clientConnections.add(conn);
|
this.clientConnections.add(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String hardWareUserInfo() {
|
||||||
|
CentralProcessor cpu = systemInfo.getHardware().getProcessor();
|
||||||
|
GlobalMemory memory = systemInfo.getHardware().getMemory();
|
||||||
|
if (Objects.isNull(ticks)) {
|
||||||
|
ticks = cpu.getSystemCpuLoadTicks();
|
||||||
|
} else {
|
||||||
|
double d2 = cpu.getSystemCpuLoadBetweenTicks(ticks);
|
||||||
|
ticks = cpu.getSystemCpuLoadTicks();
|
||||||
|
long totalMemory = memory.getTotal();
|
||||||
|
long availableMemory = memory.getAvailable();
|
||||||
|
long usedMemory = totalMemory - availableMemory;
|
||||||
|
return String.format("当前CPU使用:%d%% 内存总内存:%s(MB) 使用:%s(MB) 可用:%s(MB)", Math.round(d2 * 100), (totalMemory / 1024 / 1024), (usedMemory / 1024 / 1024),
|
||||||
|
(availableMemory / 1024 / 1024));
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
|
||||||
|
/* GlobalMemory memory = systemInfo.getHardware().getMemory();
|
||||||
|
long totalMemory = memory.getTotal();
|
||||||
|
long availableMemory = memory.getAvailable();
|
||||||
|
long usedMemory = totalMemory - availableMemory;
|
||||||
|
if (Objects.isNull(this.osProcess)) {
|
||||||
|
return String.format("内存总内存:%s(MB) 使用:%s(MB) 可用:%s(MB)", (totalMemory / 1024 / 1024), (usedMemory / 1024 / 1024),
|
||||||
|
(availableMemory / 1024 / 1024));
|
||||||
|
} else {
|
||||||
|
OSProcess osp = this.systemInfo.getOperatingSystem().getProcess(this.processId);
|
||||||
|
|
||||||
|
double d2 = this.osProcess.getProcessCpuLoadBetweenTicks(osp);
|
||||||
|
return String.format("当前CPU使用:%d%% 内存总内存:%s(MB) 使用:%s(MB) 可用:%s(MB)", Math.round(d2 * 100), (totalMemory / 1024 / 1024), (usedMemory / 1024 / 1024),
|
||||||
|
(availableMemory / 1024 / 1024));
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
public void start() {
|
public void start() {
|
||||||
Executor.scheduleWithFixedDelay(() -> {
|
Executor.scheduleWithFixedDelay(() -> {
|
||||||
|
if (this.monitorHandwareChange) {
|
||||||
|
String moitorContent = this.hardWareUserInfo();
|
||||||
|
if (StringUtils.isNotEmpty(moitorContent)) {
|
||||||
|
log.info(moitorContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
for (OccTcpClientConnection cc : this.clientConnections) {
|
for (OccTcpClientConnection cc : this.clientConnections) {
|
||||||
if (cc.connected) {
|
if (cc.connected) {
|
||||||
long ctm = System.currentTimeMillis();
|
long ctm = System.currentTimeMillis();
|
||||||
@ -135,6 +205,7 @@ public class XianOccMessagingClient {
|
|||||||
}
|
}
|
||||||
}, Period, Period, TimeUnit.SECONDS);
|
}, Period, Period, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@ -144,6 +144,7 @@ public class PlatformAlertMonitoringTask implements AlertMonitoringTask {
|
|||||||
AlertDeviceType.DEVICE_TYPE_PLATFORM,
|
AlertDeviceType.DEVICE_TYPE_PLATFORM,
|
||||||
false);
|
false);
|
||||||
alertManager.emit(alertInfo);
|
alertManager.emit(alertInfo);
|
||||||
|
this.removeTrainRecord(record);
|
||||||
}
|
}
|
||||||
// this.removeTrainRecordOnly(record);
|
// this.removeTrainRecordOnly(record);
|
||||||
}
|
}
|
||||||
@ -174,6 +175,7 @@ public class PlatformAlertMonitoringTask implements AlertMonitoringTask {
|
|||||||
"列车开关过屏蔽门只是等待,线路[{}] 列车表号[{}] 列车车次号[{}] 车站id[{}] 站台门id[{}] 上下行[{}] 解析屏蔽门code[{}],接收时间[{}] ",
|
"列车开关过屏蔽门只是等待,线路[{}] 列车表号[{}] 列车车次号[{}] 车站id[{}] 站台门id[{}] 上下行[{}] 解析屏蔽门code[{}],接收时间[{}] ",
|
||||||
record.getLineId(), record.getTrainId(), record.getGlobalId(), record.getStationId(), record.getSideId(), isUpWay, platformBuild.getId(), platformBuild.getReceiveTime());
|
record.getLineId(), record.getTrainId(), record.getGlobalId(), record.getStationId(), record.getSideId(), isUpWay, platformBuild.getId(), platformBuild.getReceiveTime());
|
||||||
}
|
}
|
||||||
|
this.removeTrainRecord(record);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
InUsedScheduleData scheduleData = DeviceDataRepository.findDataSouce(String.valueOf(record.getLineId()), DataTypeEnum.TRAIN_PLAN);
|
InUsedScheduleData scheduleData = DeviceDataRepository.findDataSouce(String.valueOf(record.getLineId()), DataTypeEnum.TRAIN_PLAN);
|
||||||
@ -183,6 +185,7 @@ public class PlatformAlertMonitoringTask implements AlertMonitoringTask {
|
|||||||
log.info("未找到对应的行车计划,线路[{}] 列车表号[{}] 列车车次号[{}] 车站id[{}] 站台门id[{}] 上下行[{}] 解析屏蔽门code[{}]"
|
log.info("未找到对应的行车计划,线路[{}] 列车表号[{}] 列车车次号[{}] 车站id[{}] 站台门id[{}] 上下行[{}] 解析屏蔽门code[{}]"
|
||||||
, record.getLineId(), record.getTrainId(), record.getGlobalId(), record.getStationId(), record.getSideId(), isUpWay, platformBuild.getId());
|
, record.getLineId(), record.getTrainId(), record.getGlobalId(), record.getStationId(), record.getSideId(), isUpWay, platformBuild.getId());
|
||||||
}
|
}
|
||||||
|
this.removeTrainRecord(record);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Plan.Builder planBuild = planBuildOpt.get();
|
Plan.Builder planBuild = planBuildOpt.get();
|
||||||
|
@ -12,9 +12,12 @@ spring:
|
|||||||
auto-commit: true #配置从池返回的连接的默认自动提交行为
|
auto-commit: true #配置从池返回的连接的默认自动提交行为
|
||||||
idle-timeout: 60000 # 允许连接在连接池中空闲的最长时间,单位ms
|
idle-timeout: 60000 # 允许连接在连接池中空闲的最长时间,单位ms
|
||||||
pool-name: HikariPool
|
pool-name: HikariPool
|
||||||
max-lifetime: 0 # 池中连接关闭后的最长生命周期,单位ms
|
# max-lifetime: 1800000 # 池中连接关闭后的最长生命周期,单位ms
|
||||||
|
max-lifetime: 300000 # 池中连接关闭后的最长生命周期,单位ms
|
||||||
connection-timeout: 60000 # 等待连接的超时时间,单位ms
|
connection-timeout: 60000 # 等待连接的超时时间,单位ms
|
||||||
connection-test-query: select 1
|
connection-test-query: select 1
|
||||||
|
leak-detection-threshold: 20000
|
||||||
|
# validation-timeout: 10000
|
||||||
|
|
||||||
key:
|
key:
|
||||||
public: classpath:app.pub
|
public: classpath:app.pub
|
||||||
@ -47,5 +50,6 @@ jwt:
|
|||||||
occ-not-handle-rtu: '{3: "81,82"}'
|
occ-not-handle-rtu: '{3: "81,82"}'
|
||||||
#长时间没有接收occ数据超时,重新获取基础数据时间(小时)
|
#长时间没有接收occ数据超时,重新获取基础数据时间(小时)
|
||||||
receive-msg-timeout: 1
|
receive-msg-timeout: 1
|
||||||
|
#检测硬件变化(cpu,内存)
|
||||||
|
monitor-handware-change: true
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user