Q&A

  • MIDAS 애플리케이션 서버 hang up 관련 질문
MIDAS Socket Connection을 이용하여 3-tier 시스템을 구성하였는데

Client 쪽에서 잘못된 query로 인하여 hang up 될 경우 애플리케이션

서버가 동시에 hang up되어 버립니다.



잘못된 query가 time out될때까지 애플리케이션 서버는 아무짓도 안합니다.



hang up이유는 애플리케이션서버가 접수된 query를 DB SERVER에게 질의요청한후

응답이 올때까지 기다리면서 hang up 현상이 발생하는 것으로 판단됩니다.



CLIENT가 DB query시 hang up 되더라도 애플리케이션 서버가 hang up되지 않도록 할 수 있는 방법이 있습니까?



위 문제에 대한 해결책을 알려 주시면 감사하겠습니다.



참고로 저는 ms sql server 7.0을 사용하며 BDE 5.10의 native db driver 를 사용하여

DB에 접근합니다.



1  COMMENTS
  • Profile
    김영대 1999.11.18 23:11
    이선진 wrote:

    > MIDAS Socket Connection을 이용하여 3-tier 시스템을 구성하였는데

    > Client 쪽에서 잘못된 query로 인하여 hang up 될 경우 애플리케이션

    > 서버가 동시에 hang up되어 버립니다.

    >

    > 잘못된 query가 time out될때까지 애플리케이션 서버는 아무짓도 안합니다.

    >

    > hang up이유는 애플리케이션서버가 접수된 query를 DB SERVER에게 질의요청한후

    > 응답이 올때까지 기다리면서 hang up 현상이 발생하는 것으로 판단됩니다.

    >

    > CLIENT가 DB query시 hang up 되더라도 애플리케이션 서버가 hang up되지 않도록 할 수 있는 방법이 있습니까?

    >

    > 위 문제에 대한 해결책을 알려 주시면 감사하겠습니다.

    >

    > 참고로 저는 ms sql server 7.0을 사용하며 BDE 5.10의 native db driver 를 사용하여

    > DB에 접근합니다.



    공포의 MIDAS...



    저도 프로젝트에 MIDAS socket을 사용했는데

    클라이언트수는 한 2000 명 정도 되었습니다

    당연히 Application Server인 NT 는 맥을 못 추더군요...



    NT서버의 작업 관리자를 이용해서 "응용프로그램"를 보시면

    아마 "응답없음"으로 나올겁니다... hang up 걸린 서버 프로그램이...

    이때는 어쩔 수 없이 "응답없음" 프로세스를 kill 하는 수밖에 없었습니다

    그래서 "응답없음" 프로세스를 감시하여 kill 하는 프로그램을 만들었는데

    이것도 근본적인 해결책은 아니었습니다

    지금은 엄청 비싼 Entera 미들웨어를 사용하고 있습니다...



    Windows 환경인 NT 의 멀티 프로세싱의 원리가 UNIX처럼

    time sharing이 아닌 message queue와 좀 이상한 thread 를

    이용하므로 클라이언트의 동시 사용자수가 한순간에 몰리게되면

    "응답없음"이 발생하고 또한 질문하신것처럼 클라리언트가 Query를

    잘못 사용하여 DB서버로 부터의 질의결과를 받지 못하게 되면

    그것도 "응답없음"이 됩니다



    혹시 kill하는 프로그램에 관심이 있으시면 아래를 참고해 보세요

    하지만 아래는 NT에서 현재 수행중인 프로세스 리스트 정보만 구할 수 있고

    "응답없음"을 알 수는 없는데 이것은 간단히 해당 프로세스의

    원도우 핸들을 구해서 PostMessage() 를 해봐서 결과를 돌려주지

    않으면 "응답없음"으로 간주하시면 됩니다





    Windows 95 에서 제공하는 Toolhelp32 (Unit TlHelp32)는 NT 에서 사용할 수

    없습니다

    소문으로는 NT5.0 에 Toolhelp32 를 넣는다고는 하는데...



    NT에서는 두가지 방법으로 프로세스 정보를 구할 수 있습니다

    첫째는 레지스트리의 HKEY_PERFORMANCE_DATA 섹션을 읽는 방법인데

    이것은 동적인 레지스트리라 regedit.exe 로는 볼 수 없고

    그것에 맞는 레지스트리 API 를 사용해서 접근할 수 있습니다

    제가 개인적으로 NT에서 프로세스 관리 프로그램을 만들때 처음에

    이 방법으로 했었는데 정보를 읽는 속도가 너무 느렸습니다

    이 방법보다는 아래 PSAPI.DLL 을 사용하는것을 추천합니다



    두번째 방법은 PSAPI.DLL 을 이용하는 방법입니다

    PSAPI.DLL 는 공식적으로 문서화 되어있지 않으며 PSAPI.DLL 이 시스템

    디렉토리에 없는 NT 버전(서비스팩)도 있습니다



    아래 사이트에 보시면 관련 콤포넌트와 PSAPI.DLL 이 있습니다

    http://www.wilsonc.demon.co.uk/delphi.htm <-- 추천

    http://www.santronics.com

    http://members.tripod.com/~aldyn/ <-- HKEY_PERFORMANCE_DATA 읽기 방식



    • 긴급
    • 1999.11.19 07:03
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 홍세비
      1999.11.20 05:23
      긴급 wrote: > 너무 초보적인 질문이라서 부끄럽지만 질문할께요. > sql문으로 데이터 삽입하려면 어떻게...
    • 안재현
      1999.11.19 08:00
      긴급 wrote: > 너무 초보적인 질문이라서 부끄럽지만 질문할께요. > sql문으로 데이터 삽입하려면 어떻게...
    • 강성만
    • 1999.11.19 06:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.11.19 18:31
      강성만 wrote: > 안녕하세요 > Edit 컴포넌트를 사용하여 자료를 입력받거 있거든요 그런데... > > va...
    • 안재현
    • 1999.11.19 05:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박성훈
      1999.11.19 19:53
      안재현 wrote: > 나원용 wrote: > > 안녕하세요? > > > > 사용자가 버튼(Tbutton)을 클릭하였을 때 ...
    • 이정욱
      1999.11.19 05:57
      이곳 한델에 락을 푸는 풀그림이 있습니다. 확인해 보세요. 이영근 wrote: > 제목 그데로 데이타에 Lo...
    • 지나가는이
      1999.11.19 05:22
      하이텔의 VTOOL동호회의 자료실에 암호걸린 파라독스테이블을 볼 수 있는 유틸리티가 있습니다. 이영근 ...
    • 강민주
    • 1999.11.19 02:45
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 염재민
      1999.11.20 11:39
      강민주 wrote: > 안녕하세요. > 빌더소스를 델파이 바꾸면서 이상하게 않되는 부분이 있어서 > 이렇게 ...
    • 안재현
      1999.11.19 05:10
      강민주 wrote: > 안녕하세요. > 빌더소스를 델파이 바꾸면서 이상하게 않되는 부분이 있어서 > 이렇게 ...
    • TeamX
      1999.11.19 03:47
      제가 보기에는 굉장힌 찾기 힘든 버그인것 같습니다..... 흠... 아무래도 제가 보기에는 서점에 가셔서 ...
    • 까비
    • 1999.11.19 02:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.11.19 18:34
      까비 wrote: > inc 파일이 include file 듯 싶은데 > inc 파일에 대해 참고할만 사이트나 책좀 > 아니...
    • 정종구
    • 1999.11.19 02:10
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 안재현
      1999.11.19 02:25
      정종구 wrote: > 안녕하세요.. > 아주 이상한 현상에 말려서.. > > 예를 들자면.. > > query1.clo...
    • 정종구
      1999.11.19 03:13
      안재현 wrote: > 정종구 wrote: > > 안녕하세요.. > > 아주 이상한 현상에 말려서.. > > > > 예를 ...
    • 안재현
      1999.11.19 05:13
      정종구 wrote: > > 안재현 wrote: > > 정종구 wrote: > > > 안녕하세요.. > > > 아주 이상한 현상에 ...
    • 정종구
      1999.11.19 18:59
      안재현 wrote: > 정종구 wrote: > > > > 안재현 wrote: > > > 정종구 wrote: > > > > 안녕하세요.. ...
    • 정종구
      1999.11.19 18:59
      안재현 wrote: > 정종구 wrote: > > > > 안재현 wrote: > > > 정종구 wrote: > > > > 안녕하세요.. ...
    • 델초
    • 1999.11.19 01:28
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김남규
    • 1999.11.19 00:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.11.19 01:00
      김남규 wrote: > > WINDOWS NT 4.0 에서 NT 를 프로그램 내에서 종료 시키고 싶은데 > > 방법을 없...
    • psb300
    • 1999.11.19 00:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.11.19 01:08
      psb300 wrote: > 안녕하십니까? > 퀵리포트에서 도형을 그리다 보니 삼각형 도형이 없던데 > 해결 방안...
    • 안재현
      1999.11.19 01:59
      정연섭 wrote: > 매일 이렇게 질문만 하는군요.. > 어젠가는 나도 대답할수 있는 그날이 오겠죠.. > >...
    • 김영대
      1999.11.18 23:29
      nektar wrote: > 안녕하세요 > memo란에서 10자가 입력되면 자동으로 다음줄로 이동할수 있는방법? > 두...
    • 류한규
    • 1999.11.18 22:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • TeamX
      1999.11.18 22:18
      폼의 WM_ERASEBKGND 를 가로채면 안될것 같고..... 제가 보기에는 판넬의 WM_ERASEBKGND 메세지를 가로...
    • chobo
    • 1999.11.18 21:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍순용
      1999.11.18 22:47
      다른폼에 있는 버튼을 사용하려면 버튼 앞에 폼이름을 스세요. 예를 들어 form2에 있는 라디오버튼 체크...
    • 이선진
    • 1999.11.18 21:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.11.18 23:11
      이선진 wrote: > MIDAS Socket Connection을 이용하여 3-tier 시스템을 구성하였는데 > Client 쪽에서 잘...