묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
테스트에 대한 질문이 있습니다.
강의를 듣고 몇 가지 테스트의 시간을 재보고 있습니다.예를 들어서 해당 제품의 갯수가 1000개이고 동시에 접속한 10만명이 해당 제품 구매를 클릭한 경우,@BeforeEachpublic void before () {stockRepository.saveAndFlush(new Stock(1L, 1000L));}위의 코드로 1000개의 제품을 미리 등록을 하였는데10만명의 사용자의 경우threadCount를 10만으로 해놓으면 되는 걸까요?아니면 쓰레드 풀을 Executors.newFixedThreadPool(100000)으로 해두면 되는 걸까요?또 그렇게 Stock의 갯수를 늘리게 되었을 때에 비관적 락의 경우SQL Error: 0, SQLState: null 이런 에러가 발생합니다. 구글링 했을 때에 hikari에서 연결 가능한 커넥션이 없어서 그런다는데 hikari pool size를 늘리면 되는 문제인가요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
좋아요나 조회수 등 동시성 처리 질문입니다.
사용자가 많지 않고 일반 커뮤니티 같은 경우에는 좋아요 개수가 많이 몰릴 일이 없다고 생각해서 PessimisticLock을 적용하려고 합니다. 제가 생각했을 땐 인스타나 그런 대규모 사이트의 좋아요는 PessimisticLock을 적용하면 성능 저하가 뚜렷하게 나타난다고 생각합니다. -> 레디스 사용이 베스트토이프로젝트 규모의 SNS는 PessimisticLock으로 구현하는게 비용도 들지 않고 데이터 정합성이 보장된다고 판단했습니다.혹시 제가 틀린 거나 더 나은 방법이 있을까요?항상 감사합니다! 아 추가로 newFixedThreadPool은 왜 32로 설정하는지도 궁금합니다!!
-
미해결운영체제 공룡책 강의
chapter3. Processes(1) pid_t 정의되지 않은 타입
#include <sys/wait.h> 이 코드를 넣지 않으면 pid_t에 항상 아래의 오류가 뜨는데, 맞는건가요?Error: unknown type name 'pid_t'
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
동시성 프로그래밍으로 이미지 다운로더 개발
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 해당 강의에서 img_downloader 함수를 정의할 때 aiofiles의 용도가 무엇인가요?file.write을 할때 로컬에 저장하는것 같은데, 이때도 await을 사용하는 이유가 무엇인가요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
안녕하세요 강사님 save 메서드 사용 질문있습니다.
트랜잭션이 걸려있는 경우에stock.decrease(quantity)만 해줘도 영속성 컨텍스트에 있는 값을 가져와서 재고 감소가 가능한 걸로 아는데왜 save를 한 번 더 해주는 건지 이유가 궁금합니다.그리고 위에 제가 이해한 영속성 컨텍스트에 대한 내용도 맞을까요?
-
미해결운영체제 공룡책 강의
코드를 실행할 떄
새로운 환경에서 열려 내 파일 위치가 어딘지 알 수 있는 방법이 없습니다. 파일의 위치를 복사해도 실행이 안돼요 어떻게 하면 됩니가
-
미해결운영체제 공룡책 강의
wsl 오류
이런 오류가 뜨는데 뭐가 문제인건가요
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
lettuce 를 이용할떄 stockService의 decrease 메서드는 정확히 어떤걸 사용하면 되는건가요?
테스트 코드 실행시 계속 돌기만 하는데 어떤 decrease를 사용해야 하는걸까요??
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
맥 사용자가 아닌 윈도우 사용자 분들은 docker redis 설치 어떻게 하셨나요?
docker desktop , mysql은 별개로 설치 되어 있긴 한데docker desktop으로도 mysql redis 설치가능한건가요??ㅠㅠ
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
RedissonClient null
TC에 문제가 있어 디버깅을 해보니RedissonClient가 null이네요.기본 url에 port인데 왜 이럴까요? ㅠㅠ
-
미해결운영체제 공룡책 강의
ubuntu 에러가 뜹니다.
WslRegisterDistribution failed with error: 0x80370102Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS.For information please visit https://aka.ms/enablevirtualization이 에러가 뜨고 윈도우에 설치시 발생하는 오류(wslregisterdistribution failed with error: 0x80370102) 해결 (codeit.kr) 이 페이지에서 하라는대로 다 하고 bios 모드에서도 svm을 enabled 로 설정해주엇는데도 계속 같은 에러가 반복됩니다. 어떻게 해결할 수 있나요
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
테스트 실패 후 tryLock waitTime 설정 변경 뒤 테스트 성공에 대한 질문
waitTime을 10초로 설정했어도 leaseTime이 1이기 때문에 테스트는 성공했어야 할 것 같은데 왜 실패하나요?그리고 waitTime을 10초에서 15초로 변경하면 왜 성공하나요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
동시성 제어 방법 채택 순서
안녕하세요강의를 듣던 중 궁금함이 생겨서 질문드립니다.msa 환경에서, 레디스를 사용할 수 있는 상황이라면 레디스를 사용하는 것이 제일 좋은 방법인가요? 아니면 db락을 사용하는 것이 더 좋을 수도 있나요? 만약 db락을 사용하는 것이 더 좋을 수도 있다면, 그 상황은 어떤 상황이 있을까요?
-
미해결운영체제 공룡책 강의
멀티 프로세싱 vs 멀티 프로그래밍
멀티 프로세싱과 멀티 프로그래밍의 개념이 헷갈리네요..구글링을 통해 다수의 글을 확인했을 때, 수업 내용에서 말한 하나의 CPU에서 시분할을 통해 여러 프로세스의 실행하는 것을 멀티 프로그래밍이라 정의했습니다. 또한 멀티 프로세싱은 여러 개의 cpu가 서로 협력하여 여러 프로세스를 실행한다고 정의되어 있습니다. 수업 내용 그대로 이해하면 될 지 모호하네요.
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
session 을 닫아야 하는 이유
session 은 왜 닫아야 하나요? 파이썬 코루틴 활용 강의에서 with requests.Session() as session: session.get(url) 을 통해 session 을 열고 닫아야 한다고 하셨는데, 왜 session 을 닫아야 하는지 궁금합니다.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
계속해서 데이터가 줄지 않고 100개로 나옵니다.
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended2023-08-02T14:04:15.469+09:00 DEBUG 24388 --- [ main] org.hibernate.SQL : insert into stock (product_id,quantity) values (?,?)Hibernate: insert into stock (product_id,quantity) values (?,?)2023-08-02T14:04:15.723+09:00 DEBUG 24388 --- [ main] org.hibernate.SQL : select s1_0.id,s1_0.product_id,s1_0.quantity from stock s1_0 where s1_0.id=?Hibernate: select s1_0.id,s1_0.product_id,s1_0.quantity from stock s1_0 where s1_0.id=?2023-08-02T14:04:15.788+09:00 DEBUG 24388 --- [ main] org.hibernate.SQL : select s1_0.id,s1_0.product_id,s1_0.quantity from stock s1_0Hibernate: select s1_0.id,s1_0.product_id,s1_0.quantity from stock s1_02023-08-02T14:04:15.802+09:00 DEBUG 24388 --- [ main] org.hibernate.SQL : delete from stock where id=?Hibernate: delete from stock where id=? org.opentest4j.AssertionFailedError: Expected :0Actual :100 이유가 뭔지 잘 모르겠습니다. 코드도 아무리 봐도 같습니다 ㅠㅠ
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
facade 패턴 적용 및 service 에서 락 재흭득 처리 후 문제 질문
facade 패턴 적용에 대한 질문 강의를 듣고 facade 패턴에 대해서 조금 공부해봤습니다.강의에서 facade 패턴을 적용한 이유가 락 흭득 관련한 반복 로직을 service 레이어에서 분리하기 위함이라고 이해했습니다. 현재 service 레이어에는 메서드가 하나라서 facade 에 메서드가 하나인 것인가? 라는 생각이 들었습니다.1. 락 처리(동시성 문제 처리)를 하는 메서드만 facade 로 분리를 해주는 것인가요? 2. 아니면 service 레이어에 있는 모든 메서드에 대해서 facade 패턴으로 분리한 클래스에 메서드 호출을 넣어야하는 것인가요?만약 1번이 맞다면 컨트롤러에서 일반 service layer 와 facade 둘다 컨트롤러에서 의존성을 갖고 있도록 해야할텐데 이는 컨트롤러에에서 락처리를 하는 facade.decrease 와 stockService.decrease 둘다 참조 가능한 것이 이상하다는 생각이 들었습니다.---이와 별개로 facade 를 적용하지않고 service 에서 decrease 에 대해 락 흭득 재흭득 처리를 하면 단순하게 아래 처럼 처리 할 수 있다고 생각했습니다..그랬더니 동시성 문제가 해결되지 않고 테스트를 돌려보니 51 만큼만 감소가 이루어 지더라구요... 이유가 뭔지 궁금합니다.@Service public class OptimisticLockStockService { private final StockRepository stockRepository; public OptimisticLockStockService(StockRepository stockRepository) { this.stockRepository = stockRepository; } @Transactional public void decrease(Long id, Long quantity) throws InterruptedException { while (true) { try { Stock stock = stockRepository.findByIdWithOptimisticLock(id); stock.decrease(quantity); stockRepository.saveAndFlush(stock); } catch (Exception e) { Thread.sleep(50); } } } }
-
해결됨파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
sec3-2. robots.txt에 관한 질문입니다.
안녕하세요. 선생님. 각 웹사이트에서 크롤링에 대한 가능범위를 robots.txt에서 확인할 수 있다고 하셨습니다. robots.txt에 대한 부분을 확인할 수 있는 경우도 있지만 사실 robots.txt에 대해 명시하지 않는 사이트들도 많아서, 이런 경우에는 해당 웹사이트가 크롤링에 대해 어떤 스탠스를 취하고 있는지 어려운 경우가 있습니다.CU편의점 웹사이트는 Request Blocked 메시지를 띄운다던가, 어떤 웹사이트는 400번 에러를 내며 크롤링 가능범위를 보여주지 않습니다.이런 경우에는 웹사이트가 어떤 스탠스를 갖고 있다고 판단하면 될까요? 또한, 블로그와 같은 개인적인 공간에 특정 웹사이트를 크롤링하는 코드를 올리는 것은 문제의 소지가 있을까요?강의 감사히 듣고 있습니다. 감사합니다.
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
레디스 설정이 추가적으로 필요없는건가요?
도커를 통해 레디스 설치후 라이브러리 설정 외에 별로의 URL이나 주소를 매핑하지 않았는데 어떻게 자동으로 연결되는 걸까요 ?
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
프로젝트 관련질문
현재 몽고디비에 데이터가 잘들어가는지 확인하기 위해서 odmantic을 설치한 이후로 오류가 떴고이러한 오류가떴고 확인 해보니from odmantic import AIOEngine 문제라는 판단으로 pip install --upgrade odamantic을 했지만 별 효과가 없어서 문의하게되었습니다. 추가적으로 하다보니 init.py 이했을떄는 문제없고 mongodb.connect할 때 문제인데 mongodb의 연결문제라고 생각중입니다 Process SpawnProcess-1: Traceback (most recent call last): File "C:\Users\hs091\anaconda3\lib\multiprocessing\process.py", line 315, in _bootstrap self.run() File "C:\Users\hs091\anaconda3\lib\multiprocessing\process.py", line 108, in run self._target(*self._args, **self._kwargs) File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\_subprocess.py", line 76, in subprocess_started target(sockets=sockets) File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\server.py", line 61, in run return asyncio.run(self.serve(sockets=sockets)) File "C:\Users\hs091\anaconda3\lib\asyncio\runners.py", line 44, in run return loop.run_until_complete(main) File "C:\Users\hs091\anaconda3\lib\asyncio\base_events.py", line 642, in run_until_complete return future.result() File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\server.py", line 68, in serve config.load() File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\config.py", line 467, in load self.loaded_app = import_from_string(self.app) File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\importer.py", line 21, in import_from_string module = importlib.import_module(module_str) File "C:\Users\hs091\anaconda3\lib\importlib\__init__.py", line 127, in import_module return bootstrap.gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in gcdimport File "<frozen importlib._bootstrap>", line 1007, in findand_load File "<frozen importlib._bootstrap>", line 986, in findand_load_unlocked File "<frozen importlib._bootstrap>", line 680, in loadunlocked File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in callwith_frames_removed File "C:\Users\hs091\studyDs\teaching-async-python-main\6-실전-프로젝트-콜렉터스\app\main.py", line 5, in <module> from app.models import mongodb File "C:\Users\hs091\studyDs\teaching-async-python-main\6-실전-프로젝트-콜렉터스\app\models\__init__.py", line 2, in <module> from odmantic import AIOEngine File "C:\Users\hs091\anaconda3\lib\site-packages\odmantic\__init__.py", line 1, in <module> from .bson import ObjectId File "C:\Users\hs091\anaconda3\lib\site-packages\odmantic\bson.py", line 11, in <module> from pydantic.datetime_parse import parse_datetime File "C:\Users\hs091\anaconda3\lib\site-packages\pydantic\_migration.py", line 295, in wrapper raise PydanticImportError(f'`{import_path}` has been removed in V2.') pydantic.errors.PydanticImportError: pydantic.datetime_parse:parse_datetime has been removed in V2. For further information visit https://errors.pydantic.dev/2.1.1/u/import-error