2011-11-22 2 views
11

두 서버 모두 CentOS 5.7 및 cPanel-CURRENT를 실행합니다. 하나는 x86이고 다른 하나는 x64입니다. 둘 다 Apache 2.2.21, PHP 5.3.8 및 MySQL 5.1을 사용하고 있습니다.PHP : 원격 MySQL 연결이 매우 느림

서버 중 하나에서 로컬 데이터베이스를 쿼리하면 결과가 즉시 반환됩니다. 이 경우 몇 천 개의 결과가 반환됩니다. 그러나 한 서버에서 다른 서버로 동일한 쿼리를 실행하면 쿼리를 완료하는 데 10 초 이상 걸립니다.

MySQL Workbench 5.2를 사용하여 같은 쿼리로 내 워크 스테이션에서 원격 데이터베이스를 쿼리하면 1 초 이내에 완료되므로 PHP 관련 문제 또는 다른 서버 관련 문제가 있다고 생각됩니다.

이전에이 문제가 발생했거나 해결 방법을 알고있는 사람이 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.

+0

mysql_pconnect() http://www.php.net/manual/en/function.mysql-pconnect.php 시도해보십시오. – YamahaSY

+0

영구 연결을 사용하는 것이 도움이되지 않습니다. 쿼리를 완료하는 데 여전히 동일한 시간이 걸립니다. – Reado

+0

데이터베이스가 약간 다를 수 있습니까? 예 : 로컬 시스템의 모든 인덱스가 원격 서버에있는 것은 아닙니다. PHP는 원격 mysql 서버와 잘 작동, 거기에 다른 문제가 있습니다. 네트워크 연결은 어떻습니까? 'Ping' 원격 서버. – Oroboros102

답변

11

첫 번째 추측 : DNS 문제 일 수 있으며 my.cnf에서 --skip-name-resolve 옵션을 사용하거나 MySQL 권한 테이블에서 IP 주소 만 사용할 수 있습니다.

둘째 추측 : 보안 수준에 문제가있을 수 있으며 일시적으로 selinux 나 방화벽을 비활성화하고 테스트를 다시 실행하는 것이 좋습니다.

+0

IP 주소를 사용하여 PHP와 MySQL Workbench 모두에서 원격 서버에 연결합니다. 또한 "--skip-name-resolve"가 설정 파일에 있고 서버가 다시 시작되었습니다. 마지막으로 selinux가 비활성화되어 (cPanel을 실행하기위한 요구 사항 중 하나) 방화벽을 비활성화했지만 아무 소용이 없습니다. – Reado

+0

그리고 개선 된 점이 있습니까? 연결 기능에 걸리는 시간을 알려주시겠습니까? 나는 당신의 질문에서 실제로 명확하지 않은 시간이 정확히 무엇인지 궁금합니다. –

+3

설정 파일에서, "skip-name-resolve"가 아닌 "skip-name-resolve"여야합니다. - 앞의 대시는 mysqld 서비스를 시작할 때 매개 변수로 사용되는 경우에만 해당됩니다. –

4

PHP/MySQL 응용 프로그램에서이 정확한 문제가있었습니다.

단지 "skip-name-resolve"를 my.ini에 추가하면 나에게 고쳐주었습니다. 데스크탑 1에 대한 내 응용 프로그램이 IP 주소를 사용하여 데스크톱 2 (mysql)에 액세스 한 이래로 나는 약간 혼란스러워했습니다. 저는 두 개의 Windows 7 데스크톱 사이를 갈 것입니다.