libevent 사용시 hang 이 발생하는 이유는????
글쓴이: trymp / 작성시간: 수, 2012/10/10 - 7:14오후
환경: ubuntu 2.6.38-8-generic linux
위의 상태에서 socket listen() 을 하는 프로그램을 만들었습니다. (libevent-2.0.19-stable 사용)
그냥 accpet() 를 하고 close() 로 바로 끊는 프로그램인데요..
다수의 client 에서 무한 loop 에서 connect() 를 시도했습니다.
그래서 많은 양의 TCP connect 가 생기고 끊기도록 해 놓았습니다.
근데 한 1~2분 정도 돌리니까 hang 이 생깁니다.
debug용 printf 을 찍어 놓았는데, 5~10초간 멈추었다가 다시 또 진행합니다.
이러한 현상이 잘 일어나고요..
이게 libevent 가 안 좋아서인지 아니면 다른 문제가 있는 것인지 궁금합니다.
간략하게...
base = event_base_new(); sin.sin_family = AF_INET; sin.sin_addr.s_addr = htonl(INADDR_ANY); sin.sin_port = htons(30000); listener = evconnlistener_new_bind(base, accept_cb, NULL, LEV_OPT_CLOSE_ON_FREE|LEV_OPT_REUSEABLE, -1, (struct sockaddr*)&sin, sizeof(sin)); accept_cb() 에서 -> close(sockfd)
위와 같이 했다고 왜 hang 이 생기죠..???
고수님들의 조언 부탁드립니다.
Forums:
혹시
커널에서 생성할수 있는 최대 커넥션 수를 초과한건 아닐까요??
netstat 명령어로 확인해 보세요..
댓글 달기