전체 글

공부해보고 경험해보고 기록하는 블로그 입니다.
TIL

2023.08.19

오늘의 공부 오늘은 프로젝트 중간 발표를 진행하였고, 멘토님께서 이야기하신것들에 대해 정리해보겠다. 프로덕션 서비스에서는 낙관적인 락을 사용하는 경우가 많음 정량적인 지표가 필요하다. 비관적 락 vs 낙관적인 락 성능 지표는 최대치를 기준으로 redis을 사용했을 떄 db 조회 흐름 redis는 어느 영역에서 가장 많이 사용되고 있는가? 추후에 캐싱 확장해서 써볼 것을 고려해봤는가? 다른 기능까지? redis 데이터 자료 구조도 고민을 해봐야한다. redis 데이터 부하량과 저장되는 데이터가 많다면 여기에 대한 해결 방안은 있는가? QueryDSL로 커버할 수 없는 영역은 무엇으로 할 것인가? QueryDSL만 사용을 할 것인가? JPA의 QueryMethod를 같이 사용하는가? 양방향과 단방향을 사용하..

AWS

Swap

Swap 이란? 시스템에 메모리가 부족할 경우에 하드 디스크의 일부 공간을 활용하여 계속 작업을 도와주는 영역이다. 즉, 하드 디스크의 일부를 RAM 처럼 사용할 수 있게 만드는 것이다. 아래의 명령어로 간단하게 설정할수 있다. 자세한 내용은 링크를 달아 둘테니 거기서 확인 바랍니다. $ sudo fallocate -l 1g /mnt/1GiB.swap $ sudo chmod 600 /mnt/1GiB.swap $ sudo mkswap /mnt/1GiB.swap Setting up swapspace version 1, size = 1048576 kB $ sudo swapon /mnt/1GiB.swap $ cat /proc/swaps Filename Type Size Used Priority /home/swa..

Spring

HikariCP

Connection Pool 란? 서버가 DB에 연결하기 위한 Connecting 비용이 가장 큰 비율을 차지한다. 이처럼 Connection을 생성하는 작업은 비용이 많이 드는 작업이다. 이를 보완할 수 있는 방법이 바로 Connection Pool이다. 커넥션 풀은 데이터베이스와 연결된 커넥션을 미리 만들어 놓고 이를 pool로 관리하는 것이다. 즉, 필요할 때마다 커넥션 풀의 커넥션을 이용하고 반환하는 기법이다. 커넥션 풀 디자인 패턴처럼 미리 만들어 놓은 커넥션을 이용하면 Connection에 필요한 비용을 줄일 수 있다. 따라서 DB에 빠르게 접속할 수 있다. HikariCP 란? HikariCP는 가벼운 용량과 빠른 속도를 가지는 JDBC의 커넥션 풀 프레임워크이다. SpringBoot는 커넥..

TIL

2023-08-17 - JMeter / 성능 개선

1분동안 3000건 전체 조회 ( 페이지 ) OS 환경 Window 10 Pro RAM 32GB MySQL 8 PostgreSQL 15 Spring 3.1.2 JDK 17 기존 코드 @Transactional(readOnly = true) public List findAllIdea(String keyword, Category category, Integer page) { if (StringUtils.hasText(keyword) && !Objects.isNull(category)) { throw new IdeaFindException(IdeaFindErrorCode.KEYWORD_CATEGORY_SAME); } List findList; Sort sort = Sort.by(Sort.Direction.AS..

TIL

2023.08.17

오늘의 공부 오늘은 프로젝트의 아이디어 게시글 전체 조회 에 대해서 성능 테스트를 하였다. EC2 에 아래와 같은 설정을 통해 실제로 테스트 해보았다. OS Ubuntu 22.04 AWS 인스턴스 t2.micro CPU vCPU(가상 CPU) 1 core Memory 3G( Memory 1G + Swap 2G ) 데이터 건수 유저 10만건, 아이디어 게시글 100만건 3000건 서버 CPU, RAM 그래프 2000건 서버 CPU, RAM 그래프 300건 서버 CPU, RAM 그래프 이러한 문제로 성능 개선이 필요할것 같다. 아래의 에러가 뜬다. 먼저 생각 해보고 검색 결과 현재 코드에서는 아래와 같이 if 문을 통해 전체 검색인지 단건 조회인지 검색인지 판단하고 그에 해당하는 리스트를 반환해준다. 또한 ..

TIL

2023.08.15

오늘의 공부 오늘은 이력서들을 간단하게 1차 생성을 하였다. 이력서들을 적어보니 너무나 부족한것이 많았지만 그래도 채워볼려고 노력하였다. 소개글을 뭐라고 적을지 잘 몰라서 고민중이다..ㅠㅠ 내일은? 실제로 EC2 에서 프로젝트 배포후 성능 테스트하고 성능 개선할 예정이다.

TIL

2023.08.14

오늘의 공부 . 내일은?

TIL

2023.08.13

오늘의 공부 오늘은 성능 테스트 유형에 대해서 공부하였다. 1) Load Test : 동시 사용자 또는 프로세스 수에 의해 생성되는 트랜잭션의 요청으로 인해 현실적인 부하 수준을 처리하는지에 대한 시스템 성능 측정 2) Stress Test : 임계값 이상의 요청이나 비정상적인 요청을 보내 비정상적인 상황의 처리 상태를 확인하고 시스템의 최고 성능 한계를 측정하기 위한 테스트 3) Spike Test : 갑자기 사용자가 몰렸을 때 요청이 정상적으로 처리되는지, 또는 업무 부하가 줄어들 때 정상적으로 반응하는지를 확인 4) Scalability Test / Soak Test : 긴 시간 동안 테스트를 진행해서 테스트 시간에 따른 시스템의 메모리 증가, 성능 정보의 변화 등을 확인 이러한 테스트가 있다. 내..

TIL

2023.08.11

오늘의 공부 오늘은 Jmeter 에 대해 조사해보고 다른것이 있는지 조사해보았다. 또한, 실제로 적용해보고 부하테스트도 해보았다. 내일은 더미 데이터를 모아서 실제로 성능 테스트를 해보는 시간을 가져야겠다! https://domae.tistory.com/116 테스트 도구 Apache JMeter Apache JMeter 란? Java 로 GUI 기반으로 서버, 서버 그룹, 네트워크 또는 개체의 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있다. 지원 domae.tistory.com 조사 비교 표 특징 / 도구 Apache JMeter Gatling Locust 언어 Java Scala Python UI GUI 기반 코드 기반 코드 기반 지원 프로토..

Spring

테스트 도구 Apache JMeter

Apache JMeter 란? Java 로 GUI 기반으로 서버, 서버 그룹, 네트워크 또는 개체의 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있다. 지원하는 프로트콜도 다양하고 플러그인으로 확장성도 다양하다. 또한, 레코딩 기능을 제공하고 오래전부터 사용하던 Test Tool 이다. 이를 통해 큰 커뮤니티와 많은 플러그인이 존재한다. JMeter 사용방법에 대하여 먼저 다운을 받는다. https://jmeter.apache.org/download_jmeter.cgi Apache JMeter - Download Apache JMeter Download Apache JMeter We recommend you use a mirror to downloa..

Domae_
공부해보는 개발 블로그