2015. 6. 19. 14:32

소개

아파치를 중단하고 재시작하려면 실행하고 있는 httpd 프로세스에 시그널을 보내야 한다. 시그널을 보내는 방법은 두가지다. 하나는 유닉스 kill 명령어를 사용하여 프로세스에 직접 시그널을 보내는 방법이다. 시스템에 많은 httpd가 실행되지만, PidFile에 pid가 기록된 부모외에 다른 프로세스에 시그널(signal)을 보내면 안된다. 즉, 부모이외에 다른 프로세스에 시그널을 보낼 필요가 없다는 말이다. 부모에게 보낼 수 있는 시그널은 세가지로, 이제 설명할 TERM, HUP, USR1이다.

다음과 같이 부모에게 시그널을 보낸다:

kill -TERM `cat /usr/local/apache2/logs/httpd.pid`

httpd 프로세스에게 시그널을 보내는 다른 방법은 명령행 옵션 -k를 사용하는 것이다. 아래서 설명할 stop, restart, gracefulhttpd 실행파일의 아규먼트들이다. 그러나 이 아규먼트들로 httpd를 실행하는, apachectl 스크립트를 사용하길 권한다.

httpd에 시그널을 보낸후, 다음 명령어로 진행상황을 알 수 있다:

tail -f /usr/local/apache2/logs/error_log

위 예를 당신의 ServerRootPidFile 설정에 알맞게 수정하라.

top

 

당장 중단

시그널: TERM
apachectl -k stop

TERM이나 stop 시그널을 부모에게 보내면 즉시 모든 자식을 죽인다. 자식을 완전히 죽이는데는 몇 초가 걸릴 수 있다. 그런후 부모가 종료한다. 처리중인 요청은 중단되고, 더 이상 요청을 받지않는다.

top

 

점잖은 재시작

시그널: USR1
apachectl -k graceful

USR1이나 graceful 시그널을 부모에게 보내면 부모 프로세스는 자식들에게 현재 요청을 처리한후 종료하라고 (혹은 현재 아무것도 처리하지 않다면 즉시 종료하라고) 조언한다. 부모는 설정파일을 다시읽고 로그파일도 다시 연다. 자식이 죽을때마다 부모는 죽은 자식대신 새로운 설정 세대에 기초한 자식을 실행하여 즉시 요청을 처리하게 한다.

점잖은 재시작(graceful restart)으로 USR1을 사용할 수 없는 플래폼에서는 대신 (WINCH와 같은) 다른 시그널을 사용할 수 있다. apachectl graceful은 플래폼에 알맞은 시그널을 보낸다.

점잖은 재시작은 항상 MPM의 프로세스 조절 지시어 설정을 고려하여, 재시작동안 클라이언트를 서비스하는 프로세스나 쓰레드가 적당한 수를 유지하도록 설계되었다. 게다가 StartServers는, 일초 후 최소한 StartServers만큼 새로운 자식이 안만들어지면 자식이 StartServers 개가 되도록 새로 만든다. 즉, 프로그램은 서버의 현재 부하에 알맞은 자식의 개수를 유지하며, StartServers 파라미터로 지정한 당신의 기대를 존중한다.

mod_status 사용자는 USR1을 받을때 서버 통계가 0이 되지 않음을 봤을 것이다. 서버는 새로운 요청을 (운영체제는 이들을 큐에 담아서 어떤 경우에도 잃어버리지 않는다) 처리하지 못하는 시간을 최소화하고 당신의 튜닝 파라미터를 존중하도록 만들어졌다. 이를 위해 세대간 모든 자식을 기록하는 scoreboard를 유지한다.

status 모듈은 또한 점잖은 재시작 전에 시작하여 아직도 요청을 처리하고 있는 자식을 G로 알려준다.

현재로는 USR1을 사용하는 로그순환 스크립트가 재시작전에 모든 자식이 로그작성을 마쳤는지 알 수 있는 방법이 없다. 우리는 USR1 시그널을 보내고 적당한 시간이 지난후 이전 로그를 다루도록 제안한다. 예를 들어 낮은 대역폭 사용자의 경우 접속 대부분이 마치는데 10분이 안걸린다면, 이전 로그를 다루기전에 15분 기다린다.

설정파일에 오류가 있다면 재시작시 부모는 재시작하지 않고 오류를 내며 종료한다. 또, 점잖은 재시작의 경우 종료할때 자식이 실행되도록 놔둔다. (자식들은 자신의 마지막 요청을 처리하고 "점잖게 종료한다".) 이는 서버를 재시작할때 문제가 된다. 서버는 자신이 기다릴 포트에 연결하지 못한다. 재시작전에 -t 명령행 옵션(httpd 참고)으로 설정파일 문법을 검사할 수 있다. 그러나 이런 검사도 서버가 올바로 재시작할지를 보장하지 못한다. 설정파일의 문법이 아닌 의미를 검사하려면 root가 아닌 사용자로 httpd를 시작해볼 수 있다. root가 아니기때문에 (아니면 현재 그 포트를 사용하는 httpd가 실행되기때문에) 오류가 없다면 소켓과 로그파일을 열려고 시도하는 과정에서 실패할 것이다. 다른 이유때문에 실패한다면 아마도 설정파일에 오류가 있을 것이다. 점잖은 재시작을 하기전에 오류를 고쳐야한다.
top

 

당장 재시작

시그널: HUP
apachectl -k restart

HUP이나 restart 시그널을 부모에게 보내면 TERM과 같이 모든 자식을 죽이지만 부모는 종료하지 않는다. 부모는 설정파일을 다시읽고 로그파일을 다시 연다. 그리고 새로운 자식들을 만들고 서비스를 계속한다.

mod_status 사용자는 HUP를 보내면 서버 통계가 0이 됨을 알 수 있다.

설정파일에 오류가 있다면 재시작을 해도 부모는 재시작하지 않고 오류를 내며 종료할 것이다. 이를 피하는 방법은 위를 참고하라

'Apache' 카테고리의 다른 글

SSL 인증서 비밀번호 제거하는 방법  (0) 2015.06.03
apache 로그 관리  (0) 2014.10.02
httpd-mpm.conf  (0) 2014.08.27
Apache 버전 및 MPM 확인 방법, Graceful  (0) 2014.08.26
Apache Sticky Session  (0) 2014.07.28
Posted by 아도니우스
2015. 6. 3. 13:59

SSL 인증서 키에 비밀번호가 걸려있을때 비밀번호를 제거하는 방법.

 

~]# openssl rsa -in ssl.key -out ssl_nopass.key

     Enter pass phrase for ssl.key: 비밀번호 입력


SSL 인증서 생성시 인증키 값을 넣을경우
아파치 구동시 키 비밀번호를 입력하지 않으면 구동되지 않는다.

서버를 관리하는 입장에서는 비밀번호를 입력하지 않고 자동으로 웹서버를
구동하여야할때가 있다.
 
인증서 생성시 이미 넣어버린 키는 아래와 같이 하면 간단하게 없앨 수 있다.
단, 당연한 이야기지만 기존 비밀번호는 알고있어야한다.-.-;

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

다시 아파치를 stop후 start해본다.

cf) http://blog.bbom.org/45

cf) http://blog.naver.com/PostList.nhn?from=postList&blogId=xers1&categoryNo=56&currentPage=10


'Apache' 카테고리의 다른 글

Apache 중단과 재시작  (0) 2015.06.19
apache 로그 관리  (0) 2014.10.02
httpd-mpm.conf  (0) 2014.08.27
Apache 버전 및 MPM 확인 방법, Graceful  (0) 2014.08.26
Apache Sticky Session  (0) 2014.07.28
Posted by 아도니우스
2014. 10. 2. 11:36

아파치 로그 관리

 

apache log 관리는 rotatelogs 또는 logrotate를 이용해서 설정할 수 있다.

rotatelogs 를 이용한 방법

아파치 설정 파일(httpd.conf)을 확인한다.

]# vi /usr/local/apache2/conf/httpd.conf

LogFormat 부분의 마지막에 있는 별명(common, combined, combinedio) 중에서 사용한다.

- combinedio는 추가 작업이 필요한다. 

 

 

아파치의 가상 호스트 파일을 설정한다.

]# vi /usr/local/apache2/conf/extra/httpd-vhost.conf

ErrorLog "|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/okkks-error-%y%m%d_log 86400 +540"
CustomLog "|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/okkks-access-%y%m%d_log 86400 +540" combined

 

 항목

설명 

 %A

 (지역화된) 완전한 요일 이름

 %a

 (지역화된) 3-문자 요일 이름

 %B

 (지역화된) 완전한 달 이름

 %b

 (지역화된) 3-문자 달 이름

 %c

 (지역화된) 날짜와 시간

 %d

 2-자리 일

 %H

 2-자리 시간 (24시간 시계)

 %l

 2-자리 시간 (12시간 시계)

 %j

 3-자리 날짜수

%y%m%d : 년월일(예>140101)

- $Y : 년(예> 2014)

86400 : 초 단위이며 24시간 주기로 새 파일을 생성한다.(GMT 기준시)

+540 : 한국 시간을 사용하기 위해 GMT 기준시에 더해준다.

combined : httpd.conf에 설정된 LogFormat

 

아파치를 다시 실행한다.

]# service httpd restart

웹 사이트에 접속한 후 log 파일을 확인해 보면 파일이 생성된 것을 확인할 수 있다.

 

]# ll /usr/local/apache2/logs/

'Apache' 카테고리의 다른 글

Apache 중단과 재시작  (0) 2015.06.19
SSL 인증서 비밀번호 제거하는 방법  (0) 2015.06.03
httpd-mpm.conf  (0) 2014.08.27
Apache 버전 및 MPM 확인 방법, Graceful  (0) 2014.08.26
Apache Sticky Session  (0) 2014.07.28
Posted by 아도니우스
2014. 8. 27. 18:21

#

# Server-Pool Management (MPM specific)

#

# prefor MPM

# StartServers : number of server processes to start

# MinSpareServers : minimum number of server process which are kept spare

# MaxSpareServers : maximum number of server process which are kept spare

# MaxClients : maximum number of server processes allowed to start

# MaxRequestPerChild : maximum number of requests a server process servers

<IfModule mpm_worker_module>

StartServers

MaxClients

MinSpareThreads

MaxSpareThreads

MaxRequestPerChild

</IfModule>

'Apache' 카테고리의 다른 글

Apache 중단과 재시작  (0) 2015.06.19
SSL 인증서 비밀번호 제거하는 방법  (0) 2015.06.03
apache 로그 관리  (0) 2014.10.02
Apache 버전 및 MPM 확인 방법, Graceful  (0) 2014.08.26
Apache Sticky Session  (0) 2014.07.28
Posted by 아도니우스
2014. 8. 26. 11:27

1. Apache 버전 확인 방법

root@test1 [/apache/testsvc/bin]# ./httpd -v

Server version :

Server built:

 

2. Apache 설정 가상호스트 확인

 

3. Apache 사용가능 모듈 확인

root@test1 [/apache/testsvc/bin]# ./httpd -l

 

4. Apache help 옵션 확인

root@test1 [/apache/testsvc/bin]# ./httpd -h

 

5. Apache MPM 확인 방법

   1) MPM이란? Multi-Processing Module

       apache가 받아들인 요청을 처리하기 위해 'child process'에게 분배하는 방식

root@test1 [/apache/testsvc/bin]# ./httpd -l

Complied in modules:

core.c

worker.c

http_core.c

mod_so.c

   2) Prefork

       1. 실행중인 프로세스 복제하여 실행 (메모리 영역까지 같이 복제)

       2. 프로세스 소비하는 메모리가 많음

       3. 응답프로세스를 미리 띄워놓고 클라이언트 요청 시 자식 프로세스가 반응하게 되는 방식.

       4. 일반적으로 singled CPU 또는 Dual CPU 에서 성능이 좋음

   3) Worker

       1. 자식 프로세스들이 각각 여러 쓰레드를 사용하여, 각 쓰레드는 한번에 한 연결을 담당

       2. Worker 방식은 일반적으로 멀티 CPU 시스템에서 성능

       3. 기본 사용 메모리는 prefork 보다 낮으며 쓰레드 간에 메모리를 서로 공유

 

6. Apache Stop (Session 종료 후)

  ./apachectl -k graceful stop

  1) 아파치의 재시작은 restart/graceful 로 구분할 수 있음

     - restart (kill -HUP)

       : httpd 모든 프로세스를 찾아 종료시키고 재시작

     - graceful (kill -USER)

       : 현재 접속된 커넥션은 그대로 유지하고 그외 httpd 모든 프로세를 찾아 종료시키고 재시작

     - restart 보다는 graceful 사용이 서비스중인 서버에서는 더 유용함.

  2) 당장 중단 : apachectl -k stop

  3) 당장 재시작 : apachectl -k restart

  3) httpd 에 시그널을 보낸 후, 다음 명령어로 진행사항을 알 수 있음

     - tail -f /applog/apache/aiaSvr/errorlog/error_log

  4) 점잖은 재시작

     - apachectl -k graceful

 USR1이나 graceful 시그널을 부모에게 보내면 부모 프로세스는 자식들에게 현재 요청을 처리한후 종료하라고 (혹은 현재 아무것도 처리하지 않다면 즉시 종료하라고) 조언한다. 부모는 설정파일을 다시읽고 로그파일도 다시 연다. 자식이 죽을때마다 부모는 죽은 자식대신 새로운 설정 세대에 기초한 자식을 실행하여 즉시 요청을 처리하게 한다.

점잖은 재시작(graceful restart)으로 USR1을 사용할 수 없는 플래폼에서는 대신 (WINCH와 같은) 다른 시그널을 사용할 수 있다. apachectl graceful은 플래폼에 알맞은 시그널을 보낸다.

점잖은 재시작은 항상 MPM의 프로세스 조절 지시어 설정을 고려하여, 재시작동안 클라이언트를 서비스하는 프로세스나 쓰레드가 적당한 수를 유지하도록 설계되었다. 게다가 StartServers는, 일초 후 최소한 StartServers만큼 새로운 자식이 안만들어지면 자식이 StartServers 개가 되도록 새로 만든다. 즉, 프로그램은 서버의 현재 부하에 알맞은 자식의 개수를 유지하며, StartServers 파라미터로 지정한 당신의 기대를 존중한다.

mod_status 사용자는 USR1을 받을때 서버 통계가 0이 되지 않음을 봤을 것이다. 서버는 새로운 요청을 (운영체제는 이들을 큐에 담아서 어떤 경우에도 잃어버리지 않는다) 처리하지 못하는 시간을 최소화하고 당신의 튜닝 파라미터를 존중하도록 만들어졌다. 이를 위해 세대간 모든 자식을 기록하는 scoreboard를 유지한다.

status 모듈은 또한 점잖은 재시작 전에 시작하여 아직도 요청을 처리하고 있는 자식을 G로 알려준다.

현재로는 USR1을 사용하는 로그순환 스크립트가 재시작전에 모든 자식이 로그작성을 마쳤는지 알 수 있는 방법이 없다. 우리는 USR1 시그널을 보내고 적당한 시간이 지난후 이전 로그를 다루도록 제안한다. 예를 들어 낮은 대역폭 사용자의 경우 접속 대부분이 마치는데 10분이 안걸린다면, 이전 로그를 다루기전에 15분 기다린다.

설정파일에 오류가 있다면 재시작시 부모는 재시작하지 않고 오류를 내며 종료한다. 또, 점잖은 재시작의 경우 종료할때 자식이 실행되도록 놔둔다. (자식들은 자신의 마지막 요청을 처리하고 "점잖게 종료한다".) 이는 서버를 재시작할때 문제가 된다. 서버는 자신이 기다릴 포트에 연결하지 못한다. 재시작전에 -t 명령행 옵션(httpd 참고)으로 설정파일 문법을 검사할 수 있다. 그러나 이런 검사도 서버가 올바로 재시작할지를 보장하지 못한다. 설정파일의 문법이 아닌 의미를 검사하려면 root가 아닌 사용자로 httpd를 시작해볼 수 있다. root가 아니기때문에 (아니면 현재 그 포트를 사용하는 httpd가 실행되기때문에) 오류가 없다면 소켓과 로그파일을 열려고 시도하는 과정에서 실패할 것이다. 다른 이유때문에 실패한다면 아마도 설정파일에 오류가 있을 것이다. 점잖은 재시작을 하기전에 오류를 고쳐야한다.

 

'Apache' 카테고리의 다른 글

Apache 중단과 재시작  (0) 2015.06.19
SSL 인증서 비밀번호 제거하는 방법  (0) 2015.06.03
apache 로그 관리  (0) 2014.10.02
httpd-mpm.conf  (0) 2014.08.27
Apache Sticky Session  (0) 2014.07.28
Posted by 아도니우스
2014. 7. 28. 10:57

1. Apache-WebLogic간의 연결

- AJP를 사용하지 않고 직접 WebLogic module을 httpd.conf 에 설정한다 (참조)

- 환경설정 예

LoadModule weblogic_module modules/mod_wl_22.so


<Location /services>
SetHandler weblogic-handler
</Location>

<IfModule mod_weblogic.c>
WebLogicCluster 127.0.0.1:8881,127.0.0.1:8882
MatchExpression *.jsp
Idempotent OFF
DynamicServerList OFF
KeepAliveEnabled OFF
ConnectTimeoutSecs 16
ConnectRetrySecs 2
FileCaching OFF
</IfModule>

 


2. Apache Timeout 설정

- ajp 연결이 아니므로 workers.properties의 socket_timeout 또는 reply_timeout과 관련이 없다

- apache/httpd/conf/extra/httpd-default.conf의 Timeout 과 관련 (참조)

Timeout 300
클라이언트의 요청에 의해 서버와 연결이 되었을 때 클라이언트와 서버간에 아무런 메시지가 발생하지 않았을 때 오류로 처리될 시간을 초단위로 설정. 초기값은 1200초(20분)이며 보통은 300초(5분)로 지정한다. 네트워크의 속도가 나쁠수록 수치값은 높게 설정하는 것이 좋다.



3. WebLogic Timeout 설정

- httpd.conf에 timeout 관련 설정을 한다

- WebLogic안에서 request<->response에 대한 직접적인 처리 - WLIOTimeoutSecs 설정 (참조1, 참조2)

WLIOTimeoutSecs 300

- default : 300 초

- 웹로직으로 request를 보내고 response를 받기 위해서 대기하는 시간

- post 방식으로 대량의 데이터를 WebLogic으로 보낼 때 timeout이 발생하면 plug-ins에 "POST_TIMEOUT"에러가 발생한다


- WebLogic을 클러스터링 환경으로 구성하였을 경우는 idempotent 환경에 대하여 고려한다. (참조)

Idempotent OFF

- WebLogic서버로 부터 request전송시 에러가 발생하거나, 서버로부터 결과를 기다리는 중에
위에 정의된 WLIOTimeoutSecs 시간 초과되어서 에러 발생시 요청을 다시 보낼 것인가를 지정.
- 서버와 연결은 되었는데 그 이후에 에러가 발생 하였을 경우 해당 옵션이 ON이면 다시 연결을 시도하고
요청을 보내게 되므로 중복 요청의 가능성이 있다. OFF권장.

'Apache' 카테고리의 다른 글

Apache 중단과 재시작  (0) 2015.06.19
SSL 인증서 비밀번호 제거하는 방법  (0) 2015.06.03
apache 로그 관리  (0) 2014.10.02
httpd-mpm.conf  (0) 2014.08.27
Apache 버전 및 MPM 확인 방법, Graceful  (0) 2014.08.26
Posted by 아도니우스