2014-09-08 3 views
1

내 응용 프로그램에 대한 단위 테스트를 실행할 때 PDOException (너무 많은 연결)로 인해 첫 번째 테스트가 성공한 후 약 100 번 테스트가 실패하기 시작합니다. . 이미이 문제를 조사했지만 해결할 수 없었습니다. 내가 processIsolation을 변경하는 경우Symfony2 단위 테스트 : PDOException : SQLSTATE [00000] 너무 많은 연결

<phpunit 
     backupGlobals    = "false" 
     backupStaticAttributes  = "false" 
     colors      = "true" 
     convertErrorsToExceptions = "true" 
     convertNoticesToExceptions = "true" 
     convertWarningsToExceptions = "true" 
     processIsolation   = "false" 
     stopOnFailure    = "false" 
     syntaxCheck     = "false" 
     bootstrap     = "bootstrap.php.cache" > 

이 "true"로, 모든 테스트가 오류 (E) 생성 : 다음과 같이

내 설정은이를 위해

Caused by ErrorException: unserialize(): Error at offset 0 of 79 bytes 

내가 설정 시도를 "detect_unicode = Off "php.ini 파일에 저장됩니다.

"--group something"과 같이 작은 배치로 테스트를 실행하면 모든 테스트가 성공적으로 수행됩니다.

모든 테스트를 한 번에 실행할 때 누군가가이 문제를 해결할 수 있습니까? 정말 PDOException을 제거하고 싶습니다. 사전에

감사합니다!

답변

1

DB 서버에서 최대 동시 연결 수를 늘려야합니다.

MySQL을 사용하는 경우 /etc/mysql/my.cnf을 편집하고 max_connections 매개 변수를 필요한 동시 연결 수로 설정하십시오. 그런 다음 MySQL 서버를 다시 시작하십시오.

명심하십시오 : 이론 상으로는 물리적 한계가 매우 높습니다. 그러나 쿼리가 높은 CPU로드 또는 메모리 소비를 유발할 경우 DB 서버가 다른 프로세스에 필요한 리소스를 소모 할 수 있습니다. 이는 메모리가 부족 해지거나 시스템에 과부하가 걸릴 수 있음을 의미합니다.

+0

작동하는 것으로 보입니다. 감사! 아마도 이것은 임시 해결 방법 일 것입니다. 더 많은 테스트를 추가 할 때 오류가 발생하지 않기를 바랍니다. – tomazahlin

+0

걱정하지 마십시오. ;) 쿼리 당 MB의 데이터를로드하지 않거나 몇 가지 매우 이상한 조인이있는 경우 MySQL 서버는 최신 시스템에서 수천 개의 동시 요청을 처리 할 수 ​​있습니다. – lxg

0

동일한 문제가있는 사용자의 경우 my.cnf 파일을 구성하기위한 구체적인 단계는 다음과 같습니다. 파일이 my.cnf 일 경우 오른쪽 max_connections = 500 (기본값은 151)을 [mysqld] 섹션에 넣고 my.cnf에 입력하십시오. [client] 섹션에 넣지 마십시오.

Default options are read from the following files in the given order: /Applications/XAMPP/xamppfiles/etc/xampp/my.cnf /Applications/XAMPP/xamppfiles/etc/my.cnf ~/.my.cnf

:

당신이 여러 mysqld가 브루 나 XAMMPP에서 설치되어있는 경우, /Applications/XAMPP/xamppfiles/sbin/mysqld --verbose --help | grep -A 1 "Default options"를 사용 XAMMPP에 적합한 mysqld를 찾아 당신이 뭔가를 얻을 것이다 오른쪽 my.cnf에 있는지 확인하려면

일반적으로 /Applications/XAMPP/xamppfiles/etc/my.cnf입니다.

관련 문제