최소 동시접속자 2000~3000명가량 되는 사이트의 관리자 프로그램을
마이다스로 했습니다.
1. 소켓 연결로 하구요 일단 포트는 기본포트 211로합니다.
2. 서버애플리케이션은 Database컴퍼넌트와 세션컴퍼넌트를 연결하고
쿼리컴퍼넌트 그리고 TDataSetProvider를 사용하였습니다.
3. 클라이언트는 TClientDataSet을 사용하여 쿼리는 주로
DataRequest를 사용해서 날리구요.
서버 애플리케이션에서 TDataSetProvider의 OnDataRequest이벤트에
해당쿼리컴퍼넌트.SQL.Text := Input라고 했으니 클라이언트에서 날리는
DataRequest가 전달돼어 쿼리가 실행은 돼겠지요.
서버는 로컬이 아닌 리모트에 있습니다.
속도 무자게 늦습니다.
ciMultiinstance와 ciSingleInstance 두가지 다 바꿔서 해보아도
차이가 없습니다.
의문 1 : pooling을 하지 않았다고 해서 1클라이언트가 서버에 접속되고 쿼리
서너번하고 그다음부터 쿼리중에 뻗어버립니다.
pooling안했다고 이럴수있는지 궁금합니다.
의문 2 : 공유기가 있는 클라이언트와 아닌 클라이언트가 모두 같은 현상입니다.
마이다스로 개발한게 이번이 처음도 아닌데 이번만 유독 이런게 데이터베이스 서버에
동시 접속자 수가 많아서 그런가 싶기도 하구요!
그래서 먼저 2-tier로 작업해서 사용을 해보았습니다.
접속해서 쿼리하여 사용하는데까지는 문제가 없었습니다.
데이터베이스 서버에 데드락이 무쟈게 걸리는거 빼구요
Database와 쿼리컴퍼넌트로 작업한 2-tier 프로그램에서는 또 왠 데드락이 그리도
많이 생기는지 모르겠습니다.
역시 동시접속자가 많아서 그런가 싶구요!
의문 3 : 제 생각엔 객체 풀링을 한다고 해결될 문제가 아닌것 같기도 하구요 ㅠ.ㅠ
델파이 7 엔터프라이즈 버전은 마이다스 라이센스가 없어도