1. 캐싱이 되지 않음 2. 포스트맨에서 status code 200을 리턴함 3. 스레드풀에서 아직 작업 중이었음. 기다리니까 됨. ==================================================================== 원래 이 sorted set 20개 이외에 조회수가 높은 순으로 1000개의 상품데이터가 더 캐싱이 되어야 하는데 캐싱이 되지 않는 문제가 발생. 각 zset에는 1000개의 상품 데이터가 들어있음. 로그에 딱히 문제가 보이지 않음 포스트맨에도 status code가 200임. 근데 데이터는 못 받아오네? 메모리가 문제인가? 아닌데? 팀원에게 보고하려고 캡처를 하는데 뭔가 이상함. ? 갯수가 늘었네? 원래는 아래 사진이었는데 혹시 몰라서 키 갯수를 세..
하기 코드를 실행했을때 에러 발생함. 먼저 IllegalMonitorStateException은 synchronized 블록이나 Lock객체를 잠금, 해제할 때 문제가 발생한 것을 나타낸다고 한다. 나는 지금 redisson을 이용한 pub-sub 기반의 lock을 사용하고 있으니, 위 코드에서 문제가 있다고 확신함. 생각해보니 finally 블록에서 무조건 unlock을 호출하고 있었음. 여기가 문제인 것 같아 lock 객체가 제대로 생성이 되었을때만 unlock이 되도록 수정해 보았음. 위처럼 수정하니 정상 실행 되었음.
1.elasticache 연결 안됨 2.nslookup써봄 3.동일 vpc가 아니면 실행이 안되는 문제였음. ec2에서 배포하니 됨 ================================================================================== 미니프로젝트 진행 중, reddison에서 lock 기능을 구현하고 테스트해보려 실행했는데 아래 오류와 함께 실행이 되지 않음 일단 lock 기능이 구현된 redisson facade가 잘 안되는 모양. 왜그런가 봤더니 elasticache에 연결이 안되는 것 같다. 설정이나 코드에는 문제가 없어 보였다. 그럼 뭔가 elasticache가 실행이 안되고 있나? 해서 elasticache 콘솔에 가 봤는데도 available로 잘..
토이 프로젝트를 진행하던 중, 동시성 이슈를 해결해야 할 필요가 생겼습니다. 이 내용을 문서화 할 필요도 있어 해당 내용을 정리한 내용을 블로그에다가도 옮겨 보았습니다. Objective 현재 우리 서비스에서는 하나의 책에 2개 이상의 스레드가 접근해 주문을 시도하면 데이터의 정합성이 깨지는 문제가 있음. 우리 서비스와 같은 다중 사용자 환경에서 둘 이상의 트랜잭션이 동시에 수행될 때, 데이터의 정합성을 해치지 않도록 트랜잭션의 데이터 접근을 제어할 필요가 있음. 이러한 동시성 이슈를 해결하기 위해 lock을 이용한 동시성 제어를 사용하고자 함. Proposal redisson 사용 redis의 pub-sub 기반 message broker 기능을 이용하여 락을 구현하는 방법이다. 락을 해제하는 측이 락..
인덱스는 백과사전의 목차. 저는 이렇게 이해했습니다. 우리가 원하는 특정 단어를 찾아볼 때, 첫 장부터 하나씩 찾아보는 것은 굉장히 비효율적입니다. 우리는 원하는 단어를 더욱 빠르게 찾기 위해서 사전의 목차를 확인하고 단어가 어디에 포함되어 있는지를 찾아, 바로 원하는 페이지로 이동할 것입니다. 전 이게 인덱스라고 이해했습니다. 좀 더 그럴듯하게 말하자면, 데이터 검색 속도를 향상시키기 위해 db에서 테이블의 특정 column(field)을 기준으로 잡고, 각 row(record)의 값을 가지고 있는 것을 복사하여 별도 생성한 것이라고도 할 수 있습니다. (출처: https://en.wikipedia.org/wiki/Database_index) 인덱스를 사용하면 데이터 검색 속도가 대폭 향상되지만, 인덱..
토이프로젝트를 진행하면서 검색 기능을 개선시킬 필요가 생겼습니다. 천만건의 데이터 중 검색창에서 특정 상품을 검색하는 기능이 있는데, 그냥 like문을 통해서 쿼리를 날리니 너무 많은 시간이 소요되었습니다. (심지어 지금 DB는 rds 프리티어를 사용 중 ㅠ) 그래서 인덱싱이라는 방법을 통해 검색 기능을 개선시키고자 하였습니다. 일단 500만건의 데이터를 db에 넣어두고, 인덱싱 테스트를 진행했습니다. (인덱싱하는데 like문에서 와일드카드를 양쪽에? 라고 하실 수도 있지만, 관련내용을 저도 작성하다가 알게 되었네요. 따로 정리해 보겠습니다.) explain select COUNT(*) from products p WHERE name LIKE "%Sleek%" 먼저 EXPLAIN 키워드를 통해 사용하고자..
토이프로젝트 진행 중 1000만건의 더미데이터를 생성할 필요가 생겼습니다. 두 가지 아이디어가 떠올랐는데, SQL 프로시저를 사용하는 방법과 faker를 사용하는 방법이었습니다. 뭐가 더 나을지를 생각하다가, 나에게 더 익숙한 방법으로 진행하기로 했습니다. 두 방법에서 속도의 차이도 있지 않을까 싶은데 이건 나중에 테스트를 해보고 업데이트 하겠습니다. faker 의존성을 추가해 줍니다. dependencies { implementation 'net.datafaker:datafaker:1.5.0' } 파일이 저장될 위치를 지정합니다. 컴파일러 출력에서 위치를 지정할 수 있습니다. 더미데이터를 만들 코드를 작성합니다. 저는 제 토이프로젝트에 필요한 내용대로 컬럼을 작성하였습니다. csv에서는 컬럼을 쉼표나 ..
정말 간단하게 ELB를 적용해보는 과정입니다. 인스턴스 생성 테스트용으로 인스턴스를 2개 생성합니다. 편하신 방법대로 진행하면 됩니다. 저는 ubuntu 20.04버전으로 생성하였고, 서로 다른 AZ(가용영역)에서 돌릴 것이기 때문에 네트워크 설정의 편집 토글을 열어 ap-northeast-2a / ap-northeast-2c로 각각 설정하였습니다. (아마 프리티어에서는 2a , 2c가 가능했었던 것 같습니다.) 페이지 준비 서로 다른 인스턴스라는 것을 확인할 수 있도록 아래와 같이 출력되는 페이지를 만들었습니다. (A라는 인스턴스에서는 A, B에서는 B가 나오게!) 대상 그룹 생성 좌측 네비게이션 바에서 대상 그룹을 선택하고 대상 그룹을 생성합니다. 다른 설정은 지금 딱히 건드릴 필요는 없지만 하나만 ..
*이것저것 설치해가면서 하다보니 차이가 있을 수 있습니다. *작동 확인 후, 진행 순서를 남겼습니다. *토이 프로젝트 진행을 위해 짧게 공부하고 진행한 내용이라 많이 부족합니다. 제가 챙기지 못한 부분이나 더 알아봐야 할 부분 남겨주시면 감사하겠습니다!! 계정설정 로그인을 통해서 접속하지 않을 것이라 nologin 설정을 해준다고 함. sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus Prometheus 설치 $ sudo apt-get install -y prometheus prometheus-node-exporter prometheus-pushgateway prometheus-alertmanager *이미 설치한 상태라 로그에 변화가..
미니프로젝트를 진행하다가 웹 시스템 구조를 아래 처럼 진행해야 할 것 같다는 이야기가 나왔다. flow를 제대로 그렸는지 모르겠다. 먼저 client에서 요청이 오면 웹 서버를 거치고 그 다음 WAS를 거치면서 Redis를 사용해서 캐싱이 필요하다면 캐싱을 한다던가, 자료조회의 경우 Redis에 존재한다면 Redis에서 데이터를 가져오는 그런 흐름을 생각했다. 단순히 우리가 목표로 하는 챌린지에서 로드 밸런싱이 필요해서 라고만 하기엔 다른 이유가 있을 것 같았다. 리버스 프록시 보통 프록시를 떠올리면, 내가 특정 사이트에 접속할 때 내 아이피 대신 서버의 아이피를 보여주는 것만을 생각했다. 이렇게 사용자들이 어딘가에 접속을 할 때 프록시 서버를 거쳐 자신의 아이피를 숨기고 접속하는 것을 forward p..
- Total
- Today
- Yesterday
- 대규모더미데이터
- jmeter로그인
- EC2
- jmeter토큰
- bankersRounding
- index
- Lock
- jmeter테스트
- hackerrank
- jmeter쿠키
- 항해
- Spring
- Redisson
- Redis
- jwt
- 동적크롤링
- 부하테스트시나리오
- 토큰
- Python
- 프로그래머스
- pessimisticlock
- 스프링faker
- CheckedException
- Java
- 인덱스
- CorrectnessAndTheLoopInvariant
- jmeter시나리오
- jmeter부하테스트
- jmeter세션
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |