서버 : 리눅스
DB : MySQL
프로그램 : 델파이(ADO 사용)
프로그램 : 델파이(ADO 사용)
해결책 1: my.cnf 파일에서 설정을 추가하는 방식인데
[mysqld]
datadir=/var/lib/mysql
Socket=/var/lib/mysql/mysql.sock
default-character-set=euc-kr
skip-name-resolve <- 이부분 추가~~
[mysql.server]
user=mysql
basedir=/var/lib
.
.
.
my.cnf 에서 skip-name-resolve 옵션을 추가하는 방법인데.. 일단 안됐음..
해결책 2 : max-allowed-packet 설정값을 증가 시킨다
해결책 3 : wait-time-out 설정값을 증가 시킨다
(이 설정값이 늘려 볼려고 했으나, 호스트 서버에 부하가 많다는 이유로 요청하는 값까지는 올리지 못함 고로~ wait-time-out의 값을 요청하는 값까지 올린 경우를 생각을 못하였지만 서버를 외부에 두고 할 경우에는 이 설정을 변경하는 게 쉽지는 않을 것 같같다 왜냐하면 서버를 우리회사에서만 쓰는게 아니므로....)
(이 설정값이 늘려 볼려고 했으나, 호스트 서버에 부하가 많다는 이유로 요청하는 값까지는 올리지 못함 고로~ wait-time-out의 값을 요청하는 값까지 올린 경우를 생각을 못하였지만 서버를 외부에 두고 할 경우에는 이 설정을 변경하는 게 쉽지는 않을 것 같같다 왜냐하면 서버를 우리회사에서만 쓰는게 아니므로....)
해결책4 : 프로그램 내부의 connection 설정 값을 증가 시킨다.
(ADO connection에 관련된 값을 증가 하여도 DB의 설정값으로 인해서 연결이 끊긴다)
해결책 4번까지를 적용 해보았으나, 결국에는 해결이 되지 않았다
위의 에러가 뜨는 상황을 조사해본 결과 한번 connection을 맺고 나서 30초가 지난 후에 연결이 끊기는 것을 확인하였다.
결국에는 wait-time-out의 설정값의 시간이 지나기 전에 쿼리를 날려서 connection을 유지하는 방법으로 문제 해결
개발 환경은 델파이인데 타이머를 돌려서 interval을 25000으로 줘서 연결을 유지한다.
다만 문제는 서버에 부하가 가지 않을 정도의 interval값을 산출하는 것..;;
그리고 쿼리를 날리는 테이블은 레코드가 별로 없는 것으로 추천!
wait-time-out의 기본 값은 30초 이다!
'개발노트&관련잡다구니' 카테고리의 다른 글
[MSSQL] PRIMARY 파일 그룹이 꽉 차서 '[DB명]' 데이터베이스의 '필드명' 개체에 공간을 할당할 수 없습니다 (0) | 2013.01.03 |
---|---|
[BDE] 로컬 공유하기 (0) | 2013.01.03 |
[윈도우XP] 네트워크 공유시 "리소스 권한이 없습니다" 라는 메세지 (0) | 2012.11.07 |
[개발] 개발자가 알아야 하는 IE7의 변경 사항 (0) | 2009.08.19 |
[삽질] 소스 백업을 했는데 계속 윈도우 기본인증창이 나옴. (0) | 2009.08.10 |