[linux]apache 실행 실패 - 오류 No space left .. 관련

apache 웹서버가 죽었다.......

콘솔에서 상태 확인 후 재시작을 했는데도 안된다....

 

apache 재작시 아래와 같은 메세지가 나왔다.

[~]# service httpd status
httpd is stopped
[~]# service httpd start
Starting httpd:                                            [FAILED]
[~]# service httpd stop
Stopping httpd:                                            [  OK  ]
[~]# service httpd status
httpd is stopped

 

오류 내용으로 구글 검색을 해보니,

여러 경우에 대한 내용이 나왔고, 

그 중 웹로그 error log도 확인을 해보라는 내용이 있어 확인 해보니, 

 

[~]# cat /var/log/httpd/error_log
[Mon Apr 15 10:31:29 2024] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Apr 15 10:31:29 2024] [error] (28)No space left on device: Cannot create SSLMutex
Configuration Failed

 

언젠가 한번 본 듯 한 오류 내용 이긴 한 거 같은데....

apache 웹서버 재시작(restart)가 안된다 | 써브 개발 (tistory.com)

 

저 때도 그랬는데.. 그걸 까먹고 해매네.... 

암튼, 

이렇게 No space left .... 와 같은 오류가 발생 하면서 apache(httpd) 실행에 실패 할 때
semaphore 관련 설정을 확인해 본다.

 

//현재 설정 확인
[~]# ipcs -ls

------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767

[~]# cat /proc/sys/kernel/sem
250     32000   32      128


#현재 사용량 확인
[~]# ipcs -us

------ Semaphore Status --------
used arrays = 134
allocated semaphores = 134

설정값 128 보다 현재 사용량 134로 초과 되어 사용중으로 이런 경우 apache 재시작시 "No space .... " 관련 오류가 발생하게 된다.

해결 하기 위해서
"max number of arrays = 128"  값을 늘려 준다.

해당 설정은 "/etc/sysctl.conf"에서 적용해 준다.
kernel.sem = 250 32000 32 256

 

위 설정값중 맨 뒤 값을 수정해 주면 된다. 너무 크면 서버에 부담이 될 수 있으니, 적당히 올려 주고 모니터링을 해보는게 좋겠다.


설정 변경후 "/etc/sysctl.conf" 재적용 해준다.
[~]# sysctl -p

이후 apach 서비스를 다시 시작해준다.

[~]# service httpd start