부하

kangking·2024년 5월 10일
0

기반기술

목록 보기
9/14
post-thumbnail

부하란?

서버가 처리할 수 있는 작업량을 초과하는 요청, 즉 서버의 성능을 저하시킬 수 있을 정도의 작업이나 요청을 의미한다.

부하를 방치하면 컴퓨터 자원의 사용량이 급증하여 결과적으로 시스템이 다운되는 상황이 발생할 수 있기 때문에 이에 대한 대비가 필요하다.

Jmeter

아파치에서 개발한 오픈소스 프로그램으로 자바기반 프로그램의 성능 테스트에 사용된다. 사용자가 지정한 시나리오에 따라 다양한 부하를 발생시켜 성능을 테스트 한다.

설치

Official Download

동작 방식

Apache Docs

  1. 테스트 계획 작성

    • 유형, 요청 동작
  2. 스레드 그룹 설정

    • 사용자 수, 접속 주기, 루프 수
  3. 샘플러 추가

    • 실제 요청 (HTTP,JDBC 등)
  4. 리스너 추가

    • 결과 수집 및 표시
  5. 구성 요소 설정

    • 특정 동작 정의
  6. 테스트 실행

    • 설정 완료된 테스트 계획에 따라 수행(사용자 생성, 부하 생성)
  7. 결과 분석

    • 리스너를 통해 수집된 결과 분석

문제 및 해결

  • 너무 많은 에러로 인한 블록


    해결:
    flush-host; (에러카운트 초기화)

  • DB설정에서 최대 연결수 초과


    해결:
    SET GLOBAL max_connections = [수치];

Active Active 부하

미러사이트 구성이 위와 같이 되어있다면 HAPROXY가 DB에 로드 밸런싱을 해주고 DB가 서로 master-slave, slave-master로 설정되어있을 때 부하를 줄 때 어떤 문제가 발생할까? 그리고 어떻게 해결해야 할까?

  • Active Active 구성

    기존 master - slave관계에 있던 DB를 역으로 slave - master 설정을 추가해준다.

  • 구성시 발생 문제

    M-S 로 구성된 상태에서 slave를 master로 바꾸는 순간 데이터 동기화가 되지 않아 에러가 발생한다. 이 경우 기존에 slave설정을 초기화 하고 다시 설정해주면 정상적으로 관계가 성립된다.

DB 구성이 3대 이상이 되면 Act-Act가 아닌 클러스터링을 사용한다. RDB, MongoDB, Redis, ES, Kafka, zookeeper, spark, hadoop

클라우드를 사용하면 좋은 점?

서버 세팅의 자동화가 가능해지며 이는 특정 클라우드 컴퓨터가 일정 수치 이상의 자원을 사용하면 자동으로 동일한 인스턴스를 추가하는 등의 방식으로 부하에 따른 서버 다운을 막을 수 있게 해준다.

TPS(Transaction Per Second) - 대용량 데이터 처리 모니터링에 사용하는 지표(ngrinder 사용)

profile
하루하루 의미있게

0개의 댓글