메뉴 건너뛰기

넷서버 사용 팁/강좌

Eurekalog같은 컴포넌트는 사용자프로그램상에서 에러가 발생하면 해당 위치를 추적하고 에러 로그나 리포트를 하기 편리한 컴포넌트들입니다.

하지만 이들 프로그램이 멀티스레드 서버프로그램과 같이 사용되면 심각한 성능 문제가 야기 될 수 있습니다.

TmThead = class(TThread)
  procedure Execute; override;
end;

procedure TmThead.Execute;
begin
  ...
  raise Exception.Create(' thread Error'); //예외 발생

end;



이런 스레드를 사용하는 경우 디버그컴포넌트를 사용하지 않으면 해당 예외는 프로그램에 영향을 미치지 않고 그냥 넘어가게 됩니다. 하지만 Eurekalog같은 디버그 컴포넌트를 사용하면 이 예외를 자신들이 받아서 처리하게 되고 설정에 따라 필요없는 메세지 윈도우를 나타내게 됩니다.

서버같은 멀티스레드프로그램의 경우 각 클라이언트가 연결된 소켓이 단선이 되거나 db서버의 연결이 단선되는 경우 예외가 발생하게 되는데 디버그컴포넌트를 사용하지 않으면 해당 스레드만 문제가 되므로 다른 클라이언트는 영향이 없습니다.
하지만 사용하게 되면 서버 프로그램에 성능에 막대한 영향을 미치게 되고 심하면 한 클라이언트의 문제로 인하여 프로그램전체가 다운되는 경우까지 발생하게 됩니다.
위로