어느날 갑자기 서버 연결이 안된다.
이 페이지에 연결할 수 없음이라는 메세지가 뜨고 멍통이 되어버린다.
뭐가 문제일까? 터미널에 접속해 nginx를 다시 가동해 보기로 한다.
아쉽게도 메세지는 부정적이다.
root@happist:~# service nginx restart
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
그래서 시킨대로 systemctl status nginx.service 명령을 사용했다. 그랬더니 메모리 할당을 못한다고 한다..
root@happist:~# service nginx start
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
root@happist:~# systemctl status nginx.service
● nginx.service - nginx - high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2018-02-04 04:47:54 KST; 19s ago
Docs: http://nginx.org/en/docs/
Process: 16414 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
Process: 16963 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)
Main PID: 319 (code=exited, status=0/SUCCESS)
CPU: 28ms
Feb 04 04:47:54 happist systemd[1]: Starting nginx - high performance web server...
Feb 04 04:47:54 happist nginx[16963]: nginx: [alert] mmap(MAP_ANON|MAP_SHARED, 805306368) failed (12: Cannot allocate memory)
Feb 04 04:47:54 happist systemd[1]: nginx.service: Control process exited, code=exited status=1
Feb 04 04:47:54 happist systemd[1]: Failed to start nginx - high performance web server.
Feb 04 04:47:54 happist systemd[1]: nginx.service: Unit entered failed state.
Feb 04 04:47:54 happist systemd[1]: nginx.service: Failed with result 'exit-code'.
구글링읗 해보니 메모리의 부족이나 상위 플랜으로 업그레이하라는 이야기 많이 나온다.
조금 이상하기도하다. 그 동안 1GB메모리 사용시에도 아무런 문제가 없었고 지금은 2GB로 업그레이드한 상태인데 물리적인 메모리 부족이 맞는 것인지 의문이 들었다.
SWAP 파일 생성으로 해결
그동안 내가 했던 조치들을 반추해 보았다.
- 최근 swap 파일을 사용하지 않도록 해던 게 생각이 났다.
- 나름 빠른 SSD지만 RAM에 비해서는 속도가 느리므로 swap 파일은 속도에 지장을 준다.
- 메모리가 적으면 문제가 없겠지만, 2GB로 업그레이드하면서 조금 여유 메모리가 있으니 swap을 사용하지 않토록 했었다.
- 아마 이게 문제가 되었나 보다.
그래서 swap를 사용토록 해주었던 모든 문제가 해결 되었다. 아무래도 메모리가 2GB라도 적은가 보다.
SWAP 사용하지말고 메모리 사용을 조정해 보자
위 방법은 메모리 사용을 조정 불가 時 적용할 수 있는 방업이라 할 수 있다. 그래서 속도가 조금 늦어지드라도 SWAP 파일을 사용할 수 있도록 만드는 방법이라 할 수 있다.
그러나 굳이 SWAP 파일을 사용하지말고 메모리 사용을 최적화는 방법도 좋을 것이다. 메모리를 4GB로 올리고 나서도 여전히 이런 메모리 부족 현상을 겪었다.
또 SWAP 파일을 만들어야하나하는 고민도 있었지만 메모리 문제이니 메모리 사용을 조정하기로 했다.
- mysql설정 파일에서 max_connections을 150개 정도로 줄였다. 어자피 150명 동시 접속도 쉽지않은 현상이니 무리는 없을 것으로 보았다. 그러면 줄어든 만큼 여분으로 챙겨야하는 메모리가 줄어 든다.
- table_open_cache와 같은 cache 크기를 줄인다.
- ie도 DB 크기에 맞추어 최적화하면서 설정 크기를 줄일 수 있다
너무 어이가 없긴한데 혹 헤멜 분을 위해서 공유해 본다.
새롭게 뉴스레터를 시작했습니다.
1️⃣ 주식 등 투자 정보 : 기업 분석, IB 투자의견 등 투자 관련 내용
..... 테슬라 실적 및 IB들의의 테슬라 투자의견
2️⃣ 사례 및 트렌드 : 사례연구와 트렌드 관련 괜찮은 내용
.....유튜브와 경쟁대신 구독 전환한 비디오 플래폼 비메오 사례