이 하나가 나를 죽이고 있습니다. 우리는 MySQL 데이터베이스에 ASP.NET/Mono 응용 프로그램을 가지고 있습니다. 몇 달 동안 우리는 "임의의 지정된 MySQL 호스트에 연결할 수 없습니다"라는 완전히 무작위이지만 일관된 발생에 시달려 왔습니다. 나는 결코 MySQL 전문가는 아니며, 이것이 바보 같은 것이라고 생각합니다.MySql * 완전 무작위 * 지정된 MySQL 호스트에 연결할 수 없습니다.
구체적인 :
의 MySQL 5.5.17
MySQL의 커넥터/네트 6.4.4
모노 2.10.8
MonoDevelop 2.8.6.5
연결 문자열 : SERVER = 로컬 호스트, 3306; DATABASE = XXX ; UID = xxx; PWD = xxx; 연결 시간 초과 = 90; Encrypt = false;
Max_connections는 150으로 설정됩니다. 연결 수가 5 개를 넘지는 않으며 풀 (pooling) 때문일 수 있습니다.
응용 프로그램은 C# ASP.NET 3.5입니다. Windows/IIS에서 수년간 바위처럼 단색으로 실행됩니다. 9 개월 전 우리 시장은 우리가 Windows에서 내릴 수있게 해 주었기 때문에 모든 것을 Mono/Apache로 옮겼습니다.
문제는 모노 측에서만 발생하지만 중요한 것은 Windows 지원을 중단했기 때문입니다.
시간당 평균 약 10 회 발생하지만 간격은 격렬합니다.
문제는 다음과 같은 구성에서 목격되었습니다
우분투 11/아파치/mod_mono
OSX 라이온/Apacke2/mod_mono
우분투 11/xsp2/MonoDevelop 디버그 서버
OSX 라이온/xsp2/MonoDevelop
디버그 서버는 keepaliv로 엉망 e, wait_timeout, connectionreset 등을 사용할 수 없습니다. 타이밍은 효과가없는 것 같습니다. conn.open에서 오류가 즉각 발생하며 연결 시간 초과 이후가 아닙니다.
여기에 단서가 있습니다. 앱은 Pooling = false로 절대 실행되지 않습니다. 거의 모든 연결 시도가 실패합니다. 당연히 나는 풀링을 원하지만, 왜 그것이 없이는 작동하지 않을지 모르겠다.
응용 프로그램에는 2 분마다 "하트 비트"(데이터베이스의 사용자 세션)가 내장되어 있습니다.
모두를 가장 많이 상하게합니까? 달리기 환경에서는 요구에 따라 복제 할 수 없으며 무작위입니다. 쿼리 크기, 실행 시간 등을 살펴 보았습니다.
우분투 서버 또는 OSX를 처음 시작할 때 Mono가 MySQL에 처음 연결될 때 - it 그런 다음에 일어날 것입니다. 그 후에는 누구나 추측 할 수 있습니다.
max_connections 제한은 어떻습니까? 여러 번 허용되는 최대 허용치에 도달 할 수 있습니다. –
첫 번째 연결에서 발생하는 일은 거의 없을 것으로 보입니다. – DNA
+1 질문이 있으 십니다.하지만 serverfault.com에서 더 나은 답변을 드릴 것입니다. –