티스토리 뷰
Apache 웹 서버는 MPM(Multi -Processing Module)이란 것을 사용한다.
다수의 프로세싱 모듈 기반의 서비스를 제공한다는 의미다.
이 설정을 바꾸려면 httpd.conf 파일을 수정하면 된다.
파일의 내용 중 ThreadsPerChild 라는 옵션이 있다.
이 옵션은 웹 서버가 사용하는 스레드의 개수를 지정하는 옵션이다.
이 옵션의 값이 지정되어 있다면, 이 값을 늘려줘야 한다.
그러면 서버가 더 많은 사용자의 요청을 처리할 수 있다.
MaxRequestsPerChild 옵션은 최대 요청 개수를 지정한다.
값이 0이라면 요청 개수에 제한을 두지 않겠다는 뜻이다.
그 외의 숫자를 지정한다면, 지정된 숫자 이상의 요청처리는 하지 않게 된다.
가급적이면 기본값인 0으로 두는 것이 좋다고 한다.
스레드와 관련된 내용을 세밀하게 지정하려면 httpd.conf 파일에서 주석으로 처리된
"Include conf/extra/httpd-mpm.conf" 구문을 주석 해제하고,
이 파일의 "<IfModule mpm_worker_module>"에 속해있는 값들을 변경함으로써
스레드 방식의 설정이 가능하다.
설정 |
설명 |
StartsServers |
서버를 띄울 때 프로세스의 개수를 지정 |
MaxClients |
최대 처리가능한 클라이언트의 수를 지정 |
MinSpareThreads |
최소 여유 스레드 수를 지정 |
MaxSpareThreads |
최대 여유 스레드 수를 지정 |
ThreadsPerChild |
프로세스당 스레드 수를 지정 |
MaxRequestPerChild |
httpd.conf와 같은 설정 |
httpd-mpm.conf 파일의 옵션
최대 사용가능한 클라이언트 개수는 StartsServers의 값과 MaxSpareThreads를 곱해 구한다.
이 개수보다 요청의 개수가 더 많아지면 서버 리소스에 여유가 있어도 처리를 안하게 된다.
그러한 상황에서 GC가 수행되고 GC의 수행시간이 오래 걸리게 된다면 backlog에 설정된 값의 개수에
초과하는 요청들은 503에러를 리턴받게 된다.
이런 경우의 해결책으로는
1. 금전적인 여유가 있을 때에는 서버를 늘린다.
2. 서비스가 응답이 안돼는 원인을 찾고 서비스를 튜닝한다. 단 시간이 어느정도 걸릴지 예측이 불가능하다.
3. GC가 오래 소요되는 경우에는 GC튜닝을 한다.
4. 각종 옵션값을 튜닝한다. 이 경우에는 잘못 설정할 경우 더 큰 문제를 야기할 수도 있다.
만약 서버의 성능이 좋고, 더 많은 요청을 처리해야 할 필요가 있다면 위에 나온 설정파일들을
수정하여 서버가 최대한의 자원을 이용하도록 해야한다.
'Server' 카테고리의 다른 글
[WAS 성능개선] DBConnectionPool과 Thread (0) | 2015.04.20 |
---|---|
[Web Server 성능개선] 웹 서버와 WAS (0) | 2015.04.20 |
[성능] XML과 JSON, 직렬화 (0) | 2015.04.17 |
- Total
- Today
- Yesterday
- Clojure
- Java8
- 클로저
- 성능
- 자바
- javascript
- 람다
- Swift 2.0
- react
- 자바 성능
- json
- 리액트
- Docker
- opensource
- 컴퓨터 시간
- rambda
- 코어
- RAMDA
- 자료구조
- 알람
- 시간
- 날짜
- 메모리
- Java
- gitlab
- Jackson
- Stream
- 프로세서
- 퍼포먼스
- 성능개선
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |