[Network] 소켓의 listen queue 사이즈 조정하기
[ CnUnix ] in KIDS
글 쓴 이(By): terzeron (microkid)
날 짜 (Date): 2000년 11월 2일 목요일 오후 10시 43분 44초
제 목(Title): [질문] listen queue
socket 프로그래밍에서 서버가 request를 다 받아들이지 못해서 커넥션이 끊기는 일이 자주 발생해서 server쪽의 listen코드의
backlog를 5에서 50인가 60쯤으로 증가시켰습니다. 처음에는 1024로 늘렸었는데, 날이 갈수록 맛가는 증상이 나타나서 다시 50쯤으로 낮춰잡았습니다. (시스템 리소스를 다 잡아먹고 no more process가 되는 증상이 나타나는데 직접적인 연관이 있는지 모르겠습니다. 프로세스는 실행하고 다 죽는데 말이죠.)
backlog를 보통 5로 추천하는데, 서버 프로세스가 하나라고 가정할 때(DB서버거든요) backlog는 어떤 의미를 가지는지 어떤 범위에서 설정되어야 하는지 설명 좀 부탁드립니다.
Stevens의 Network Programming책 초판에는 단지 5로만 적혀있고 second edition에는 backlog를 늘려가며 request queue에 얼마까지 쌓이는지 표로 정리한 게 있던데, 거긴 기껏해야 34개가 queued된다고 나오는 것 같더군요. 저는 50개에서 60개 정도의 request가 queue되었으면 하고 바라거든요.(성능 평가때문에) 실험을 해봐도 대충 30개 요청까지는 성능이 좋아지다가 35개 쯤에서 성능이 뚝 떨어지는 경향이 있더라구요.
이와 같은 경험을 해보신 분들의 조언과 지도를 기다리겠습니다.
[ CnUnix ] in KIDS
글 쓴 이(By): unixboy (가을세탁소)
날 짜 (Date): 2000년 11월 3일 금요일 오후 10시 45분 10초
제 목(Title): Re: [질문] listen queue
listen queue 를 변경하시려면 backlog를 늘이기보다는 그냥 raw socket implementation하는 것을 권해드립니다. 저도 그걸 해본적이 있는데 몹시 불안하던데요. 그냥 raw socket으로 API를 구현했어여.
[ CnUnix ] in KIDS
글 쓴 이(By): terzeron (microkid)
날 짜 (Date): 2000년 11월 4일 토요일 오후 12시 10분 19초
제 목(Title): Re: [질문] listen queue
감사합니다.
하지만 제가 소켓을 구현할 능력이나 시간이 없군요. 어차피 대형 사이트에서도 동시에 request를 날리는 정도가 20-30정도라서 30정도면 넉넉하다고 하더군요.