프로그램이 죽는 문제로 지금 거의 3주째 씨름 했는데,원인을 밝혀 냈습니다.
바로 데이타 베이스 부하 문제더군요.
데이타 베이스로는 SQL 서버를 사용하고 있으며,
프로그램에서는 거의 1분에 2000건의 query(SELECT,INSERT,UPDATE) 가 발생하는데
만약 이 이상 1분에 약 3000건 이상이 발생하면 프로그램이 아무런 에러 메세지도 없이
죽어버리네요.
전에는 ADO COMPONENT 사용하여 프로그래밍 했는데 그때는 훨씬더 빨리 죽더라구요.
그래서 BDE로 바꾸었는데 전보다는 낫지만 그래도 죽어요.
그런데,이상한것이 에러 메세지나 어떠한 경고도 없이 프로그램이
프로그램이 종료 된다는 것인데, 죽겠네요.
프로그램은 약 56개의 멀티 쓰래드가 돌면서 각각 INSERT,UPDATE 등을 하는 방식인데
제가 의심되는 부분은 너무 동시에 쓰레드에서 QUERY를 걸면 그렇게 되는것이 아닌가 생각이 되는데요.
제발 도움좀 주세요.
전국에 백여개의 지점을 가지고 영업을 영위하는 은행과 같은 서버가 아니면 그정도의 쿼리를 사용하지 않을 것 같습니다.
(100 * 20(지점당 평균 터미날수-실제 동시 사용은 이보다 훨씬 적음))
서버사양을 엄청나게 올리는 것 외에는 방법이 없을 것 같습니다. 메인프레임이 아닌 일반 PC서버에서는 감당하기가 힘든 사양인 것 같네요.
이성윤 wrote:
> 프로그램이 죽는 문제로 지금 거의 3주째 씨름 했는데,원인을 밝혀 냈습니다.
> 바로 데이타 베이스 부하 문제더군요.
>
> 데이타 베이스로는 SQL 서버를 사용하고 있으며,
> 프로그램에서는 거의 1분에 2000건의 query(SELECT,INSERT,UPDATE) 가 발생하는데
> 만약 이 이상 1분에 약 3000건 이상이 발생하면 프로그램이 아무런 에러 메세지도 없이
> 죽어버리네요.
>
> 전에는 ADO COMPONENT 사용하여 프로그래밍 했는데 그때는 훨씬더 빨리 죽더라구요.
> 그래서 BDE로 바꾸었는데 전보다는 낫지만 그래도 죽어요.
>
> 그런데,이상한것이 에러 메세지나 어떠한 경고도 없이 프로그램이
> 프로그램이 종료 된다는 것인데, 죽겠네요.
>
> 프로그램은 약 56개의 멀티 쓰래드가 돌면서 각각 INSERT,UPDATE 등을 하는 방식인데
> 제가 의심되는 부분은 너무 동시에 쓰레드에서 QUERY를 걸면 그렇게 되는것이 아닌가 생각이 되는데요.
>
> 제발 도움좀 주세요.
>