모르는 상태에서 오픈하냐 말것인가 그것이 문제로다 ㅠ.ㅠ
글쓴이: emptynote / 작성시간: 화, 2019/04/30 - 4:00오후
데이터 송수신 세상은 참으로 오묘하네요.
웹에서 echo 메시지 페이지 요청하면
발로 짜서 로컬 연결임에도 불구하고
에코 메시지에 대한 속도가 0 milliseconds 가 안나온다고 위로(?) 하고 있지만
도스창(?) 열고 쓰레드 3개쯤 열어 무한 루프로 지속적으로 요청을 하면 이게 왠일로 200 ~ 350 microseconds 가 나오고 그 상태에서 다시 웹에서 echo 메시지 페이지 요청하면 응답 속도가 대략 600 microseconds 가 나오니
기가 막히고 코가 막히네요.
쓰레드가 잠들었다가 깨어나는것 없이 쉬지 않고 계속 일하기 때문이라고 추정을 하지만
어디까지나 제 생각일뿐 진실은 잘 모르겠습니다.
왜? 이런건지 모르는 상태로 오픈해도 될지 고민이 됩니다.
Forums:
오픈하냐 안 하냐 그게 중요한게 아닙니다.
오픈하냐 안 하냐 그게 중요한게 아닙니다.
a 값이 나오길 예상했는데 b 값이 나오면 그 원인을 파악하는 것이 중요합니다.
스레드 생성/삭제 무한루프를 돌리면 결과가 그렇게 나올 수도 있죠.
웹 페이지 생성 소요 시간도 고려해야할 것이고,
예를 들어, 동기 통신을 하면, A는 클라이언트, B는 서버.
t1: A --> B
t2: B 가 웹 페이지 생성하는 시간
t3: B --> A
T = t1 + t2 + t3
동기 통신일 때, A 는 T 시간 동안 블럭됩니다. 그래서 클라이언트 본체에서 A 를 스레드로 돌리는 방법도 고려할 수 있고, 네트워크 지연을 감안하면 비동기 통신이 유리할 것 같고, 상황에 따라 동기/비동기 섞어쓰면 좋겠네요.
B는 요청을 받으면 스레드 생성하여 처리하거나 포크를 하는 등 여러 방법이 있을 것입니다.
메시지 큐도 활용도 검토해 볼 수 있겠네요.
비동기, 스레드 도입하면 메시지 순서가 뒤바뀌는 일이 발생할 수 있습니다.
메시지에 시간을 찍어서(timestamp) 재정렬하는 방법도 고려해야 할 것입니다.
호기심을 자극하는 굉장히 재미있는 주제인데, 머리카락 빠질까봐 저는 사양합니다.