C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[20839] 소켓 프로그램을 돌리다가 이상한 현상이 발생해서 글을 올립니다.
나우시카 [nawusika] 722 읽음    2002-08-16 20:37
bcbdn에 글도 올리고 하는 일반 초보 프로그래머(실은 코더)입니다.

제가 소켓 프로그래밍으로 밥벌이를 시작한지 1년이 다 되어가는데

이상한 현상이 발생이 되어서 이렇게 글을 남기게 됩니다.

이 문제에 대해 주위에 요청할 곳이 없어서 말입니다. ( __);

일반 인트라넷에서 사용하는 게이트웨이서버의 소켓 프로그래밍에서는 문제가

안되었지만 Web과의 연동에서 부터 문제가 시작됩니다.

먼저 망의 개요는 이렇습니다.

Web요청,망내(인트라넷 내의)의 요청 -> 게이트웨이 -> 전용라인원격서버들 -> 게이트웨이 -> Web요청,망내(인트라넷 내의)응답

이렇게 한 루틴입니다. 게이트웨이 소켓 프로그램은 말 그대로 요청 받은 데이터를 던져주고 결과를 다시 받아와서 요청자에게 돌려주는 일이 기본적인 역활입니다.

여기서 메인 데몬의 구성은 이러합니다.

외부 요청 -> main.exe->Sub_server.exe->서버요청후응답->Sub_Server.exe->main.exe->외부응답

main.exe = 외부 요청의 전문을 파악하여 알맞은 Sub_server.exe와 통신후 결과를 받아 응답

Sub_server.exe =main.exe에서 받은 데이터로 서버들과의 통신 후 결과를 다시 main으로 전달
(Sub_server.exe는 다수의 개수로 각각의 특정 원격서버들과 1:1통신을 합니다.)
(디버깅이 힘들어서 따로 main,sub_server이렇게 따로 만들었습니다.)

게이트웨이 프로그램의 기본 절차

main()
{
while(1)
{
select
accept
recv
CreateThread()
}
}
Threadfn()
{
send
recv
send//main에서 받은 소켓으로 다시 send
}

모든 main이나 sub_server의 프로그램은 저러한 방식으로 처리가 되어있습니다.
서로 중간자 역활만 수행을 합니다.
그러나 문제는 Web사용자가 급증하면서 일이 커지기 시작했습니다.
Main이 데이터를 받아오고 Sub_server로 주는 과정까지는 괜찮으나
Sub_Server들이 외부원격서버들과 통신을 하는 과정에서 오동작을 일으킵니다.
그러면서 쓰레드당 VM과 메모리사용량이 평균적으로 폭발적으로 증가하면서
서버가 멎습니다.

껐다켜도 같은 현상이 일어납니다.

평소에 잘 되다가 한번 위의 상황이 일어나면 껐다켜도 같은 결과가 벌어집니다.

OS(NT쓰다가 2000Server로 바꿈 상태는 같음)를 다시까는 사태가 발생합니다.

현재 다시 깔았지만 또 같은 현상입니다.

한번 사용자가 폭등하면 그걸로 끝이 납니다. 복구가 안됩니다.

이런 경우를 경험하신 분들이나 조언 해주실분.. 글 남겨주십시오. (_ _) 꾸벅





+ -

관련 글 리스트
20839 소켓 프로그램을 돌리다가 이상한 현상이 발생해서 글을 올립니다. 나우시카 722 2002/08/16
20869     Re:소켓 프로그램을 돌리다가 이상한 현상이 발생해서 글을 올립니다. 유영인.Chris 954 2002/08/19
20875         Re:Re:소켓 프로그램을 돌리다가 이상한 현상이 발생해서 글을 올립니다. 나우시카 724 2002/08/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.