2014-01-14 5 views
2

최근이 상황에서 아무 것도 변경하지 않았지만 최근에는 원격 서버에 대한 mysqli_connect()가 매우 느립니다 (30 초 최대 실행 시간에 도달하는 시간의 절반). 작동되면 응답 시간은 28 ~ 30 초입니다.mysqli_connect()가 갑자기 매우 느림

두 서버 모두에서 MySQL을 다시 시작했습니다. PHP 스크립트가있는 서버는 로컬 WAMP 서버이고 원격 서버는 LAMP 스택입니다. LAMP 서버는 WAMP 서버가 요청하는 것과 동일한 정보를 제공합니다.

$mtime = microtime(); 
    $mtime = explode(" ",$mtime); 
    $starttime = $mtime[1] + $mtime[0]; 
     $this->conn = mysqli_connect($this->host,$this->user,$this->password) or die(mysqli_error($this->conn)); 
     $etime = microtime(); 
    $etime = explode(" ",$etime); 
    $endtime = $etime[1] + $etime[0]; 
    $totaltime = ($endtime - $starttime); 
    echo('<!--mysqli_connect took: '.$totaltime.' seconds-->'); 

페이지 (이 max_execution_time을 타격에 대한 500 응답을 제공하지 않는 경우)이 표시됩니다 :

<!--mysqli_connect took: 28.975151777267 seconds--> 
를 쿼리는 문제이다) 대신이 mysqli_connect (처럼 보이는 문제로 나타나지 않습니다

원격 LAMP 서버에 동일한 코드가 표시됩니다 :

<!--mysqli_connect took: 0.036190032958984 seconds--> 

이 코드를 업데이트하거나 일하는이 있기 때문에 어떤 구성을 변경하지 않았습니다. WAMP 서버에서 30 초를 초과하면 max_execution_time 초과 오류를 제외하고 두 서버에서 오류가 발생하지 않습니다. 누구든지 어떤 제안이 있습니까?

읽어 주셔서 감사합니다.

+0

연결에 대한 수요를 충족시키기 위해 서버에 사용 가능한 연결이 충분합니까? 또는 쿼리/연결을 쌓아 올릴 수있는 장기 실행 쿼리가 있습니까? –

+0

재시작 후 10 분 :'max_connections'가 151로 설정되면, pma는'max. concurrent connections'은 6이고'threads_connected'는 3이고'threads_created'는 23입니다. 느린 쿼리가 기록되지 않았습니다. mysqli_connect는 다시 시작한 직후에도 30 초 이상 걸린다. –

+0

mysqltuner는 사용 가능한 연결의 최대 사용법을 보여줍니다. 5 % (9/151) –

답변

4

아마도 DNS 문제일까요? 도메인을 말하기보다는 호스트 문자열을 직선 IP 주소로 변경해 보셨습니까? 유사한 질문이 여기에 있었는데, Connecting to mysql server(localhost) very slow인데, 로컬 호스트 였지만 127.0.0.1로 변경하면 문제가 해결되었습니다.

+0

귀하의 제안에 따라 IP를 시도했지만 시간은 영향을받지 않았습니다. 도메인 이름 대신 localhost를 사용하도록 LAMP 서버에서 호스트 이름을 변경하면 응답 시간이 0.03에서 0.0002로 줄어 듭니다. 두 서버에서 동일한 호스트 이름을 사용했기 때문에 DNS 문제가 아니라고 가정합니다 (LAMP 서버에 localhost 또는 127.0.0.1을 사용하지 않음). 그래도 제안 해 주셔서 감사합니다. –

+0

Sarah - 저는 여기 다트 보드에서 정말 총을 쏘고 있습니다.하지만 여기에 문제가 발생할 수있는 다른 사항이 있습니다. (시간 제한은 이보다 더 길지만) http://stackoverflow.com/ 질문/13439817/why-is-my-mysqli-connection-so-slow –

+0

그래, 로컬 MySQL 서버의 속도가 느려지는 것 같습니다 (로컬 호스트 연결이 정상적으로 작동합니다). 또한 Windows 7 이상에서 문제가되는 것으로 보입니다. Linux와 이전 버전의 Windows Server를 사용하고 있습니다. –

0

문제를 발견하고 DNS와 관련이 있습니다. 나는 아직도 그것을 완전히 이해하지 못한다. 데몬 named이 LAMP 서버에서 중지 된 것 같습니다. 이 서버는 연결에 사용했던 도메인 이름에 대한 신뢰할 수있는 NS입니다. 왜 때로는 작동하는지 또는 IP 주소를 사용할 때 작동하지 않는 이유를 모르지만 서비스를 다시 시작 했으므로 잘 작동합니다.

도움 주셔서 감사합니다.

+0

이것은 MySQL 서버가 클라이언트의 DNS를 조회하기 때문입니다. 당신은 ([http : //developer.sugarcrm./ 설정/해제/mysql을 - 역 - DNS를 조회 - 투 - 속도 - 최대 응답 - 시간 /)/서버 구성에서 2012/01/10/it. – spacediver

+0

WAMP 서버의 IP는 LAMP 서버에 의해 제어되는 것이 아니라 ISP에 의해 제어됩니다. 따라서 문제는 LAMP 서버가 클라이언트의 IP에 대한 정보를 찾을 수 없음과 관련이 있다고 생각하지 않습니다. 나는 링크를 고맙게 생각합니다. –

+1

정확함을 위해서) - MySQL 서버는 연결 클라이언트의 DNS 이름을 검색합니다. 그 클라이언트가 어디에 있든간에 IP 주소를 얻습니다. 더 자세한 로깅 및 연결 표시에 의해 동기가 부여 된 것 같습니다. 당신의 솔루션에서 나는 일단 이름이 켜지면 지연을 해결했음을 알 수 있습니다. 결과적으로 MySQL 서버는 그것을 적극적으로 사용합니다. 더욱이, 어떤 이유로 든 named에 해상도 지연이 시작된다면, 그 지연은 MySQL에도 전파 될 것입니다. 이 조회 (및 서비스 종속성!)를 구성 할 이유가 전혀 없습니다. :) – spacediver