반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- JUnit
- java 여러개 버전
- easy
- statement.executequery() cannot issue statements that do not produce result sets.
- mac os git error
- ssl프로토콜확인
- parse
- mysql executequery error
- Medium
- java 버전 변경
- xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
- java 1.8 11
- aws
- xcrun: error: invalid active developer path
- java
- 스프링부트테스트
- No tests found for given includes
- tls프로토콜확인
- yum install java
- springboot
- AWS CLI
- OpenFeign
- error
- ssl이란?
- java 11
- springboottest
- java version
- LeetCode
- Java 1.8
- log error
Archives
- Today
- Total
쩨이엠 개발 블로그
[ error ] Too many open files 본문
728x90
반응형
서버 로그가 겁나 많이 찍히길래 놀래서 들어가봤더니 Too many open files라는 IOException이 발생하고 있었다
2020-07-10_01:55:42.942 ERROR [http-nio-8200-Acceptor] [org.apache.tomcat.util.net.Acceptor:175] ::: Socket accept failed
java.io.IOException: Too many open files
at java.base/sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
at java.base/sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:533)
at java.base/sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:285)
at org.apache.tomcat.util.net.NioEndpoint.serverSocketAccept(NioEndpoint.java:461)
at org.apache.tomcat.util.net.NioEndpoint.serverSocketAccept(NioEndpoint.java:73)
at org.apache.tomcat.util.net.Acceptor.run(Acceptor.java:95)
at java.base/java.lang.Thread.run(Thread.java:834)
그러더니 맘대로 셧다운 해버림
.. 왜그러는데....... 왜 맘대로 셧다운하는데.......
찾아보니 OS에 요청할 수 있는 리소스의 limit을 넘어갔을 때 나오는 에러라고 한다
해결방법은 limit를 늘려주면 된다
Hn -> Hard limit
Sn -> Soft limit
실제 서버의 Hn과 Sn을 조회해본다
$ ulimit -Hn
4096
$ ulimit -Sn
1024
늘리기 위해서는 /etc/security/limits.conf를 변경해야한다
이 때 주의할 점은 /proc/sys/fs/file-max의 숫자보다 크게 설정하면 문제가 생길 수 있다고 하니 이것보다는 작게 설정할 것
$ cat /proc/sys/fs/file-max
96460
$ sudo vi /etc/security/limits.conf
/etc/security/limits.conf 맨 밑의 숫자를 변경한다
...
root hard nofile 50000
root soft nofile 50000
...
그리고 저장
source /etc/security/limits.conf 혹은 logout했다가 다시 login을 해준다
[ec2-user@ip-172-31-34-156 ~]$ ulimit -Hn
50000
[ec2-user@ip-172-31-34-156 ~]$ ulimit -Sn
50000
현재 돌아가고 있는 서비스도 재기동 해주거나 limit을 바꿔준다
$ ps -ef | grep iot
user 6276 6246 0 01:54 pts/0 00:00:00 grep --color=auto iot
root 29160 1 0 Jul10 ? 00:24:21 java -Dspring.profiles.active=dev -server -jar iot.jar
29160 pid를 확인 한 후 limit을 변경한다
혹시 모르니 조회부터
$ sudo prlimit --nofile --output RESOURCE,SOFT,HARD --pid 29160
RESOURCE SOFT HARD
NOFILE 4096 4096
변경
$ sudo prlimit --nofile=50000 --pid=29160
다시 확인
$ sudo prlimit --nofile --output RESOURCE,SOFT,HARD --pid 29160
RESOURCE SOFT HARD
NOFILE 50000 50000
728x90
반응형
'개발 > ETC' 카테고리의 다른 글
[ linux ] Library not loaded: @executable_path/../.Python (0) | 2020.07.21 |
---|---|
[ linux ] 사용했던 명령어 history 보기 (0) | 2020.07.14 |
[ error ] shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory (0) | 2020.07.11 |
[ node ] certificate has expired 오류 (0) | 2020.07.10 |
[ Apache ] 아파치 start/stop/restart 명령어 (0) | 2020.07.04 |
Comments