Apache에서 error.log에 Too many open files 라는 로그가 남았다. 이게 무슨 말일까? 찾아봤더니, 주어진 계정에서 열 수 있는 최대 파일의 갯수를 초과했다는 이야기란다. 이런 로그가 남았다면, 열 수 있는 최대 파일의 갯수를 조정해주어야 한다. 사실 나는 socket과 관련된 부분에서 이 에러가 났었다. (자세히 기억이 안나네요.)
아래 링크들을 참고하자.
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의 제한을 지워주면 잘 해결된다.
'Study > Computer' 카테고리의 다른 글
Matplotlib 추천 Q&A 링크들 (0) | 2014.05.21 |
---|---|
위도, 경도 검색 프로그램 (0) | 2014.05.09 |
py2exe로 pyQT4 코드 exe로 만들기 (0) | 2014.03.13 |
sqlite3에서 fts3 사용할 때 not operator 사용법 (0) | 2014.02.26 |
python에서 line 줄바꿈없이 업데이트하기 (0) | 2014.01.23 |