전체 글 (105) 썸네일형 리스트형 ngrinder와 ehcache로 성능개선 캐시 적용 전 캐시 적용 후 평균 TPS : 34 -> 870Peak TPS : 38 -> 937Mean Test Time : 296ms -> 11ms 평균응답시간Executed Tests : 1921 -> 49036 1분동안 응답 성공한 갯수 ngrinder로 부하테스트 중 자바 버전이 안맞는다 찾아보니 내 프로젝트는 거의 jdk 17버전으로 되어있는데 ngrinder는 8이나 11버전이 가능하고, 17버전 지원 안한다고 한다. 로그를 확인해보니 다음과 같이 찍혀있다.자바 클래스 파일의 메이저 버전 61은 JDK 17을 나타낸다고 한다.이는 현재 ngrinder가 JDK 17로 컴파일된 클래스를 처리하려고 하지만, ngrinder는 JDK 11을 사용하도록 설정된 프로젝트라서 호환성 문제가 발생하는 것이다. 그래서 시스템 환경변수를 jdk 11로 바꾸라고 하는데..그러면 ngrinder사용할때 말고 내 플젝 개발할때 문제가 될것같았다. 그래서 내가 생각한 방법은아예 내 로컬 시스템 환경변수를 바꾸는게 아니라 ngrinder프로젝트에서만 환경변수를따로 설정하는것 이었음. 1. 컨트롤러 디렉토.. 인덱스를 사용하면 도대체 왜 검색이 빠른건가 성능개선에 데이터조회 시간축소는 필수. 인덱스를 사용하면 해당 레코드를 찾는데 걸리는시간이 대폭 축소 된다. (O log n) 의문 -> 어차피 원본 테이블이나 인덱스 테이블이나 행의 갯수는 똑같은데 왜 대체 시간이 축소된다는건지?: 바로 '검색방식' 이 다르기 때문이었다!! 원본 테이블에서 해당 레코드를 찾는건 풀 테이블 스캔으로 100만개의 행이 있을때 최악의경우 100만번의 비교가 필요할 수도 있다. 하지만 인덱스 테이블은 정렬된 구조의 이진트리 검색방식으로, 약 20번만의 비교만으로 찾을 수도 있다. (log백만 = 20 ) 이 차이 때문이었다. 그니까 애초에 이진트리방식으로 검색을 하기 위해서 인덱스테이블을 따로 추출하는 것임. 인덱스 테이블을 만드는 이유는 바로 이진 탐색(Binary Se.. TPS와 트랜잭션 TPS : Transactions Per Second 초당 처리되는 트랜잭션의 수 TPS에서의 트랜잭션? Transaction 은 특정 작업이나 일련의 작업이 시스템에서 처리된 작업 '단위' 를 의미한다.하나의 트랜잭션은 시스템이 처리해야 하는 하나의 완전한 작업 흐름을 의미하며 다양한 요청-응답 주기를 포함할 수 있다. 예시로 다음과 같은 작업을 포함할 수 있다.HTTP 요청-응답 : Web App에서는 클라이언트가 서버에 요청을 보내고 응답을 받는 작업예 : 사용자 로그인, 목록 조회, 데이터 제출 등의 요청데이터베이스 작업 : DB에서 실행되는 여러 작업이 하나의 트랜잭션으로 간주될 수 있다예 : 하나의 INSERT작업, SELECT작업 또는 여러 쿼리 묶어서 처리하는 작업API 호출 : 하나의 A.. TCP/UDP 네트워크의 계층 중, 전송계층에서 데이터를 보내기 위해 사용되는 프로토콜을 의미한다 출처 : https://www.youtube.com/watch?v=Xp1IKwJfDAA인터넷은 네트워크 상에 자신의 식별번호가 공유되는 환경에서 정보교환이 이루어지는 것을 말한다 인터넷의 정보교환의 방식은 TCP와 UDP로 나뉘고, http, ftp, ssh, smtp 등 tcp방식이 가장 많이 활용되며 udp 는 네트워크 노드정보 교환이나 미디어처리에 활용된다 TCP : Transport Control Protocol 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용되는 프로토콜 이다컴퓨터간 접속과 송수신이 보장된 환경에서 진행되는 방식이며 정보를 제공하는 Server와 그 정보를 요청하는 Clien.. Cache, RAM, HDD/SSD Cache : 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소 이다또는, 빠른 접근이 가능한 메모리(램, 디스크 등)에 데이터를 저장하여, 나중에 같은 데이터가 요청될 때기존 저장된 값을 즉시 반환할 수 있도록 하는 방식 저장공간이 적고 비용이 비싼대신 빠른 성능을 제공한다.저장공간 계층구조가 이렇다고 한다! 이런 경우에 사용하면 좋다- 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래걸리는 경우 --> 서버에서 제공하는 API가 일정한 형식으로 데이터를 반환하는 경우! - 반복적으로 동일한 결과를 돌려주는 경우 (이미지나 썸네일 등) 캐시를 사용하면, 매번 서버에 요청하지 않고도 이전에 받은 데이터를 저장해두고빠르게 접근할 수 있다. 서버에서 데이터를 다시 가져오는데 걸리는 시간을 줄이기 .. 스프링 빈 스프링 Bean이란개발자가 자바 코드로 직접 관리하는 객체가 아닌, 스프링 컨테이너가 자동으로 관리하는 객체! 예시 : 스프링 컨테이너가 관리하는 객체 @Service 이 어노테이션이 붙은 클래스는 스프링 컨테이너에 의해 관리됨service 는 repository에 의존성이 있음 이건 스프링 컨테이너가 주입해줌스프링 컨테이너는 객체를 생성할 때 의존성 자동으로 주입하고 객체의 생명주기 관리스프링컨테이너를 사용하는 이유?서로 의존성이 있는 객체들을 직접 생성하지 않고, 컨테이너가 필요한거 자동으로 해줌생명주기 자동으로 관리해줘서 코드가 깔끔하고 유지보수 쉬움스프링컨테이너 통해 의존성 주입하면 테스트할 때 가짜객체(mock)를 주입하는 등의 작업이 훨 쉬움객체간 의존성 유연하게 설정 가능@Bean 사용하는.. ec2 로그 실시간 확인하기 ec2로그 확인해보려 한다.ec2로 접속해서 명령어로 실시간 로그 확인하기-> ec2접속 방법 (터미널창으로)터미널창 키고 명령어 입력1. ssh -i {~/Downloads/my-key.pem} {ec2-user}@{52.76.225.186} pem파일 위치랑이름/ 사용자이름 / ec2인스턴스 퍼블릭ip주소 2. docker logs -f {컨테이너 이름}컨테이너 이름 확인하기 : docker ps 이전 1 2 3 4 5 6 ··· 14 다음