아파치 웹 서버의 설정
- MPM 사용 (Multi-Processing-Module)
- 여러 개의 프로세싱 모듈 기반의 서비스를 제공
httpd.conf
- ThreadsPerChild 250
- 웹 서버가 사용하는 스레드의 개수 지정
- 만약 이 수치가 적게 지정되어 있다면, 이 수치를 늘려 주어야 함
- 그래야 서버가 더 많은 사용자의 요청을 처리할 수 있음
- MaxRequestsPerChild 0
- 최대 요청 개수를 지정
- 0이면 그 수에 제한을 두지 않겠다
- 가급적 기본값인 0으로 할 것
- "Include conf/extr/httpd-mpm.conf" 주석 해제
- 세밀한 스레드 설정 정보를 지정할 수 있게 됌
httpd-mpm.conf
- <IfModule mpm_worker_module>
- StartServers 2
- 서버를 띄울 때 프로세스의 개수를 지정한다
- MaxClients 150
- 최대 처리 가능한 클라이언트의 수를 지정한다
- MinSpareThreads 25
- 최소 여유 스레드 수를 지정
- MaxSpareThreads 75
- 최대 여유 스레드 수를 지정
- ThreadsPerChild 25
- 프로세스당 스레드 수를 지정
- MaxRequestPerChild 0
- <IfModule>
서버 튜닝
- 서버를 늘린다
- 가장 편한 방법
- 금전적인 여유가 있을 때
- 서비스를 튜닝한다
- 서비스가 응답이 안 되는 원인을 찾고 튜닝
- 얼마나 걸릴지 모른다는 단점
- GC 튜닝을 한다
- 각종 옵션 값을 튜닝한다
- 가장 간단한 방법일 수 있음
- 하지만 잘못 설정할 경우 오히려 더 큰 문제가 야기될 수 있음
- 예전에 윈도우 서버 설정 잘 못 건들다가 서버 먹통된적 있음....
웹 서버의 Keep Alive
- 웹 서버와 웹 브라우저가 연결이 되었을 때 KeepAlive 기능이 켜져 있지 않으면
- 매번 HTTP 연결을 맺었다 끊었다 하는 작업을 반복한다
- 초기화면에서 엄청나게 많은 이미지와 CSS, 자바 스크립트 등의 파일을 받아야 하는 사이트에서 KeepAlive 설정이 되어 있지 않으면, 초기 화면을 띄우는데 몇 분씩 소요될지도 모름
- KeppAlive 설정시 KeepAliveTimeout 15 와 같은 설정도 해줘야 한다.
CDN(Content Delivery Network)
- 사용자의 접근이 많은 사이트에서는 이미지와 CSS와 같이 정적인 파일들을 일반적인 웹 서버에서 처리하지 않고
- CDN 서비스를 사용한다
- 즉, 별도의 URL에서 해당 컨텐츠들을 내려받도록 설정하고
- 동적인 컨텐츠들은 WAS에서 처리하도록 해 놓으면
- Web_WAS 서버의 부담도 줄어들게 된다.
DB Connection Pool 및 스레드 개수 설정
- DB Connection Pool은 보통 40~50개로 지정 : 출구
- 스레드의 개수는 이보다 10개 정도 더 지정 : 입구
- 스레드 개수가 DB Connection Pool의 개수보다 적으면 적은 수 만큼의 연결은 필요가 없기 때문
WAS 인스턴스 개수 설정
- 하나의 장비에 WAS의 인스턴스 개수를 몇 개로 해야 된다는 규칙은 어느 문서에도 존재하지 않음
- 절댓값은 없다는 소리
- 하지만 무한정 인스턴스를 늘리는 것이 답이 될 수는 없음
- Ex)
- CPU core 개수가 모두 36개인 장비
- 인스턴스 1개일 때 500TPS, 2개 700 TPS, 3개 720 TPS
- 이런 상황이라면 2~3개 정도만 띄울 거임
- 인스턴스르 더 늘린다고 해서 TPS가 크게 증가하지 않는 상황에서는 오히려 유지보수성만 떨어짐
- 만약 WAS 장비에 4GB의 여유 메모리가 있다고 하더라도
- 512MB~2GB 사이에서 메모리를 지정하는 것이 좋음
- Full GC가 발생할 때마다 많은 시간이 소요될 확률이 커지기 때문
'개발서적 > 자바 성능 튜닝 이야기' 카테고리의 다른 글
[자성튜이] GC 발생 시점 (0) | 2024.09.16 |
---|---|
[자성튜이] JVM은 도대체 어떻게 구동될까 (0) | 2024.09.16 |
[자성튜이] JSP와 서블릿, Spring (0) | 2024.09.16 |
[자성튜이] 로그 작성 (0) | 2024.09.16 |
[자성튜이] IO 이야이야기 (0) | 2024.08.25 |