Apache에서 error.log에 Too many open files 라는 로그가 남았다. 이게 무슨 말일까? 찾아봤더니, 주어진 계정에서 열 수 있는 최대 파일의 갯수를 초과했다는 이야기란다. 이런 로그가 남았다면, 열 수 있는 최대 파일의 갯수를 조정해주어야 한다. 사실 나는 socket과 관련된 부분에서 이 에러가 났었다. (자세히 기억이 안나네요.)


아래 링크들을 참고하자. 

http://pchero21.com/918

http://stackoverflow.com/questions/2569620/socket-accept-error-24-to-many-open-files

http://rtoodtoo.net/2012/03/07/how-to-use-ulimit-utility-to-restrict-users/


크게 손댈것 없이 첫번째 링크에서 제안하는 방법대로 limit.conf에 계정과 열 수 있는 최대 파일의 갯수를 지정해주었다. 이 다음 재부팅하니 잘 먹혀들어갔다. 


다음의 명령어로 확인할 수 있다. ulimit -Hn (이건 hard 권한, 즉 수퍼유저의 경우), ulimit -Sn (이건 soft 권한, 일반적인 계정의 경우).


여기서 사실 최대 process의 갯수도 정해줄 수 있는데, 너무 작게 할 경우 gnome을 이용한 X window로 진입시 크나큰 문제가 생긴다. (200으로 정해줬는데... 문제가 생겨서 혼났네요.) 정해주지 않을 경우 사실상 무한대의 process가 생성될 수 있는것 같다. 


만약 gnome에서 포크 에러가 느닷없이 발생한다면, 보통 process의 숫자에 제한이 걸려 실행이 되지 않는 경우일 것이다. X window에서 벗어나 command 모드로 들어가도 -bash: fork: retry: No child processes 에러가 발생한다.


이 경우 process의 제한을 지워주면 잘 해결된다. 



+ Recent posts