[리눅스] 아파치 프로세스 개수 및 사용 메모리 확인 방법

아파치 메모리 사용량과 프로세스 개수를 확인 할때 사용하면 쉘 명령어입니다.

현재 아파치 총 메모리 사용량(단위 : MB)

 

현재 실행 중인 아파치 프로세스 개수

 

위 명령들과 함께 $ free -m 명령을 통해 현재 시스템에서 사용 중인 메모리를 비교해보면서 점검할 수 있습니다.

리눅스 버전과 각 환경에 따라 프로세스 이름은 다를 수 있습니다. httpd, apache, apache2 등

[Apache] www 없이 접속하는 경우 www 붙이는 방법

예전에 DNS 설정을 통해 www를 붙이는 방법을 소개해드렸습니다. 하지만 이 방법은 네임서버를 직접 가지고 있는 경우에만 해당하기 때문에 매우 제한적입니다.

이번에 소개되는 방법은 .htaccess 파일을 이용해 접속 URL을 컨트롤 하는 내용입니다. 물론 .htaccess를 이용한 설정 방법은 다양하고 광범위하지만 여기서는 예를들어 freezner.com으로 접속했을때 www.freezner.com으로 이동되도록 하는 설정만 소개해드립니다.

freezner.com이나 www.freezner.com이나 결국 같은 사이트이기 때문에 별로 신경쓰지 않아도 되겠다 생각들겠지만.. 캐시서버나 워드프레스의 경우 캐시 플러그인을 사용하는 경우 이야기가 조금 달라집니다.

캐시의 경우 freezner.com과 www.freezner.com을 각각 캐시로 생성하여 하나의 사이트인데도 불구하고 2개의 사이트 캐시를 생성하게 됩니다. 이런 경우 캐시파일의 크기가 불필요하게 늘어날 뿐만 아니라  freezner.com과 www.freezner.com의 페이지 내용이 서로 다르게 보일 수 있습니다. 각각의 캐시 파일을 가지고 있기 때문이죠.

둘 중하나로만 접속이 되도록 설정을 해야 이 문제가 해결될 것입니다. 해결 방법은 간단합니다.

아래와 같이 Rewrite 설정을 추가해주시면 됩니다. 단, mod_rewrite 가 설치되어있어야 합니다. mod_rewirte는 /etc/httpd/conf/httpd.conf 에서 확인 가능합니다. (Apache를 rpm으로 설치한 경우)

여기서 조금 더 활용하면 더 다양하게 사용할 수 있습니다.

RewriteRule을 보시면 RewriteRule <대상URL> <이동할 URL>/$1 [L]

형태가 됩니다. 즉, 아래와 같이 설정도 가능합니다.

http://www.freezner.com/mypage로 접근시 http://www.freezner.com/mypage_test로 이동되도록 설정한 것입니다.

 

참고로 .htaccess 파일을 수정 후에는 아파치를 재시작 하셔야 적용됩니다.

저사양 서버 성능 최적화 하기 (#1 Apache)

이 블로그는 워드프레스로 제작되었습니다. 워드프레스는 많은 기능을 가지고 있지만 속도가 느리다는 단점을 가지고 있지요. 게다가 기반이 되고 있는 언어도 PHP이기 때문에.. PHP 역시 빠른 언어는 아닙니다. 설상가상으로 아주 저렴한 VPS 서버위에서 돌고 있습니다.

여기서 아주 저렴한 VPS (가상화서버)라 함은.. cpu는 1개의 단일 코어, 512메가의 메모리, 30기가의 HDD 입니다. 웹서버는 메모리 상에 많은 데이터가 올라와있는 상태로 유지가 되어야하기 때문에 메모리는 무엇보다 중요한 요소입니다. 그런데 512메가 입니다.

요즘 저렴한 개인 PC도 메모리는 최소 4기가 이상이죠. 흐흐.. 아무튼 돈이 없으니 저사양 스펙으로 돌리고 있습니다. 그 동안 운영을 해오면서 워드프레스의 캐싱 플로그인인 WP-Super Cache도 설치해보고 간단하게 아파치 설정도 변경해보곤 했습니다. 하지만 어느 정도 페이지뷰가 올라가니 이 마저도 무리가 가더군요.

서버를 전체적으로 스펙에 맞게 튜닝할때가 온것같았습니다. 그렇다면 어디를 손봐야 할까요. 우선 순위를 따지자면 아래와 같습니다

– 아파치 (httpd.conf)

– PHP (php.ini)

– MySQL (my.cnf)

– 서버 캐싱 모듈 (apc.ini)

내용이 좀 깁니다. 때문에 이 포스팅에서는 아파치(httpd.conf) 설정 방법을 소개해드리겠습니다.

 

1. MPM (Prefork or Worker)

앞서 말씀드렸다시피 1 cpu, 512 메모리 스펙에서의 설정입니다. 상황에 맞게 조절하시면 좀더 좋은 퍼포먼스를 얻으실 수 있습니다.

우선 아파치 구동방식을 설정합니다. 기본값은 위 설정보다 높으며 prefork 설정 부분만 존재할겁니다. prefork 방식과 worker 방식은 간단히 말해 하나의 프로세스에 단일 쓰레드를 생성하느냐 여러개의 쓰레드를 생성하느냐의 차이입니다. 물론 하나의 프로세스에 하나의 쓰레드를 생성하는 prefork가 동접자 수 대비 서버의 부담이 더 갑니다. 대신 안정적이죠. 때문에 리소스 부담이 덜한 worker 방식을 선택할 수 밖에 없습니다. 위처럼 둘다 정의를 하더라도 나중에 정의된 방식으로 실행되게 됩니다.

 

2. LoadModule

아파치를 패키지로 설치하셨다면 불필요한 모듈을 불러오게 되어있습니다. 사용하지 않는 모듈을 불러와 메모리에 불필요한 부담을 주게 됩니다. 귀찮더라도 사용하지 않는 모듈을 지워주거나 주석처리를 해주는 것이 바람직합니다.

저는 워드프레스 + PHP 프레임워크인 CodeIgniter + nForge 가 함께 실행되고 있습니다. 이 들에게 종속적인 모듈을 정리해서 정의했습니다. 참고하시면 도움이 되실 겁니다.

 

3. 아파치 로그

아파치 로그는 패키지 설치 기준으로 /etc/httpd/logs 에 저장됩니다. 기본값은 warm(경고) 레벨부터 모두 저장됩니다. 시간이 지나면 이 로그 파일의 용량이 만만치 않게 됩니다. 주기적으로 관리해줘야하죠. 로그를 필요한 정보만 저장하도록 설정합니다.

 

일단 아파치는 여기서 어느정도 마무리 되었습니다.

변경한 설정내용은 service httpd restart로 하실 수 있습니다. 재시작 실패시 /etc/httpd/logs/error_log를 확인해보시기 바랍니다.

 

저사양 VPS 서버 성능 최적화 하기

(#2 MySQL/PHP)