분류 전체보기
-
Spring 성능 개선 - 캐시 사용하기 (Enhcache)카테고리 없음 2024. 8. 22. 21:42
1. Ehcache 추가 1.1 의존성 추가 org.springframework.boot spring-boot-starter-cache net.sf.ehcache ehcache 1.2 ehcache.xml 추가 name : 캐시명maxElementsInMemory : 메모리에 저장할 수 있는 최대 요소 수 maxElementsOnDisk : 디스크에 저장할 수 있는 최대 요소 수 eternal : 캐시 항목이 영원히 유지되는지 여부 -> false로 설정되어 있긴하다만 캐시 항목은 유효기간(timeToLiveSeconds) 혹은 유휴기간(timeToIdleSeconds)이 지나면 제거된다.statistics : JMX 통계정보 갱신 옵션timeToIdleS..
-
Spring 성능 테스트 With nGrinder (2) - 스카우터 설치카테고리 없음 2024. 8. 22. 16:20
1. Scouter Server 설치 및 기동 https://github.com/scouter-project/scouter/releases Releases · scouter-project/scouterScouter is an open source APM (Application Performance Management) tool. - scouter-project/scoutergithub.com 위 깃허브에서 1. scouter-all-[version].tar.gz (Scouter Collector와 Agent)2. scouter.client.product-[os].tar.gz을 다운받자 1.1 scouter-server 실행 scouter-all-[version].tar.gz의 압출을 푼 후 s..
-
Spring 성능 테스트 With Ngrinder (1) - Ngrinder 설치DataBase/튜닝 2024. 8. 22. 15:17
엔그라인더는 크게 두 가지 구성요소로 되어있다. 1. Controller - 성능 테스트를 위한 웹 인터페이스 제공- 테스트 프로세스 조정- 테스트 통계를 대조하여 표시- 스크립트 만들고 수정 2. Agent - 에이전트 모드로 실행할 때 대상 시스템에 로드를 가하는 프로세스 및 스레드 실행 - 모니터 모드로 실행할 때 대상 시스템 성능 모니터링 이제 컨트롤러와 에이전트를 다운받아야 한다. 2. nGrinder 설치 및 세팅 nGrinder의 Controller와 agent를 설치하기 위해선 JDK가 필요하다. nGrinder는 통신을 위해 여러 포트를 사용하므로, 해당 포트가 방화벽에 걸리지 않는지 확인이 필요하다. Agent : any -> controller 16001Agent: any - > ..
-
불친절 SQL 2장 정리 (인덱스 기본)DataBase/튜닝 2024. 8. 19. 21:21
1. 인덱스 튜닝의 핵심 요소 - 스캔 과정 비효율 줄이기 -> 인덱스 구성 및 순서에 영향 - 랜덤 엑세스 최소화 튜닝 -> 인덱스 구성에 영향 2. 인덱스 탐색 과정 -> 수직적 탐색을 통해 리프 블록을 찾는다 (루트에서 브랜치를 통해 리프까지) -> 이때 키에는 하위 브랜치의 범위가 담긴다. -> 비교해야하는 값과 키를 탐색하며, 자신의 값보다 같거나 큰 값을 만나면 그 옆의 브랜치로 이동한다. -> 수평적 탐색을 통해 값을 찾는다. (리프 사이 사이를 다니며 탐색) -> 리프 블록의 값을 비교하며 필요한 값을 찾는다. -> 인덱스의 값으로 충분하지 않으면, ROWID를 사용해서 테이블에 접근해서 필요..
-
불친절 SQL 1장 정리DataBase/튜닝 2024. 8. 19. 19:55
1. SQL이 느린 이유 -> 디스크 I/O 때문임! (I/O 처리하는 과정에서 프로세스가 잠을 자기 때문) 여러 프로세스가 하나의 CPU를 공유할 수 있지만, 특정 순간에는 하나의 프로세스만 CPU를 사용할 수 있다. 디스크에서 데이터를 읽어야 할 때 CPU를 OS에 반환하고 수면 상태에서 I/O 완료를 기다림 2. 데이터베이스 저장 구조(오라클) -> 테이블 스페이스 : 여러 세그먼트를 담음 세그먼트는 여러 카테고리가 있음 (테이블, 인덱스, 파티션 등) *세그먼트, 익스텐트,블록은 하나의 테이블에 대한 정보임 -> 세그먼트 -> 세그먼트 : 여러 익스텐트를 담는 저장 공간 -> 익스텐트 ..
-
Jenkins CI/CD 구축 (With Docker + Github + Docker Hub)Infra/CI&CD 2024. 8. 14. 16:00
깃허브 특정 브랜치에 push하면 jenkins가 dockerfile을 통해 이미지를 빌드하고, 이를 docker hub에 올린다-> 이를 배포할 ec2에서 내려 받아 배포하는 과정을 다룬다. 작업을 크게 설명하면,젠킨스 다운로드배포할 EC2에 대한 Credential 등록 - ssh agentJenkins와 깃 허브 연동및 WebHook 등록 ( Credential 등록 ) Docker hub와 Jenkins 연동( Credential 등록)파이프라인 스크립트 작성 1. 사전 작업 - 배포할 EC2와 Jenkins가 다운로드 받아진 EC2에 Docker가 설치되어 있어야 한다.- docker 설치 후 아래 명령어를 통해 docker 그룹에 user를 추가해준다sudo usermod -aG doc..
-
EC2로 Spring 레거시 배포하고 HTTPS 인증받기 (Nginx + Tomcat 연동 With Docker)Infra/AWS 2024. 8. 13. 15:48
1. 사전작업 - Nginx와 Tomcat을 띄울 인스턴스 2개 - WAS 배포 인스턴스에 Docker가 다운받아져야함 - Tomcat을 띄운 인스턴스는 깃허브 연동 (깃에서 pull 받아올 것) 2. 인스턴스2에 war 배포하기 2.1 배포를 위한 Dockerfile 작성 (프로젝트의 루트에 이를 작성해서 저장한다 파일 이름은 Dockerfile이다) Dockerfile의 내용은 다음과 같다.# 1. Maven 빌드 단계FROM maven:3.9.8-eclipse-temurin-11 AS build# 2. 프로젝트 소스 복사COPY . /app# 3. 작업 디렉토리 설정WORKDIR /app# 4. Maven을 사용하여 프로젝트 빌드 (테스트 생략)RUN mvn clean package ..
-
EC2 배포를 위한 사전작업Infra/CI&CD 2024. 8. 13. 11:39
1. Docker 설치하기 1.1 우분투 시스템 패키지 업데이트 sudo apt-get update 1.2 필요판 패키지 설치 sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common 1.3 Docker 공식 GPG키 추가 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 1.4 Docker 공식 apt 저장소 추가 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs)..