문제
내가 사용하여 주탑(python 프레임)을 통하여 간단한 웹 응용 프로그램이지만,그것은 보인다에서 죽을 시간으로,이것에서 오류 로그: (2006, 'MySQL server has gone away')
나는 조금의 검사하며,검사를 하나라도 통과하다고 보았기 때문이의 연결을 수행하지 않고 있었습니다.이 문제가되지 않기 때문에,하지만 이 sqlalchemy.pool_recycle
설정파일에서 앞에 자동으로 계속 그것은 살아 있습니다.기본이었다 3600
, 지만,나는 전화를 걸 그것은 다시 1800
이 때문에 문제입니다.조금 도움이되었지만, 3600
야 미세에 따라 문서.에 오류가 계속 일어나는 반 정기적으로 한다.나는 원하지 않는 낮은 그것을 너무 많이하지만 DOS 내 자신의 데이터베이스:).
어쩌면에서 뭔가를 내 MySQL 설정은 구피?가 확실하지 않는다.
다른 관련 세부사항:
Python 2.5
Pylons: 0.9.6.2 (w/ sql_alchemy)
MySQL: 5.0.51
해결책
나는 생각은 그것을 해결했습니다.그것은 최고의 안드로이드 애플 리케이 있었는 간단하 config 오류가 있습니다.내 ini 파일에 읽기:
sqlalchemy.default.url = [connection string here]
sqlalchemy.pool_recycle = 1800
문제는 나 environment.py
파일에 선언되는 엔진에만 지도 열쇠를 가진 접두사: sqlalchemy.default
그래서 pool_recycle
무시되었습니다.
이 솔루션은 단순히 변화의 두 번째 라인에서 ini:
sqlalchemy.default.pool_recycle = 1800
다른 팁
를 확인할 수 있습 MySQL 의 시간 제한 변수:
show variables like '%timeout%';
당신은 아마 관심에서 wait_timeout
(덜하지만 가능: interactive_timeout
).에 Debian and Ubuntu,기본값은 28800(MySQL 죽인다는 연결한 후 8 시간),그러나 어쩌면에 대한 기본 플랫폼은 다른 또는 누구든지 administrates 서버가 구성되어 차별화된 방식으로 행동합니다.
AFAICT, pool_recycle
지 않는 실제로 유지 연결이 살아있다,그것은 그들이 만료되기 전에 자체 MySQL 죽입니다.나는 익숙하지 않은 철탑이지만,경우를 일으키는 연결을 일시적으로 수행 SELECT 1;
옵션이 유지됩니다 그들이 살아에서 비용이 기본적으로 서버 부하를 최소한의 네트워크 트래픽이 있습니다.마지막으로 생각:당신은 어떻게든 관리용 연결하는 철탑을 생각하는 그것이 만료되었?