vCenter のメモリ設定をカスタマイズして、vSphere Client を快適に使おうというお話
出典: https://blog.kstyle.net/2023/01/14/vsphere-ui-heap/
vCenter Server 6.0 の頃から使われている方は、以下の KB によくお世話になったんじゃないでしょうか。
vmware-dataservice-sca and vsphere-client status change from green to yellow (2144950)
https://kb.vmware.com/s/article/2144950
これは、flash 版の vsphere web client (vsphere-client) に割り当てているヒープメモリが足りず
健全性のエラーを繰り返してしまうからヒープメモリを増やして不要なアラームを抑制しようとするものです。
実は、vCenter 8.0 でもデフォルトのままだとヒープメモリがやや少ないので、アラームは出ないにしても拡張しておいたほうがよさそうです。
初期状態の vCenter のヒープメモリサイズ
root@vcsa801 [ ~ ]# cloudvm-ram-size -S | egrep "applmgmt|vsphere-ui|AllocatedMB|TOTAL"
Service-Name AllocatedMB MaxMB CurrentMB Curr-RSS Cache MapFiles MemoryLimit
applmgmt 236 14067 2133 171 1961 230 8796093022207
vsphere-ui 1193 2006 1254 950 304 1 8796093022207
TOTAL(RAM=21054.328125MB) 4972 38835 37181 12215 6996 743 8796093022207
AllocatedMB : 許可されたヒープメモリサイズ。AllocatedMB >= Curr-RSS
MaxMB : 今までで最も消費された RSS+Cache
CurrentMB : Curr-RSS + Cache
Curr-RSS : 現在の RSS(物理メモリ消費)
Cache : 現在の File Cache。 OS管理
こんな感じです。
applmgmt の MaxMB がすごいことになってますが、これは一度 vami から upgrade をかけたからですね。
で、vSphere Client(vsphere-ui) ですが、RSS が AllocatedMB の 80% まできていて窮屈そうです。
コマンドでみてみると、-Xmx 937m となっていることもわかります。
root@vcsa801 [ ~ ]# ps -eo user,pid,ppid,%cpu,%mem,vsz:8,rss:8,lstart,cputime,cmd | egrep "RSS|vsphere-ui" | cut -b-200
USER PID PPID %CPU %MEM VSZ RSS STARTED TIME CMD
vsphere+ 48939 24067 0.1 4.1 4171232 895580 Thu Jan 5 08:19:22 2023 00:11:42 /usr/java/jre-vmware/bin/vsphere-ui.launcher -Xmx937m -XX:CompressedClassSpaceSize=256m -Xss320k -XX:ParallelGCThre
ヒープメモリサイズを増やしてみる
KB にならって vsphere-ui のヒープメモリサイズを拡張してみます。どれぐらいが妥当か?という議論はありますが、自分の環境にもよるのでこれは運用してみないとわかりません。とりあえず4GBにして様子を見てみましょう。
cloudvm-ram-size -C xxx でサイズを指定します
root@vcsa801 [ ~ ]# cloudvm-ram-size -C 4096 vsphere-ui
コマンド実行後、vsphere-ui の AllocatedMB が増えたことがわかります。
でも、Curr-RSS は増えていません。プロセスを再起動するまで -Xmx937m が変わらないからです。
root@vcsa801 [ ~ ]# cloudvm-ram-size -S | egrep "applmgmt|vsphere-ui|AllocatedMB|TOTAL"
Service-Name AllocatedMB MaxMB CurrentMB Curr-RSS Cache MapFiles MemoryLimit
applmgmt 223 14067 2133 171 1961 230 8796093022207
vsphere-ui 4352 2006 1254 950 304 1 8796093022207
TOTAL(RAM=21054.328125MB) 7541 38835 37201 12220 7001 744 8796093022207
反映させるために、vsphere-ui を再起動します。
root@vcsa801 [ ~ ]# vmon-cli -r vsphere-ui
Completed Restart service request.
再起動後、-Xmx4096m にしっかり増えています。
root@vcsa801 [ ~ ]# ps -eo user,pid,ppid,%cpu,%mem,vsz:8,rss:8,lstart,cputime,cmd | egrep "RSS|vsphere-ui" | cut -b-200
USER PID PPID %CPU %MEM VSZ RSS STARTED TIME CMD
vsphere+ 29661 24067 104 5.6 7248516 1214876 Thu Jan 12 13:25:49 2023 00:01:08 /usr/java/jre-vmware/bin/vsphere-ui.launcher -Xmx4096m -XX:CompressedClassSpaceSize=256m -Xss320k -XX:ParallelGCThr
vSphere Client 起動直後
なんと、起動直後の vsphere-ui ですでに Curr-RSS が前回の制限値 1193 を超えています。
root@vcsa801 [ ~ ]# cloudvm-ram-size -S | egrep "applmgmt|vsphere-ui|AllocatedMB|TOTAL"
Service-Name AllocatedMB MaxMB CurrentMB Curr-RSS Cache MapFiles MemoryLimit
applmgmt 223 14067 2133 171 1961 230 8796093022207
vsphere-ui 4352 2006 1729 1197 531 1 8796093022207
TOTAL(RAM=21054.328125MB) 7541 38835 38351 12555 7241 751 8796093022207
1度 vSphere Client からログインしたところ
vsphere-ui の Curr-RSS は更に増えて 1356 に増えています。使用環境(インベントリ数、プラグイン等)によってメモリ要件は変わるので一概には言えませんが、しばらくこれで使ってみて Curr-RSS が増えていかないか見てみるといいでしょう。
root@vcsa801 [ ~ ]# cloudvm-ram-size -S | egrep "applmgmt|vsphere-ui|AllocatedMB|TOTAL"
Service-Name AllocatedMB MaxMB CurrentMB Curr-RSS Cache MapFiles MemoryLimit
applmgmt 223 14067 2133 171 1961 230 8796093022207
vsphere-ui 4352 2006 1897 1356 540 1 8796093022207
TOTAL(RAM=21054.328125MB) 7541 38839 38595 12662 7255 758 8796093022207
まとめ
vCenter の vSphere Client サービスのヒープメモリサイズは初期設定のままだとちょっと小さい。
そのままでも使えるけれど、無用なガベージ・コレクションを引き起こしてしまいます。
デフォルト値から増やして、GUIを快適に利用しましょう。
参考資料
Manually increasing the heap memory on vCenter Server components in vCenter 6.x / 7.x (2150757)
https://kb.vmware.com/s/article/2150757