#thread

질문 2
해시태그 없이 키워드만 일치하는 질문은 개수에 포함되지 않아요.

한 달 전 · 원승현 님의 질문

웹소켓 + Stomp로 채팅 기능을 구현하며

RabbitMQ를 도입하였습니다. 도입의 이유는 스프링 내장 메시지 브로커를 이용하게 되면 인메모리 기반의 동작 방식으로 인해 서버 문제 발생 시 메시지가 유실되거나 확장에도 제한이 있다고 판단하여 도입하였습니다. 현직자 분들이 보기에 이 이유가 적합한 근거가 될까요? 추가로 JMeter로 RabbitMQ를 사용했을 때와 사용하지 않았을 때의 성능을 비교했는데 사용자 100명 기준 성능도 사용하지 않았을 때가 우세했고, RabbitMQ를 사용했을 때는 오히려 아래와 같은 오류가 가끔 발생하며 메시지또한 약 90퍼센트 정도만 저장된걸 확인할 수 있었습니다. 무엇이 문제이며 해결 방안이 있을까요?? java.net.SocketException: Connection reset at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:394) ~[na:na] at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:426) ~[na:na] at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255) ~[netty-buffer-4.1.114.Final.jar:4.1.114.Final] at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) ~[netty-buffer-4.1.114.Final.jar:4.1.114.Final] at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:356) ~[netty-transport-4.1.114.Final.jar:4.1.114.Final] at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) ~[netty-transport-4.1.114.Final.jar:4.1.114.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) ~[netty-transport-4.1.114.Final.jar:4.1.114.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[netty-transport-4.1.114.Final.jar:4.1.114.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[netty-transport-4.1.114.Final.jar:4.1.114.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[netty-transport-4.1.114.Final.jar:4.1.114.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.114.Final.jar:4.1.114.Final] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.114.Final.jar:4.1.114.Final] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.114.Final.jar:4.1.114.Final] at java.base/java.lang.Thread.run(Thread.java:842) ~[na:na]

개발자

#채팅

#구현

답변 0

댓글 0

조회 52

4달 전 · Supernova 님의 새로운 답변

커리어리 개발툴은 뭘로 만들어졌을까요, 서버 최적화 방법 질의

커리어리 웹뷰는 뭘로 만들어졌나요 ? 우연히 커리어리를 알게 되어서 사이트를 구경하던중 글 남깁니다. 저는 올해 40세이고 취미로 코딩을 배우면서 현재는 메타의 threads 와 비슷한 웹뷰를 만들고 있습니다. 독학으로 배우다보니 깊이가 없어서 한계에 직면해 있는거 같아요. 커리어리에서 스크롤을 내리다보면 딜레이 없이 페이지들이 거의 무한으로 내릴 수 있던데 기술적으로 그게 참 궁금하고요. 게시글을 포스트 했을때도 거의 딜레이 없이 게시물 업데이트가 되더라구요. 저 같은 경우에는 Next JS 로 웹뷰를 구성했고 database 는 vercel neon (무료버전. 서버는 싱가폴위치) Image 는 uploadthing (100GB 유료걸제 10$. 서버는 한국) 게시글 post 시에 단순 텍스만 입력을 하더라도 업로드 되고 화면에 뿌려지는데 2~3초의 딜레이가 발생합니다. database 가 무료 버전에 싱가폴에 있어서 반응이 느린건지 코드 최적화가 문제인지 모르겠습니다. 제가 테스트중인 사이트 주소는 아래와 같습니다. https://newchat-omega-inky.vercel.app/ 게시글 업로드 속도만 높일 수 있다면 정말 좋을 거 같은데 뭔가 벽에 막힌거 같습니다 ㅜㅜ

개발자

#커리어리-개발툴

#서버최적화

답변 1

댓글 0

조회 85

6달 전 · 익명 님의 질문

OAuth2 + jwt 환경 부하 테스트 방법에 대한 질문..

최근 성능 테스트의 중요성에 대해 알게 되어서 목표 성능치를 두고 부하테스트를 진행해보려는 계획에 있습니다! 테스트 툴로는 nGrinder를 사용할 생각인데요, 문제는 제 서버가 이메일 로그인을 지원하지 않고 oauth2와 jwt를 활용한 인증/인가 방식을 사용하는데 부하테스트 시 가상 유저에게 어떻게 accessToken을 발급해주어야 하는지에 대한 궁금증이 생겼습니다..! 제가 생각해본 방식들은 다음과 같습니다. 1. 실제 유저에 대한 accessToken을 하나 발급해두고 이를 고정값으로 사용한다. - 이 방식은 제일 편하지만 사실상 한명의 유저에 대한 시나리오만 테스트할 수 밖에 없고, 같은 유저에 대한 각종 캐싱된 데이터들로 인해 실제 상황과는 동떨어진 작업이 될 것 같아 채택하지 않았습니다. 2. FakeAuthServer와 같은 가상의 OAuth 서버를 만들어 로그인을 시도한다. - 구현하기는 어려워보이지만 그나마 가장 실제 서비스와 동일한 형태입니다. 하지만, 제가 테스트하려는 시나리오는 여러 요청에 대한 순차적인 테스트가 아닌 하나의 API가 얼마나 많은 부하를 견딜 수 있는지 보기 위한 테스트라서 굳이 로그인 과정을 테스트에 포함시킬 필요는 없어보입니다.. - 사실 하나의 API에 대한 테스트만 진행해도 괜찮은지 몰라서 이 방법을 버리지 못하고 있습니다 3. nGrinder의 테스트 스크립트에서 @BeforeThread에 jwt를 발급받는 로직을 작성해서 테스트 전 미리 토큰을 발급받아 요청한다. - 이 방식은 로그인 과정은 포함되어 있지 않고 이미 토큰을 발급받았다는 가정하에 하나의 API만 테스트하기 가장 적합한 방법이라고 생각이 되었습니다. - 번거롭지만 jwt를 직접 생성해주기 위해 jjwt 라이브러리를 nGrinder에 포함시켜야 될 것 같습니다 - 하지만 이렇게 스크립트에서 토큰을 발급해주는게 맞는지 실무에서도 이런식으로 사용하는 경우가 있는지 궁금합니다.. 처음 부하 테스트를 적용하려고 하는데 oauth2 + jwt로만 구성된 예제가 보이지 않네요 ㅠㅠ 어느 방법이 가장 적절한지 혹은 더 나은 방법이 있는지 조언을 구하고자 질문 남깁니다!

개발자

#ngrinder

#oauth

#jwt

#부하테스트

#성능테스트

답변 0

댓글 0

조회 97

7달 전 · 프레드윰 님의 새로운 답변

중국 유학생이 한국에서 Java 개발 직업을 찾으려면 어떻게 해야 하나요?

안녕하세요, 저는 중국에서 온 유학생입니다. 25년 2월에 졸업 예정입니다. 한국에서 Java 백엔드 개발자 직업을 찾고 싶습니다. 현재 개인적으로 진행한 프로젝트가 두 가지 있습니다. 프로젝트 1: Hash 해시 알고리즘을 기반으로 한 데이터베이스 라우팅 컴포넌트 프로젝트. 사용한 기술 스택: Springboot, MySQL, ThreadLocal, Mybatis, AOP 어노테이션. 프로젝트 2: 커뮤니케이션 플랫폼 시스템. 사용한 기술 스택: Springboot, Redis, Kafka, MySQL, ElasticSearch, Spring Security. 이 프로젝트들이 한국의 Java 개발 직무와 부합할까요?

개발자

#java

#springboot

#kafka

#신입-개발자

#개발자

답변 1

댓글 0

조회 83

일 년 전 · 다혜 님의 질문

POST Body 가 간헐적으로 잘려서 들어옵니다.

App (react-native) 에서 RNFS 로 여러장의 이미지를 base64로 변환하여 post body 에 넣어 요청을 보냅니다. 하지만 간헐적으로 서버 (spring boot) 에서 post body 가 잘려서 들어오고 EXCEPTION : org.springframework.http.converter.HttpMessageNotReadableException ERROR MESSAGE : JSON parse error: java.io.EOFException 아래와 같은 에러가 발생합니다. 동일 이미지들을 다시 base64로 변환하여 요청하면 대부분 성공합니다. 어떤 문제일까요? spring boot yml 에는 아래와 같이 설정해두었습니다. server: port: tomcat: connection-timeout: 1800000 max-http-post-size: 100MB max-swallow-size: 100MB threads: max:

개발자

#react-native

#spring-boot

답변 0

댓글 0

추천해요 1

보충이 필요해요 1

조회 128

일 년 전 · 정현석 님의 새로운 답변

파이썬 실시간 영상 스트리밍 관련 질문입니다!

안녕하세요 선배님들 도움을 받고자 이렇게 글 남겨봅니다! 현재 IP 카메라를 이용해서 실시간으로 영상 데이터를 받고 파이썬의 opencv 를 이용해 영상을 웹화면에 띄워주기 위한 프로그래밍을 하고 있습니다. 영상은 송출이 되는 상황인데 문제는 해당 사람을 촬영한다고 가정했을때 사람이 팔을 들어 올리는 장면이 있으면 대략 6초~8초 뒤에서야 웹에서 보여지는 영상에 사람이 팔을 들고 있고 그것도 자연스럽게 보이는게 아니라 프레임이 끊기면서 보이는 문제가 있습니다.. 코드 흐름 자체는 opencv 를 통해서 영상 데이터 받고 데이터 전처리 후처리 작업을 하고 처리 된 데이터를 Thread 를 이용해서 queue에 넣고 사용하는 방식으로 처리하고 있습니다. 혹시나 데이터 전처리 후처리하는 작업과정에서 처리 비용이 많이 드는건가 싶어서 일반 저장된 영상으로 테스트를 해봤는데 저장된 영상은 정상적인 속도로 나오고 있는 상황입니다. 이럴때는 보통 어떻게 해결하시는 지 알려주시면 감사하겠습니다!!

개발자

#python

#opencv

#이미지-프로세싱

#rtsp

#실시간-스트리밍

답변 1

댓글 0

조회 242

일 년 전 · 포크코딩 님의 새로운 답변

Jmeter 동시성 테스트 관련 질문입니다.

컴퓨터 1대로 Jmeter와 로컬 환경에서 서버를 띄우고 주문 -> 결제 -> 재고량 감소 API 테스트를 하려고 하는데 궁금한 점이 있어 질문드립니다. (간단한 사이드 프로젝트 수준 입니다.) 기술 스택 : Java, Spring Boot, JPA, MySQL, OpenFeign 사용자 10000명이 동시에 주문 또는 결제하는 테스트 시나리오에 대한 결과를 보고 싶은데 컴퓨터 성능의 이슈로 Dead-Lock이 발생합니다. 쓰레드 수를 늘려가며 에러율을 모니터링 한 결과 최대 500개까지는 Dead-Lock이 발생하지 않습니다. 동시에 10000개의 쓰레드를 감당하려면 어떤 부분을 고려해야 할까요? 스펙상 불가능하다면 10000명의 동시성 테스트를 대체하기 위해 어떻게 테스트 시나리오를 다시 짜야될까요? Jmeter의 Number Of Threads, Ramp - up period, loop - count를 어떻게 조정해야 할까요? 도와주시면 감사하겠습니다 ㅜ

개발자

#java

#spring

#mysql

#jpa

답변 1

댓글 0

추천해요 1

조회 193

일 년 전 · 장성호 님의 새로운 댓글

mvc api 호출 시 thread 상태에 대해서 궁금한 점이 있습니다..

스프링에서 api를 호출할 때 어떤 일이 발생하는지 RestTemplate 사용하여 테스트를 해보았습니다. 제 예상으로는 api를 호출하게 되면 io 작업이 발생하여 컨텍스트 스위칭 작업이 발생하여 호출한 쓰레드는 응답이 올 때 까지 blocking 상태를 유지할 것이라 판단하였습니다. 하지만 VisualVM을 사용하여 모니터링 해본 결과 park 상태로 유지되던 쓰레드가 running상태로 바뀌며 해당 api의 응답이 올 때까지 running상태로 유지되고 있음을 확인하였습니다. (응답 속도가 빨라 5초간 sleep 후 응답하는 api를 호출) 실제로 block이 일어나지 않은 것인지 아니면 실제로 컨텍스트 스위칭이 발생한 것은 커널레벨 쓰레드 쪽이라 visualVM이 이를 캐치하지 못한것인지.. (하지만 자바에서는 유저레벨 쓰레드와 1대1 매칭이 된다고 알고 있는데.. 유저 레벨 쓰레드에도 영향이 있을 것이라 생각합니다.) 머리 속이 너무 혼란스럽네요ㅜㅜ 어떤 부분을 공부하면 될지 키워드라도 알려주실 수 있나요?

개발자

#spring

#thread

#blocking

#nonblocking

#api

답변 1

댓글 2

조회 331

2년 전 · 성원 님의 답변 업데이트

react-native에서 shadow thread가 무엇인가요?

react-native의 동작 원리를 공부하다가 shadow thread라는 개념을 접했습니다. 제가 본 글에서는 1) App 시작, 메인 스레드 실행 2) 메인 스레드가 JS 번들 로드 3) JS로딩이 성공하면 React를 렌더링하고 버츄어돔 생성 4) 버츄어돔을 Shadow thread로 보냄 5) 레이아웃 계산이 끝나면 메인 스레드로 다시 보냄 6) 메인 스레드가 UI를 그리고 비즈니스 로직 실행 여기서 버츄어돔을 Shadow thread로 보낸다고 하는데 Shadow thread는 어떤 역할을 하나요?

개발자

#react

#react-native

답변 1

댓글 0

추천해요 2

조회 311

2년 전 · 커리어리 Q&A 운영자 님의 새로운 댓글

node js 논블로킹이란?

node를 공부하고 있는 학생입니다. node.js는 single thread, non blocking 언어다라고 설명하는 글을 자주 접할 수 있는데 여기서 non blocking이 정확히 어떤 것인지 궁금합니다. 대부분 예시로 코드에서 파일을 읽거나 API 요청을 말하고 있는데, 이게 왜 non blocking인가요? 단순히 파일을 읽거나, API 요청을 보낼때 그걸 실행 시켜놓고 다른 코드 작업을 이어갈 수 있어서인가요?

개발자

#node.js

답변 1

댓글 1

추천해요 1

조회 170