次の問題が発生しました。 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}
(次のコマンドを使用して1段階で実行できます)top -p $(ps -aux | grep pwsh | head -n 1 | cut -d' ' -f5)
このようなウィンドウが見えます。
メモリ消費が継続的に無制限(繰り返しごとに0.1%ずつ)増加することがわかります。
Google は powershell を使用して新しいセッションを開くと、メモリリークについて言及したいくつかの記事を返しましたが、上記の簡単なスクリプトがなぜそのような問題を引き起こすのかについての説明が見つかりませんでした.繰り返しますが、Linuxでのみ可能です。
この問題を解決する方法についてのアイデアはありますか?