Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
4.2 아파치 튜닝
웹 서버가 병목현상?- 웹 서버의 설정과는 관계없는 경우가 대부분- 4.1에서 살펴본 ps, sar, vmstat 활용- 그렇지 않으면 다음단계로
- 아파치는 내부의 각종 기능이 모듈화- 병렬처리를 수행하는 부분도 모듈화병렬처리의 구현모델- 멀티프로세스 모델 - prefork- 멀티쓰레드 모델 - worker- 이벤트 구동 모델 - event(epoll, sele...
멀티프로세스 모델
prefork vs worker
multi-process vs multi-thread
multi-process <<<<<<< multi-thread??
멀티프로세스의 문제점?- 메모리 공간 낭비?부모와 자식 프로세스에서 갱신 되지 않은 메모리 공간은 공유된다(copy on write)- context switching 비용?대량의 context switching이 아니...
Copy on write란..?
prework --> worker- 하나의 클라이언트에 대한 응답시간이 고속화되는것은 아님- 메모리가 충분하다면 동시에 처리할 수 있는접속수는 변하지 않음- 대량의 컨텍스트 스위치가 없다면 효과는 크지않다; 핵심은 동시...
httpd.conf- 불특정 다수의 클라이언트 요청을 받음그래서 언제 어느 정도의 트래픽이 발생할지예상 불가- 동시에 접속할 수 있는 클라이언트 개수의 상한값 지정(MaxClients)-없다면, OS가 hang-up /...
httpd.conf<IfModule mpm_prefork_module>StartServers 5MinSpareServers 5MaxSpareServers 10MaxClients 150MaxRequestsPerChild ...
ServerLimit는 어느정도로..?- 서버의 물리 메모리 용량- 프로세스 하나당 평균 메모리 소비량ex) 메모리량 8Ghttpd프로세스당 메모리 사용률 100MOS가 사용하는 메모리 512M
ServerLimit는 어느정도로..?- 서버의 물리 메모리 용량- 프로세스 하나당 평균 메모리 소비량ex) 메모리량 8Ghttpd프로세스당 메모리 사용률 100MOS가 사용하는 메모리 512M(8G - 512M) / ...
ServerLimit는 어느정도로..?ex) 메모리량 8Ghttpd프로세스당 메모리 사용률 100M메모리 공유 비율 : 70%OS가 사용하는 메모리 512M
ServerLimit는 어느정도로..?ex) 메모리량 8Ghttpd프로세스당 메모리 사용률 100M메모리 공유 비율 : 70%OS가 사용하는 메모리 512M; (8G - 512) / (100M *(100%-70%)) =...
httpd.conf<IfModule mpm_worker_module>StartServers 2MinSpareThreads 25MaxSpareThreads 75ThreadLimit 64ThreadsPerChild 25Ma...
httpd.conf<IfModule mpm_worker_module>StartServers 2MinSpareThreads 25MaxSpareThreads 75ThreadLimit 64ThreadsPerChild 25Ma...
DB과부화로 인한 Maxclient수 도달
Kepp-Alive- 한번의 커넥션을 유지해서 여러 작업 수행- 병목현상이 발생할 가능성 있슴KeepAlive OnMaxKeppAliveRequests 100KeppAliveTimeout 5
아파치 이외의 선택방안lighttpd- SPED(Single Process Event Driven)모델- 적응 메모리로 대량의 접속을 동시병행적으로 처리 가능- 싱글 프로세스라서 계산량이 적어짐- 메모리 소비량도 적음
아파치 이외의 선택방안lighttpd- SPED(Single Process Event Driven)모델- 적응 메모리로 대량의 접속을 동시병행적으로 처리 가능- 싱글 프로세스라서 계산량이 적어짐- 메모리 소비량도 적음
4.3 MySQL 튜닝의 핵심
MySQL 튜닝의 핵심튜닝의 종류- 서버측- 서버 측 이외- 주변 시스템
MySQL 튜닝의 핵심서버측 튜닝- mysql의 메모리관련 파라미터와 디스크 I/O관련된파라미터 튜닝- 디스크 I/O와 관련된 커널 파라미터 조정- 적절한 파일시스템 선택, 마운트 옵션 조정- 파티셔닝
MySQL 튜닝의 핵심서버 측 이외(DB설계 & SQL튜닝)- 테이블 설계적절한 인덱스 생성의도적인 비정규화- SQL최적화인덱스를 제대로 사용하도록테이블 결합 순서, 방법 조정
MySQL 튜닝의 핵심주변 시스템- DB서버 주변의 시스템 튜닝memcached캐시 서버를 운영해, 데이터를 캐싱된데이터를 참조하도록 구축-
메모리 관련 파라미터 튜닝 - 1버퍼의 종류- 글로벌 버퍼- 쓰레드 버퍼; 쓰레드 버퍼에 많은 메모리를 할당하면 커넥션 수 만큼해당 메모리를 할당하기 떄문에, 메모리 부족 야기
메모리 관련 파라미터 튜닝 - 2- 서버가 가진 물리 메모리 이상의 크기를 할당하면,스왑이 발생하기 때문에, 반대로 성능이 하락- MyISAM의 데이터 파일이 OS디스크 캐시에 올라가도록설정하는 것도 한 가지 방법
메모리 관련 파라미터 튜닝 - 21MB < innodb_log_file_size < MAX_innodb_log_file_size <4GB;innodb_log_file_size는 4GB이하로 설정MAX_innodb_log...
Chap4_2
Upcoming SlideShare
Loading in …5
×

Chap4_2

661 views

Published on

how to config apache/mysql for ha(high availability)

Published in: Education
  • Be the first to comment

Chap4_2

  1. 1. 4.2 아파치 튜닝
  2. 2. 웹 서버가 병목현상?- 웹 서버의 설정과는 관계없는 경우가 대부분- 4.1에서 살펴본 ps, sar, vmstat 활용- 그렇지 않으면 다음단계로
  3. 3. - 아파치는 내부의 각종 기능이 모듈화- 병렬처리를 수행하는 부분도 모듈화병렬처리의 구현모델- 멀티프로세스 모델 - prefork- 멀티쓰레드 모델 - worker- 이벤트 구동 모델 - event(epoll, select)아파치의 병렬처리&MPM
  4. 4. 멀티프로세스 모델
  5. 5. prefork vs worker
  6. 6. multi-process vs multi-thread
  7. 7. multi-process <<<<<<< multi-thread??
  8. 8. 멀티프로세스의 문제점?- 메모리 공간 낭비?부모와 자식 프로세스에서 갱신 되지 않은 메모리 공간은 공유된다(copy on write)- context switching 비용?대량의 context switching이 아니면 비용은 크지않다
  9. 9. Copy on write란..?
  10. 10. prework --> worker- 하나의 클라이언트에 대한 응답시간이 고속화되는것은 아님- 메모리가 충분하다면 동시에 처리할 수 있는접속수는 변하지 않음- 대량의 컨텍스트 스위치가 없다면 효과는 크지않다; 핵심은 동시에 생성 할 수 있는 프로세스/스레드 수 설정
  11. 11. httpd.conf- 불특정 다수의 클라이언트 요청을 받음그래서 언제 어느 정도의 트래픽이 발생할지예상 불가- 동시에 접속할 수 있는 클라이언트 개수의 상한값 지정(MaxClients)-없다면, OS가 hang-up / 응답불가능
  12. 12. httpd.conf<IfModule mpm_prefork_module>StartServers 5MinSpareServers 5MaxSpareServers 10MaxClients 150MaxRequestsPerChild 0</IfModule>ServerLimit 150
  13. 13. ServerLimit는 어느정도로..?- 서버의 물리 메모리 용량- 프로세스 하나당 평균 메모리 소비량ex) 메모리량 8Ghttpd프로세스당 메모리 사용률 100MOS가 사용하는 메모리 512M
  14. 14. ServerLimit는 어느정도로..?- 서버의 물리 메모리 용량- 프로세스 하나당 평균 메모리 소비량ex) 메모리량 8Ghttpd프로세스당 메모리 사용률 100MOS가 사용하는 메모리 512M(8G - 512M) / 100M = 75
  15. 15. ServerLimit는 어느정도로..?ex) 메모리량 8Ghttpd프로세스당 메모리 사용률 100M메모리 공유 비율 : 70%OS가 사용하는 메모리 512M
  16. 16. ServerLimit는 어느정도로..?ex) 메모리량 8Ghttpd프로세스당 메모리 사용률 100M메모리 공유 비율 : 70%OS가 사용하는 메모리 512M; (8G - 512) / (100M *(100%-70%)) = 240
  17. 17. httpd.conf<IfModule mpm_worker_module>StartServers 2MinSpareThreads 25MaxSpareThreads 75ThreadLimit 64ThreadsPerChild 25MaxClients 150MaxRequestsPerChild 0</IfModule>ServerLimit >= MaxClients / ThreadPerChild
  18. 18. httpd.conf<IfModule mpm_worker_module>StartServers 2MinSpareThreads 25MaxSpareThreads 75ThreadLimit 64ThreadsPerChild 25MaxClients 150MaxRequestsPerChild 0</IfModule>ServerLimit >= MaxClients / ThreadPerChild; 150 / 25 = 6
  19. 19. DB과부화로 인한 Maxclient수 도달
  20. 20. Kepp-Alive- 한번의 커넥션을 유지해서 여러 작업 수행- 병목현상이 발생할 가능성 있슴KeepAlive OnMaxKeppAliveRequests 100KeppAliveTimeout 5
  21. 21. 아파치 이외의 선택방안lighttpd- SPED(Single Process Event Driven)모델- 적응 메모리로 대량의 접속을 동시병행적으로 처리 가능- 싱글 프로세스라서 계산량이 적어짐- 메모리 소비량도 적음
  22. 22. 아파치 이외의 선택방안lighttpd- SPED(Single Process Event Driven)모델- 적응 메모리로 대량의 접속을 동시병행적으로 처리 가능- 싱글 프로세스라서 계산량이 적어짐- 메모리 소비량도 적음
  23. 23. 4.3 MySQL 튜닝의 핵심
  24. 24. MySQL 튜닝의 핵심튜닝의 종류- 서버측- 서버 측 이외- 주변 시스템
  25. 25. MySQL 튜닝의 핵심서버측 튜닝- mysql의 메모리관련 파라미터와 디스크 I/O관련된파라미터 튜닝- 디스크 I/O와 관련된 커널 파라미터 조정- 적절한 파일시스템 선택, 마운트 옵션 조정- 파티셔닝
  26. 26. MySQL 튜닝의 핵심서버 측 이외(DB설계 & SQL튜닝)- 테이블 설계적절한 인덱스 생성의도적인 비정규화- SQL최적화인덱스를 제대로 사용하도록테이블 결합 순서, 방법 조정
  27. 27. MySQL 튜닝의 핵심주변 시스템- DB서버 주변의 시스템 튜닝memcached캐시 서버를 운영해, 데이터를 캐싱된데이터를 참조하도록 구축-
  28. 28. 메모리 관련 파라미터 튜닝 - 1버퍼의 종류- 글로벌 버퍼- 쓰레드 버퍼; 쓰레드 버퍼에 많은 메모리를 할당하면 커넥션 수 만큼해당 메모리를 할당하기 떄문에, 메모리 부족 야기
  29. 29. 메모리 관련 파라미터 튜닝 - 2- 서버가 가진 물리 메모리 이상의 크기를 할당하면,스왑이 발생하기 때문에, 반대로 성능이 하락- MyISAM의 데이터 파일이 OS디스크 캐시에 올라가도록설정하는 것도 한 가지 방법
  30. 30. 메모리 관련 파라미터 튜닝 - 21MB < innodb_log_file_size < MAX_innodb_log_file_size <4GB;innodb_log_file_size는 4GB이하로 설정MAX_innodb_log_file_size = innodb_buffer_pool_size /innodb_log_files_in_group;innodb_buffer_pool_size;InnoDB의 데이터나 인덱스를 캐시하기 위한 메모리 상의 영역innodb_log_file_size;InnoDB의 갱신로그를 기록하는 디스크 상의 파일

×