LocustAPI 부하 테스트를 위하여 리서치 후 찾게 된 Python 기반의 부하 테스트 라이브러리.다른 Python 코드에서도 통합이 가능.pip를 통해 간편한 설치 가능.locustfile.py 파일 하나로 구성 가능.RPS(Request Per Seconds), RT(Response Time) 제공.싱글 머신에서도 충분한 부하 테스트가 가능하고, 필요하다면 분산 클러스터를 구성할 수 있으며 그 구성이 간단하게 가능.구성 요소# locustfile.py...# 동작을 실행할 User# Web UI에서 User 지정 수 만큼 클래스 인스턴스가 생성됨.# 각 클래스 인스턴스는 선택된 task를 co-routine 생성하여 실행.# 각 co-routine은 task로 지정된 함수를 실행.class Use..
분류 전체보기
개요 airflow가 DAG의 로그를 기록할 때, 로그 라인의 시간 정보의 시간대가 UTC로 나타나는 문제. 로그가 기록될 때 생성되는 파일 이름에서 시간을 지정하면 UTC로 나타나는 문제. 해결 방법 로그 라인 시간대 UTC 문제 # airflow.cfg ... [logging] ... log_format = [%%(asctime)s] {%%(filename)s:%%(lineno)d} %%(levelname)s - %%(message)s ... log_format이 남기는 로그의 포맷인데 asctime이 UTC로 나오게 된다. airflow는 base_log_folder로 로그를 저장하는데 worker들이 task를 실행하고 남기는 로그들의 타임스탬프가 UTC로 되어 있어서 이를 현지 시간대(KST)로..
개념적인 튜닝 용어 오브젝트들을 스캔하는 유형, 디스크 접근 방식 등 쿼리 튜닝과 관련된 용어를 설명한다. 오브젝트 스캔 유형 오브젝트 스캔 유형은 테이블 스캔(table scan)과 인덱스 스캔(index scan)으로 구분한다. 테이블 스캔은 인덱스를 거치지 않고 바로 디스크에 위치한 테이블 데이터에 접근하는 유형이며, 인덱스 스캔은 인덱스로 테이블 데이터를 찾아가는 유형이다. 테이블 스캔 유형 테이블 풀 스캔(Table Full Scan) 인덱스 스캔 유형 인덱스 범위 스캔(Index Range Scan) 인덱스 풀 스캔(Index Full Scan) 인덱스 고유 스캔(Index Unique Scan) 인덱스 루스 스캔(Index Loose Scan) 인덱스 병합 스캔(Index Merge Scan..
논리적인 SQL 개념 용어 SQL 문 작성에 필요한 주변 오브젝트와 SQL 문의 상호관계, 연관성과 알고리즘에 관한 논리적 개념 용어를 다룬다. 서브쿼리 위치에 따른 SQL 용어 서브쿼리(subquery)란 쿼리 안의 보조쿼리를 가리키는 용어이다. 가장 바깥쪽의 SELECT 문인 메인쿼리(main query)를 기준으로 내부에 SELECT 문을 추가로 작성해서 서브쿼리를 만든다. 작성한 서브쿼리의 위치에 따라 각각 부르는 용어가 다르다. SELECT 절 : 스칼라 서브쿼리 FROM 절 : 인라인 뷰 WHERE 절 : 중첩 서브쿼리 스칼라 서브쿼리 메인쿼리의 SELECT 절에 있는 또 다른 SELECT 절이 스칼라 서브쿼리라고 했지만 사실 FROM 절이나 WHERE 절 등에서도 스칼라 서브쿼리를 사용할 수..
물리 엔진과 오브젝트 용어 DB 엔진 용어 MySQL이라는 DBMS는 MySQL Engine과 Storage Engine으로 구성되어 있다. MySQL 엔진(MySQL Engine) 파서(parser) 전처리기(preprocessor) 옵티마이저(optimizer) 엔진 실행기(engine executor) 스토리지 엔진(Storage Engine) InnoDB, MyISAM, Memory 등 스토리지 엔진 사용자가 요청한 SQL 문을 토대로 DB에 저장된 디스크나 메모리에서 필요한 데이터를 가져오는 역할. 이후 해당 데이터를 MySQL 엔진으로 보내준다. 스토리지 엔진이 데이터를 저장하는 방식에 따라 각각의 스토리지 엔진을 선택하여 사용할 수 있다. 필요하다면 외부에서 스토리지 엔진 설치 파일을 가져와..
필요 설정 파일Airflowairflow.cfgFluentdfluentd.confElastalertairflow.yaml설정Dag Run LogAirflow# airflow.cfg[logging]log_format = time:%%(asctime)s filename:%%(filename)s:%%(lineno)d levelname:%%(levelname)s message:%%(message)slog_filename_template = dag/{{ ti.dag_id }}/{{ logical_date.now().year }}-{{ logical_date.now().month }}-{{ logical_date.now().day }}.loglog_formatDag를 실행시킨 후 해당 Dag에서 발생하는 로그..