linux에서 프로세스별 socket descriptor 할당시 중복되는 현상
제가 LINUX(CentOS release 6.5 (Final))에서 Thread pool방식으로 프로세스를 구성하였습니다.
CLIENT가 하루 3백만건 이상 접속, 1초에 약 200건이상 접속되는 서버프로세스를 서비스중에 있습니다.
문제되는 부분이 있어 고수님들의 의견을 여쭙니다.
1. A 프로세스
가. TCP Server Process로써 Server port를 listen중에 있습니다.
나. Client에서 접속시 accept()후 생성된 ad값을 B 프로세스에게 전달 합니다.(sendmsg()사용,MSG_DONTWAIT, Unix Domain Socket이용)
2. B 프로세스
가. MAIN Process로써 Thread pool를 생성하여 놓고,
나. MAIN Thread에서 recvmsg()사용하여(MSG_DONTWAIT, Unix Domain Socket이용) 통해 ad값을 전달 받습니다.
다. 전달받은 ad값을 개별Thread에게 할당시키고
라. 개별 Thread는 클라이언트와 ad값을 통해 요청/응답DATA를 수신 및 전송 합니다.
여기서 문제는 B프로세스 나.시점(recvmsg()) 후 생성된 ad값이 중복으로 생성됩니다.
즉, 최초 16시00분00초에 ad값이 '41'발생되었다면 약 2초 후 다른 클라이언트 접속임에도 ad값이 '41' 같은 값이 리턴됩니다.
질문1) 이런 현상이 발생될 수 있는지요?
질문2) Application에서 방어하는 로직 또는 제 프로세스 구성에 문제가 되는 부분이 있는지요?
친절한 답변 부탁드립니다.
댓글 달기