💻Linux 의 Max User Processes, Open Files

Linux 환경에서 Java Application 을 운영하다보면 한번쯤은 겪는 에러중 하나가 'OutOfMemoryError' 와 'Too many open files Error' 가 아닐까 싶습니다. 'OutOfMemoryError' 의 경우 Java Heap Size 혹은 장비의 Memory 가 부족해서 발생할 수도 있지만 Thread 수가 Linux 에서 제한하는 Max User Processes 수가 초과했을때도 발생할 수 있습니다. 단순히 이름만 들어보면 프로세스 수를 제한한다고 오해할 수 있지만, Linux 는 Java 의 Thread 와 Process 를 동일하게 카운트하기 때문에 Thread 수도 Max User Processes 수에 제한을 받습니다. 만약 Thread 를 넉넉하게 생성해야하는 서비스라면 Linux 의 Max User Processes 수를 상황에 맞게 늘리셔야 합니다. 'Too many open files Error' 는 Linux 에서 제한하는 FD(File Descriptor)수를 초과하는 행위를 했을 때 발생할 수 있는 에러입니다. 간단하게는 FileSystem 에서 특정 File 을 Open 했을때도 수가 증가할 수 있고, Http 통신과 같이 소켓 통신을 할 때도 카운트 수가 증가할 수 있습니다. 때문에 FD 수를 많이 증가시킬 수 있는 솔루션이나 서비스일 경우 Linux 에서 제한하는 Open File Count 수를 넉넉하게 늘리셔야 합니다. 한가지 재밌는 점은 JDK 에 MaxFDLimit 라는 옵션이 있는데, 해당 옵션을 True 로 설정하면 FD 제한을 ulimit 로 조회되는 Hard 한도(linux 에서 제한하는 최대치)까지 JDK 가 자동으로 증가시켜 줍니다. 공유드린 블로그는 꽤 오래전에 작성된 글이지만 샘플 코드와 각 Error 를 검증하기 위한 과정이 상세히 기술되어있으니 관심있으신 분들께서는 한번 보시면 좋겠습니다.

Java, max user processes, open files | 우아한형제들 기술블로그

우아한형제들 기술블로그 |

Java, max user processes, open files | 우아한형제들 기술블로그

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2022년 12월 23일 오전 9:05

 • 

저장 12조회 2,763

댓글 0