OpenLDAP2.4に対して同時接続数を増やすテストを行っていたところ、以下のエラーがログに出力されました。
「Unable to allocate memory for transaction detail」
何だ?これ。と思ってしらべていたら、Oracleのサイトに以下の情報が。
Berkeley DB occasionally returns the error: "Unable to allocate memory for transaction detail". What does that mean?This error means the maximum number of active transactions configured for Berkeley DB has been reached. The Berkeley DB environment should be configured to support more active transactions. When all of the memory available in the database environment for transactions is in use, calls to being a transaction will fail until some active transactions complete. By default, the database environment is configured to support at least 20 active transactions. For more information see the "<a href="http://www.oracle.com/technology/documentation/berkeley-db/db/programmer_reference/txn_config.html">Configuring transactions</a>" section of the Berkeley DB Reference Guide.
BerkeleyDBに対して設定されたActiveトランザクション数の最大値に達したとのこと。参照の試験しかしていないのにおかしいな・・・
とりあえずDB_CONFIGファイルのset_lg_regionmax, set_lg_bsizeを倍にしたら回避できた。
#set_lg_regionmax 262144 #set_lg_bsize 2097152 set_lg_regionmax 524288 set_lg_bsize 4194304
参照だけでもトランザクションを使うのでしょうかね。