Доктрина 2 Закрыть соединение

Я использую доктрину 2 PDO с mysql.

При стресс-тестировании сервера mysql сообщает о множестве прерванных подключений (до 20%).

Я пытаюсь найти проблему.

Руководство Mysql предлагает убедиться, что соединения с базой данных закрыты должным образом. http://dev.mysql.com/doc/refman/5.0/en/communication-errors.html

Я не могу найти никакой информации, если доктрина действительно закрывает подключения или нет, или использует постоянные соединения.

Кроме того, есть ли что-нибудь еще, что может учитывать прерывистые соединения? Я здесь в проигрыше.

PS. Сервер - ubuntu 10.04, nginx 1.x, php 5.3.5 (fpm) и mysql 5.1.41

Ответ 1

Из того, что я заметил, Doctrine использует постоянные соединения.

Мы наткнулись на проблему, запустив модульные тесты в symfony2, где база данных была спамерована соединениями в статусе "Сон". Решение, которое сработало для нас:

$entityManager->getConnection()->close();

Ответ 2

У меня та же проблема и

$entityManager->getConnection()->close(); 

похоже, работает, но работает "лучше" в некоторых версиях PHP, если вы добавляете

 gc_collect_cycles() 

после закрытия соединений. У меня все еще есть такие проблемы в старой версии php, возможно, что-то связано с сборщиком мусора, я думаю. Обновится, если я найду окончательное решение для всех версий php