Linuxでは、オープンファイルが多すぎて問題が発生し、ソフトファイル制限とハードファイル制限を1024から65355に増やしましたが、まだ同じ問題が発生しました。
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.io.IOException: Too many open files
at java.base/java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.base/java.io.File.createTempFile(File.java:2129)
at com.boomi.util.FileUtil.createTempFile(FileUtil.java:901)
at com.boomi.util.FileUtil.createTempDirectory(FileUtil.java:880)
at com.boomi.util.FileUtil.createTempDirectory(FileUtil.java:862)
at com.boomi.transform.data.DataNodeCache.createStorageLocation(DataNodeCache.java:352)
at com.boomi.store.db.BigMap.getDb(BigMap.java:592)
... 84 more
Nov 2, 2022 8:46:02 AM AEDT WARNING [com.boomi.util.LogUtil doLog] Failed purging bigmap cache (2)
java.sql.SQLException: Failed creating storage location
at com.boomi.store.db.BigMap.getDb(BigMap.java:594)
at com.boomi.transform.data.DataNodeCache.store(DataNodeCache.java:270)
at com.boomi.transform.data.DataNodeCache.store(DataNodeCache.java:29)
at com.boomi.store.db.BigMap$NewRef.discard(BigMap.java:735)
at com.boomi.store.db.BigMap.trimCache(BigMap.java:393)
at com.boomi.store.db.BigMap.reduceMemoryIfNecessary(BigMap.java:583)
at com.boomi.store.db.BigMap.put(BigMap.java:361)
at com.boomi.store.db.BigMap.put(BigMap.java:280)
答え1
変更した制限はユーザーとセッションに適用されます。
ログアウトしてアプリケーションを再起動することをお勧めします。一方、オペレーティングシステムの制限を修正しましたか?次の操作を行いましたか(ログアウト、ログイン、アプリケーション/スクリプトの再起動に加えて)?
編集する/etc/sysctl.confそして、以下を追加してください:
fs.filemax=999999
変更の保存とコマンドの実行
sysctl -p
最後に、アプリケーションを再起動する必要があります。
答え2
「開いたファイルが多すぎます。」エラーメッセージがログに書き込まれると、プロセスに使用可能なすべてのファイルハンドルが使用されたことを示します(ソケットも含む)。
「オープンファイルが多すぎます」エラーは、プロセスがオペレーティングシステムで許可されているよりも多くのファイルを開く必要がある場合に発生します。この数は、プロセスが所有するファイル記述子の最大数によって制御されます。
3つの方法で交差検証ができます。
Linuxシステム全体の設定で開いているファイルが多すぎる
最大オープンファイル数のオペレーティングシステムレベル設定を表示するには、次のコマンドを使用します。
# cat /proc/sys/fs/file-max
Linuxでは、ユーザーごとに開かれたファイルが多すぎる設定を確認してください。
rootで次のコマンドを実行すると、ユーザーの最大オープンファイル数の設定を表示できます。
# su – <user> $ ulimit -n
デフォルト設定は通常1024です。
Linuxのシステムサービスで開いているファイルが多すぎるかどうかを確認してください。
インスタンスをシステムサービスとして起動する場合は、
[Service]
サービスファイルセクションに制限を指定できます。サービスファイルの場所は/etc/systemd/system/<process-name>.service
。