記事
· 2021年7月19日 3m read

<STORE>エラーが発生する場合の対処法について

これは InterSystems FAQ サイトの記事です。

<STORE> エラーは サーバ上のプロセスが使用しているプロセス個別メモリ容量が上限に達した場合に発生します。
このメモリはオブジェクトを開いたり、ローカル変数を使用することで消費されるものとなります。
このエラーは サーバ上のプロセスでメモリを大量に使用した場合に発生します。
Caché バージョン2012.2以降、プロセス個別のメモリ容量の最大値が大幅に拡張されました(約2TB)。

この変更により、ローカル変数の使用領域を大幅に増やすことができるようになったため 特別な状況が発生しない限り(プログラムのバグにより大量のローカル変数を作成し続ける等) エラーを回避できるようになりました。

但し、このためのメモリ領域は、プログラムが動作するハードウェアが提供する資源の一つですので物理的な制限は当然あります。
システム全体の資源管理を念頭に置き慎重な使用をお勧めします。

設定値詳細については以下ドキュメントをご参照ください。

プロセスあたりの最大メモリ(KB)の設定値について
インターシステムズ製品のプロセス・メモリについて


プロセスが使用可能なメモリの上限は、管理ポータル(バージョン2010.2以前では[システム管理ポータル])から変更できます。
システム構成パラメータ名は bbsiz で、既定値には、262,144 KB が設定され bbsiz で設定した値まで拡張します。
※IRIS 2022.1 以降は、既定値が -1(最大値:制限なし) になりました。

bbsiz の設定は以下より行います。

管理ポータル:
[システム管理] > [構成] > [システム構成] > [メモリと開始設定] : [プロセスあたりの最大メモリ(KB)]  

※補足
 既定値については、IRIS 2021.1 以前では、262,144 KB が設定されます。
 IRIS 2022.1 以降は、-1(最大値:制限なし) になりました。
 設定値の範囲については以下の通りです。

 【IRIS 2021.1 ~】 256 ~ 2,147,483,648 KB  or -1
 【~ IRIS 2020.1】 128 ~ 2,147,483,648 KB 

 【Caché/Ensemble 2012.2~】 128 ~ 2,147,483,648 KB
 【Caché/Ensemble  2009.1~2012.1】 128 ~ 49,536 KB
 【~Caché/Ensemble  2008.2】 128 ~ 47,630 KB
 

以下、エラーが発生する例を示します。(ターミナルでの実行例)

USER>for i=1:1 set a(i)="some string....."
FOR i=1:1 SET a(i)="some string....."
          ^
<STORE>
USER>


プロセスのメモリ使用状況は、管理ポータルの [システムオペレーション] > [プロセス] の一覧表示から各プロセスの詳細を表示すると、“使用中のメモリ” の項目で確認できます。


以下の関連トピックもあわせてご参照ください。

InterSystems製品のプロセスが使用するメモリ量を教えてください。  

ローカル変数は最大どのくらいまで使うことができるのか

ディスカッション (0)0
続けるにはログインするか新規登録を行ってください