我遇到了以下问题:我们有一个应用程序运行连续循环,通过 powershell 打开远程连接(执行一些操作,然后关闭)。这在 Windows 机器上运行良好,但在 Linux 机器上则不然(在 上测试Ubuntu 16.0.4
)。
使用下面的脚本重现问题:
$i = 0
while ($i -le 200)
{
$password = "myPassword"
$domain = "domain\computerName"
$computerName = "xxx.xxx.xxx.xxx"
$pwSession = convertto-securestring -AsPlainText -Force $password
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $domain,$pwSession
$session = new-pssession -computername $computerName -credential $cred -Authentication Negotiate
Remove-PSSession -Session $session
Get-PSSession
sleep 3
$i
$i++
}
- 通过运行进入 powershell 上下文
pwsh
- 运行上面的脚本(复制+粘贴)
- 在 pwsh 进程 id 上运行
top -p {process id}
(您可以使用以下命令一步运行它)top -p $(ps -aux | grep pwsh | head -n 1 | cut -d' ' -f5)
你会看到一个像这样的窗口
您会注意到内存消耗将无限期地持续增长(每次迭代增长 0.1%)。
Google 确实返回了几篇文章,提到使用 powershell 打开新会话时会出现内存泄漏,但我在其中找不到任何解释为什么上面的简单脚本会产生这样的问题 - 同样,仅在 Linux 中。
关于如何解决这个问题有什么想法吗?