
上次有读者问网关运行后,怎么测试?其实有很多方式,介绍一种最简单使用的方式。
可以创建一个定时脚本自动获取并记录两个实例的运行数据。
文件 : Monitor_ModbusGateway.ps1
# ModbusGateway 监控脚本
# 每5分钟记录一次运行状态
$logFile = "modbusgateway_monitor.log"
$header = "Time,PID,Memory(MB),CPU,Handles"
# 写入表头
if (!(Test-Path $logFile)) {
$header | Out-File -FilePath $logFile -Encoding UTF8
}
# 监控循环
while ($true) {
$time = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$processes = Get-Process | Where-Object {$_.ProcessName -eq "modbusgateway"}
foreach ($proc in $processes) {
$memory = [math]::Round($proc.WS/1MB, 2)
$cpu = $proc.CPU
$handles = $proc.Handles
"$time,$($proc.Id),$memory,$cpu,$handles" | Out-File -FilePath $logFile
-Encoding UTF8 -Append
}
# 每5分钟执行一次
Start-Sleep -Seconds 300
}# 启动监控脚本
powershell -File "Monitor_ModbusGateway.ps1"Get-Content "modbusgateway_monitor.log" | Select-Object -Last 20当然可以直接打开记事本查看😄
# 按PID分组查看
Import-Csv "modbusgateway_monitor.log" | Group-Object PID | ForEach-Object {
$_.Group | Select-Object -Last 5
}实时查看进程状态 :
while ($true) {
Clear-Host
Get-Process | Where-Object {$_.ProcessName -eq "modbusgateway"} |
Select-Object Name, Id, @{Name="Memory(MB)";Expression={[math]::Round($_.WS/
1MB,2)}}, CPU, Handles
Start-Sleep -Seconds 10
}
两个实例运行正常,资源使用合理。17888实例已运行5.5小时以上,内存稳定在46.91MB,表现优秀。