21.1.1 デスクトップヒープ指定値の見積もり方法
HiRDBは,必要なデスクトップヒープ量を計算し,ユニット起動時に自動的に確保します。そのため,通常はデスクトップヒープの指定値を変更する必要はありません。ただし,デスクトップヒープ不足が頻発する場合は,次の方法でデスクトップヒープの指定値を見直してください。
(1) デスクトップヒープの指定値の求め方
デスクトップヒープの使用量はレジストリ中に指定があり,レジストリエディタで変更できます。この指定はアカウントごとの使用量を規定するものです。サーバマシン全体のデスクトップヒープの使用量には,上限値※があります。
- 注※
-
OSによってデスクトップヒープの上限値は異なります。
- 計算式
HiRDBが起動するサーバプロセス数(pd_max_server_processの値)×a (単位:バイト)
- aの値:
-
5000
ただし,次の点に注意が必要です。
-
指定値を大きくし過ぎると,別のアカウントで稼働している他PPの動作に影響を与える可能性があります。このため,不要に大きな値を指定しないでください。
-
HiRDBが起動するプロセスは,HiRDBサーバプロセスやユーザが実行する運用コマンド,及びユティリティだけではありません。HiRDBのサーバプロセスが異常終了した後に実行する保守情報を取得するコマンドも,HiRDBが起動するプロセスとしてデスクトップヒープを使用します。このため,大量のHiRDBサーバプロセス異常終了又はキャンセル時に,デスクトップヒープ不足(サーバプロセス停止を示すKFPS01820-Eメッセージで「end state=0x8000」と表示されます)が発生した場合,デスクトップヒープ量を調整するのではなく,システム共通定義で保守情報を取得しないように変更してください。
(2) デスクトップヒープの指定値の変更
(a) HiRDBのシステム定義で変更する場合
システム共通定義,又はユニット制御情報定義のpd_process_desktopheap_sizeオペランドで,1プロセス当たりのデスクトップヒープ消費量を指定します。
(b) レジストリエディタで変更する場合
上記の方法でデスクトップヒープ不足が解消されない場合は,レジストリエディタでデスクトップヒープの指定値を変更します。なお,レジストリエディタの使い方を誤ると重大な問題が発生することがあります。十分注意してください。また,デスクトップヒープの値は,動作環境に応じて調整する必要があります。
-
HiRDBのサービスを停止します。
-
レジストリエディタを使用して,非対話型デスクトップのデスクトップヒープの値を変更します。
●レジストリキー
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems
●レジストリ値
Windows
●値
%SystemRoot%\system32\csrss.exe ObjectDirectory
=\Windows SharedSection=1024,3072,512
Windows=On SubSystemType=Windows ServerDll=basesrv,1
ServerDll=winsrv:UserServerDllInitialization,3
ServerDll=winsrv:ConServerDllInitialization,2
ProfileControl=Off MaxRequestThreads=16
変更するパラメタは,SharedSectionの3番目のパラメタ(下線)です。このパラメタが512の場合は,システムは各デスクトップに対して512キロバイトのヒープを割り当てます。3番目のパラメタが省略されている場合は,2番目の値(3,072キロバイト)を割り当てます。3番目のパラメタを「デスクトップヒープの指定値の求め方」で求めた値に変更してください。この場合,pd_max_server_processの指定値が正しく見積られた値であることが前提です。
-
OSを再起動します。
-
HiRDBサービスを再開始します。