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에서 사용자당 열린 파일이 너무 많음 설정을 확인하세요.
루트로 다음 명령을 실행하면 사용자의 최대 열린 파일 수 설정을 볼 수 있습니다.
# su – <user> $ ulimit -n
기본 설정은 일반적으로 1024입니다.
Linux의 시스템 서비스에 열려 있는 파일이 너무 많은지 확인하세요.
인스턴스를 시스템 서비스로 시작하는 경우
[Service]
서비스 파일 섹션에 제한을 지정할 수 있습니다. 서비스 파일의 위치는/etc/systemd/system/<process-name>.service
.