ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <아파치-톰캣> 기술지원 전문기업 (주)제스트정보기술 Apache-Tomcat Performance Tuning
    WEBWAS/Apache,Tomcat 2023. 4. 24. 18:25

    1. 웹서버 성능 튜닝이 필요한 이유

    Apache 설치 후 defualt 설정으로 웹 서비스를 하게되면 많은 양의 요청을 동시에 처리하지 못해 서비스에 영향이 있을 수 있습니다.

    따라서, Apache 웹서버의 성능을 튜닝하여 서비스 장애를 사전에 방지할 수 있습니다.

    Apache 설정 뿐만 아니라 Linux System의 커널 파라미터 튜닝도 필요합니다.

     

    2. Linux System kernel tuning

    리눅스 역시 default 설정으로는 웹서버로 사용하기에 한계가 있습니다.

     

    (1) Maximum file count

    리눅스 전체 시스템에서 활용할 수 있는 최대 파일 개수를 확인합니다.

    필요에 따라 값을 높일 수 있습니다.

    $ sudo sysctl -a | grep file-max
    fs.file-max = 3257003

    file-max 값을 400000으로 설정할 경우 다음과 같이 적용합니다.

    $ echo "fs.file-max=4000000" | sudo tee -a /etc/sysctl.conf

     

    (2) Open file Limit

    process별 시스템의 자원을 얼마나 사용하게 할 것인지를 제한합니다.

    Apache process에 할당된 자원이 적은 상태에서 많은 양의 요청이 들어오면 서비스가 정상적으로 동작하지 않을 수 있습니다.

    open files limit과 max user processes를 확인합니다.

    $ ulimit -a | grep open
    open files (-n) 1024
    $ ulimit -a | grep processes
    max user processes (-u) 30798

    다음과 같이 Hard limit과 Soft Limit을 동일하게 수정할 수 있습니다.

    위의 fs.file-max의 값보다 작아야 합니다.

    $ sudo su -
    # ulimit -SHn 65536
    # ulimit -SHu 65536
    # exit

     

    변경 사항을 OS 재부팅후에도 유지하기 위해 /etc/security/limits.conf 파일을 수정합니다.

    $ sudo tee -a /etc/security/limits.conf << EOF
    * soft nofile 65536
    * hard nofile 65536
    * soft nproc 65536
    * hard nproc 65536
    EOF

     

    3. Apache tuning

    Apache는 MPM을 사용하여 클라이언트로부터 받은 요청을 처리합니다.

    Apache는 2.4버전 기준 Prefork, Worker, Event 방식 3가지를 제공합니다.

     

    ① prefork

    - 미리 여러 개의 프로세스를 생성하여 하나의 프로세스가 하나의 요청을 처리하는 방식 (non-thread)

    - 프로세스 간 메모리를 공유하지 않아 안정적

    - 오래된 모듈과 호환이 필요한 서비스에 적합

    - 메모리 사용량이 상대적으로 높음

     

    ② worker

    - 하나의 프로세스에 연결된 여러 스레드에서 요청을 각각 처리하는 방식 (멀티 스레드)(multi-thread)

    - 스레드들이 메모리를 공유하기 때문에 메모리 사용량이 prefork 방식에 비해 적음

    - 동시접속자가 많은 서비스에 유용

     

    ③ event

    - Apache 2.4 버전부터 제공됨

    - worker 방식을 기반으로 동작

    - 요청을 분산하는 스레드를 따로 두어 처리 지연을 최소화하는 구조

    - 속도가 가장 빠르며, 동시접속자가 많은 서비스에 유용

     

     

    (1) Apache MPM 설정 확인하기

    현재 MPM이 어떤 모드로 동작하는지 확인합니다.

    다음과 같은 명령어로 확인할 수 있습니다.

    $ httpd -V | grep MPM
    Server MPM: event

     

    (2) MPM 모듈 변경하기

    앞서 확인한 MPM 동작 방식의 변경을 원할 경우 다음을 수행합니다.

    conf/httpd.conf 파일을 열어 사용하고자 하는 모듈의 주석을 해제하고 기존의 모듈은 주석처리 합니다.

    $ sudo vi conf/httpd.conf

     

    예를 들어 기존의 worker 방법을 event 으로 변경하려면 mpm_event_module을 사용하도록 주석 해제하고 mpm_worker_module을 주석 처리해야 합니다.

    #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
    #LoadModule mpm_worker_module modules/mod_mpm_worker.so
    LoadModule mpm_event_module modules/mod_mpm_event.so

     

    (3) 튜닝 값 추가하기

    **event 방식 기준

    conf/extra/httpd-mpm.conf 파일에 다음 설정값을 추가합니다.

    수치는 OS의 스펙과 서비스 특성에 따라 달라질 수 있습니다.

    <Ifmodule mpm_event_module>
    ServerLimit 20
    StartServers 3
    MinSpareThreads 75
    MaxSpareThreads 250
    MaxRequestWorkers 500
    ThreadsPerChild 25
    </IfModule>

    event mode 튜닝 옵션에 대한 상세 설명입니다.

    튜닝 값은 가상서버의 메모리 사용량을 고려하여 산정해야 합니다.

    아래는 대략적인 수치이므로 테스트 및 시스템의 특성에 맞게 설정해야합니다.

     

     

    옵션
    설명
    기본값
    RAM
    4GB
    RAM
    32GB
    ServerLimit
    프로세스 수의 최대값으로, ServerLimit은 MaxRequestWorkers를 ThreadsPerChild으로 나눈 값보다 크거나 같아야 한다.
    16
    13
    123
    StartServers
    웹 서버 가동 시 처음에 실행시킬 프로세스의 수
    3
    3
    3
    MinSpareThreads
    유지해야 할 여분의 스레드 수의 최소값
    75
    75
    75
    MaxSpareThreads
    여분의 프로세스 수의 최대값
    250
    250
    250
    MaxRequestWorkers
    (MaxClients)
    생성되는 스레드의 최대치로, 클라이언트가 동시에 접속할 수 있는 최대값
    400
    309
    3057
    ThreadsPerChild
    하나의 프로세스가 처리할 수 있는 최대 스레드의 수
    25
    25
    25

    <제스트정보기술 기술지원>

    (주)제스트정보기술은 전산시스템 구축에 오픈소스 SW로 구성

    요구사항 분석과/공개 소프트웨어 설치 및 기술지원/서비스 연동/교육 및 컨설팅을 수행 하고 있습니다.

    -. 공개 소프트웨어 기술 지원체계 수립

    -. 공개 SW 교육 지원

    수요기관의 SW 구조/기능을 분석하고, 공개 SW 도입을 위한 분석, 솔루션을 검토함.

    -. 오픈소스 SW 구축을 위한 최근 개발경향 분석

    -. 해당 기능/역할에 대한 공개 소프트웨어 기술데이터 분석

    -. 개방형 OS 도입 및 인프라 기반 WEB/WAS, 오픈 DB 기술지원 체계 수립

    -.Apache, Jboss(Wildfly) was, Linux OS, 오픈 DBMS 구축, 기술지원

    제스트정보기술은 20년 이상의 WEB/WAS 기술지원 경험과 노하우를 바탕으로

    고객의 인프라 상용소프트웨어(Jeus, weblogic,JBoss EAP, Oracle DB등)에 소요되는 제반비용

    (도입, 운영, 유지보수 비용등)을 획기적으로 절감하도록 계획과 방법을 제안하고 있으며

    시스템 서비스의 성능을 전반적으로 개선하여 기술지원, 컨설팅을 제공하고 있습니다.

    시스템 구축 이후에도 서비스 안정화를 위해 지속적인 서비스 모니터링 지원하고 있으며 ,

    고객의 시스템을 안정적으로 운영하기 위해 최선의 노력을 다 하고 있습니다.​

     

    <오픈소스 기술지원 문의>

    영업지원 : sales@xest.kr

    전화번호 : 02-558-5918

    팩스번호 : 02-558-5913

    홈페이지 : http://www.xest.kr

     

    (주)제스트정보기술

    Resin WAS SW 독점 총판 (주)제스트정보기술 Xest Information Technology

    www.xest.kr

     

Designed by Tistory.