묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨대규모 트래픽 처리를 위한 부하테스트 입문/실전
수평적 확장을 통해 병목 지점 해소를 한 이유가 궁금합니다.
안녕하세요.최근 성능 최적화와 관련되어 병목 지점을 명확히 하고싶어 해당 강의를 수강중인 한 학생입니다. 강의 내용 중, ec2 의 cpu의 사용량이 100% 찍어, 수평적 확장을 통해 병목 지점을 해소하려고 한 내용을 확인하였습니다. 현재 개발되어있는 spring boot 프로젝트에서 tomcat 서버의 pool 사이즈에 대한 설정과 hikari pool 에 대한 사이즈 설정이 default 로 들어가 있어서 문제가 발생할 수도 있을 것 같다라는 생각이 듭니다. (default 가 min : 10 으로 설정되어있어, 이를 처리하기 하기 위한 thread 생성을 하다 보니, 더 늘어났다고 생각) 물론, 해당 spring boot 의 서버의 자원을 모니터링 하기 위한 툴이 적용되어 있지 않아 판단이 어려운 부분이 있긴 할 것 같습니다. 만약, 스카우터 등을 사용해 모니터링 한 결과, cpu 사용량이 100퍼센트까지 치솟는 지점이, 신규 thread 가 막 늘어나고, 요청들이 waiting 되는걸 확인한다면, pool 사이즈 부터 건들여 보는게 맞을까요?
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
request failed 관련하여 질문 드립니다.
안녕하세요 재성님 강의 잘 듣고 있습니다. 다름이 아니라 수업 내용을 저의 서비스에 적용하다가 질문이 있어서 이렇게 글 남겨요.vuser 200으로 5분동안 게시판 글 조회 api를 요청했습니다.ec2, rds의 cpu memory사용은 아래와 같이 안정적인데..k6 대시보드에서는 vuser 100을 기점으로 httprequest를 보내지도 못하며, k6로그에는 request timeout 로그들이 많이 나옵니다.참고로 현재 k6는 로컬(노트북)에서 도커로, 서버는 ec2내에서 도커로 실행되고 있습니다.
-
해결됨비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
Redis vs Memcached
안녕하세요. 강의 잘 듣고 있습니다!현재 개인 프로젝트에 Redis를 적용해보려고 합니다.구현하려는 기능은 주식 가격 요청 API로, 동일한 주식 종목을 여러 번 호출했을 때 캐시에서 값을 가져오는 로직입니다.Redis 외에도 Memcached라는 인메모리 캐시 서버가 있는데, 이 두 가지 서버 중 어떤 기준으로 선택하는 것이 좋을지 고민입니다.기술을 선택할 때, 근거를 명확히 하는 연습을 하는 것이 중요한가요?예를 들어, Redis는 리스트, 셋, 해시, 정렬된 셋 등 다양한 데이터 구조를 지원하고, 영속성 기능도 제공하는데, 이런 이유로 Redis를 선택해야 한다고 말할 수 있을까요?제가 구현하는 기능은 단순 조회 기능이라 Memcached도 적합할 수 있을 것 같지만, 이를 다른 사람들에게 설득할 근거와 이유는 어떻게 제시하는 것이 좋을까요?
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
redis 를 compose 로 묶어준 이유가 궁금합니다.
강의 내용 중, redis 를 docker-compose 로 묶어 한번에 띄우도록 설정한 모습을 확인할 수 있었습니다. 이렇게 되면 서버 코드의 변경점이 생겨 수동 재배포를 진행하게 될 때, docker-compose 파일로 실행하게 될 것 같습니다. redis 도 일종의 db라고 생각이 되는데, 서버의 코드가 업데이트 되면 redis 를 다시 docker로 띄운다는 가정이 생기는 것 같은데, 맞는 접근법인지 궁금합니다.초기 ec2 설정 단계에서 단순히 redis 를 설치해서 사용하면 되지 않나 라고 생각이 됩니다. 만약 캐시 전략의 변경이나, 캐시 데이터의 정합성? 문제가 우려된다면 key를 모두 날려주는 cli 를 실행시키는 방법이 더 유욜할 것 같은데, 강의 편의와 docker-compose 의 유용성을 설명하기 위한 강의 챕터인가요?
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
RDS 실시간 모니터링 질문
[보충 강의] 실시간으로 CPU와 메모리를 관측하는 방법강의에서 설정값을 바꾸게 되면 그동안에 서비스가 안되지 않을까요? 실무에서는 변경이 불가능할거 같기도합니다. 이런경우는 어떻게 하면 좋을까요?강의 너무 잘보고 있습니다. 상당히 원했던 강의인데 너무 깔끔하고 좋습니다! 😀
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
안녕하세요 ㅠㅠ 과금되는게 있어서 질문드립니다.
강사님과 똑같이 RDS를 세팅했는데 왜 이런 걸까요...현재 저는 팀 프로젝트 때문에 서버를 구성하는 작업을 맡았는데 RDS 쪽에서 과금이 발생했습니다...ㅠㅠ 구글링 통해서 확인해본 결과 뭐.... 퍼블릭 액세스 옵션을 금지해야한다. 라고 그것 때문인걸까요?? 현재 자동 백업이라던가 스토리지 이런 구성 AWS RDS 문서 읽으면서 무료로 사용할 수 있는 기준은 맞췄다고 생각했는데 제가 놓친 부분이 있을까요??밑에는 제 DB 인스턴스의 설정 부분입니다.
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
스프링서버 2개일 때 병목지점 판단하는 법(CPU 사용률?), 권장 TPS 수치
안녕하세요. 강의 정말 잘 수강하였습니다. 지난번 로드밸런서 관련 질문도 강의를 들으면서 자연히 해결이 되었는데요, 현재 완강 상태에서 풀리지 않는 의문점과 개인적으로 궁금한 점이 하나 있어 질문 2가지 드립니다. 로드밸런서를 활용해 스프링 서버를 2개를 띄우고 부하테스트를 진행하여 AWS CloudWatch에서 사용률을 확인하는 것까지는 이해를 하였습니다. 그러나 병목지점을 CPU 사용률이라고 판단을 하셨는데, CPI 사용량이 한 스프링 서버는 100%여서 더 이상 가용할 자원이 없는 것은 이해를 하였으나 나머지 한 서버는 77%로 아직 가용 CPU 리소스가 남아있는 것으로 보여 전체 CPU시스템으로 보았을 때 아직 사용할 수 있는 CPU자원이 남은 것이 아닌지 궁금합니다. 한 학기 동안 구성한 프로젝트를 출시를 앞두고 있는데, 일반적으로 tps가 몇 정도는 돼야 안정적인 운영이 가능한지 여쭙니다. 좋은 강의 제공해주시어 감사합니다.
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
로드밸런서를 넣은 이유가 있을까요?
지금 제가 하고 있는 프로젝트에서는 로드밸런서 없이 그냥 ec2에 서버만 띄웠는데일반적으로 로드밸런서가 필수적인가요?
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
tps에 관하여 질문있습니다.
안녕하세요!tps에 관하여 질문있습니다.개별 api 부하테스트를 진행하고 예를들어 결제 api가 900tps가 나왔는데 전체 시나리오 테스트를 해보니 2300tps가 나왔습니다.이해한바로는 api 에서 아무리 빠른 tps가 나오는것이 있더라도 낮은 tps가 있으면 그거 때문에 병목현상이 일어나는 걸로 알고 있어서 900tps가 나올것이라고 예상했습니다.이럴 경우에는 이 서비스의 tps는 900인가요 2300tps인가요??
-
해결됨대규모 트래픽 처리를 위한 부하테스트 입문/실전
수직적 확장과 가용성의 관계에 대해 질문 드립니다
안녕하세요 강사님. 강의 잘 듣고 있습니다!강의를 듣다 한가지 의문점이 생겼습니다.가용성과 수평적 확장, 수직적 확장에 대해 설명해주실 때 수평적 확장은 가용성이 높아지고 수직적 확장은 가용성이 낮아진다고 하신 부분입니다.가용성아라는 것이 시스템이 서비스를 정상적으로 제공할 수 있는 가능성을 퍼센티지로 나타낸 것이고, 서비스에 장애가 발생할 가능성이 작을수록 가용성이 높다고 할 수 있기 때문에, 수직적 확장으로 시스템의 스펙을 높이면 기존보다 더 많은 트래픽을 감당할 수 있어서 가용성이 높아진다고 할 수도 있는 것 아닌가 싶어서 질문 남깁니다.
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
실제 서비스를 할때 rds에 접근하는 방법
실제 서비스를 할때 ec2 인스턴스랑 rds 이 두개를 보안성을 높이기위해 프라이빗ip 로 설정을하는데 이러면 제 개인컴퓨터에 rds의 db를 시각화해서 볼수있는 dbeaver나 워크벤치를 연결자체가 불가능해서 인터넷에 찾아보니 베스천호스트 방식으로 ec2인스턴스를 새로하나 더만들어서 이것을 퍼블릭ip로 바꿔서 rds에 접근하는 방식이 있던데 이방식이 일반적으로 실무에서도 자주쓰이는 방식일까요? 제가 실제 서비스를 해본 적이없어서 공부하는입장에서 궁금했습니다. 그리고 실제 서비스에서 다른방법이 있다면 좀 알려주시면 감사하겠습니다.
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
k6의 결과 해석
안녕하세요. 강의에서 k6를 실행하기 위해 30명의 가상유저가 10초동안 요청을 무한히 보내도록 설정하셨습니다. 그 결과 http_reqs 값이 1.66/s 가 나왔습니다. 이 값은 시스템의 대역폭 max값으로 이해해도 되나요?30명, 10초 설정값이 아니더라도 100명, 10초 설정값으로 진행해도 1.66/s 에 근사한 값이 나와야하는지 궁금합니다. (시스템이 처리할 수 있는 능력 의 Maximum은 항상 일정해야하지 않을까 라는 생각에 질문드립니다.)
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
cpu, memory 모두 100%를 치지 않았을 때 병목을 확인하는 방법
안녕하세요! 수업 잘 듣고 저희 서비스에서 테스트를 해보고 있습니다. duration 3m, target 500 으로 테스트를 해보았는데, 46TPS 정도 에서 병목이 생긴걸로 파악 했습니다. 다만 메트릭들을 확인해보니, ec2 메모리 사용률은 46% 정도고, CPU 사용율도 58% 정도며, DB 의 메모리도 충분히 남아있고, CPU 사용율도 59%정도로 여유가 있어보이는데요, 이 메트릭 외에도 병목을 확인할 수 있는 메트릭이 있을까요? 예시로 보여주셨던 걸로는 100% 에 가깝게 수치가 튀어야할거 같은데, 그정도가 아닌 상태에서 병목이 발생해서요!
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
ec2에 세팅을 하는이유
안녕하세요혹시 로컬 말고 ec2에서 세팅을 하는 이유가 있는지 궁금합니다
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
Jackson2JsonRedisSerializer에 대한 궁금증
GenericJackson2JsonRedisSerializer를 사용할 때 저장되는 캐싱 데이터는 다음과 같았습니다."[{\"@class\":\"org.example.package..\",\"id\":\"123984\",\"title\":\"title0123984\",...,강의상에 나온 데이터 순서?? 와는 조금 다르게 package 다음에 @class 이후 데이터가 저장되는 구조가 나오는 것을 확인했습니다.이때 캐싱된 데이터를 조회하려고 하는데 com.fasterxml.jackson.databind.exc.MismatchedInputException: Unexpected token (START_OBJECT), expected VALUE_STRING: need String, Number of Boolean value that contains type id (for subtype of java.lang.Object) 에러가 발생했습니다.너무 궁금해서 GenericJackson2JsonRedisSerializer에 대해서 알아보고 있는데, 여전히 에러가 발생하는 이유를 잘 모르겠습니다ㅜㅜ데이터가 캐싱되어서 저장될 때 구조가 다르게 들어가는 이유가 궁금합니다 아 물론 강의 후반부처럼 Jackson2JsonRedisSerializer를 사용했을 때는 정상적으로 동작했습니다.
-
해결됨비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
사용된 어노테이션에 관한 질문
5:12분경 createdAt에서 @CreatedDate를 제외한 나머지 어노테이션들을 특별히 사용하신 이유가 있으실까요?
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
Redis 사용 방식에 대해서 질문 있습니다
안녕하세요 레디스를 공부하면서 궁금한게 있습니다.제가 토이프로젝트를 하면서 상품 검색 입력시 버튼 하나씩 누를때마다(이벤트 keyup 사용) 백엔드와 통신하여 입력창 하단에 자동완성 기능창을 만들려고 하고 있습니다.아무래도 버튼 하나씩 누를때마다 통신해야되니 빠르게 통신해야될 것 같아서 redis를 사용했습니다.상품 등록할 때 DB와 redis에 저장하고 (redis에는 상품 이름만 저장했습니다.)입력창 하단의 자동완성은 redis를 통해 상품 이름을 출력하고 출력된 상품이름을 선택시 DB를 통해서 상품 상세정보를 가져오는 식으로 했는데배운대로라면 Cache Aside 전략과 다른데 이럴때는 어떻게 구성해야되나요?아니면 SQL 튜닝만 잘해도 굳이 redis는 필요없는건지 궁금합니다.아무래도 버튼 누를때마다 통신하다보니 SQL은 느릴까봐 싶어 조바심이 나네요ㅠㅠ 알아보니 최근검색어나 인기검색어 같은 경우도 redis로 한다고하는데 이런것들도 굳이 출력하자면 DB로만 사용하여 출력이 될텐데 이게 Cache Aside 전략과 어떤 관계가 있는지 감이 안잡힙니다실무뛰면서 redis를 써본적이 없고 거의 db로만 해결하다보니 redis 사용예시를 잘 모르겠습니다
-
해결됨비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
aws elasticcache redis 툴 접속.
안녕하세요. 강의 잘 들었습니다.강의를 듣다보니 의문이 드는 점이 있어 질문드립니다.redis를 사용하다 보면 redisinsight같은 gui 툴을 통해 데이터를 확인하는데 운영관점에서 더 편한데요.aws elasticcache redis가 외부 로컬에서 접속이 안되면aws elasticcache는 데이터 확인을 툴로 못하는건가요? 실무에서 운영을 하다보면 분명 직접 데이터를 체크를 해야하는 케이스가 발생하는데 이걸 일일이 cli 명령어 찾는다는 것은 돈을 주고 aws 사용하는 고객입장에서는 너무 불편하다고 생각들어 문의드립니다.
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
Redis를 사용하는 이유
캐싱을 위해 Redis를 많이 사용한다고 생각하고 있었는데 SQL튜닝으로 해결되는 부분이 있는거군요! 그러면 일반적으로 현업에서 Redis를 사용하는 이유 중 어떤 이유로 가장 많이 사용하는지 여쭤볼 수 있을까요??
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
로컬에서 docker compose 명령어 실행 시
로컬에서 docker compose up --build -d 명령어 실행 시 아래와 같은 에러가 발생합니다.Cannot connect to the Docker daemon at unix:///Users/milaju/.docker/run/docker.sock. Is the docker daemon running?따로 설정을 해줘야 하는 부분이 있을까요?