http://www.yiiframework.com/forum/index.php/topic/63662-yii2-and-php-7/
появилась проблема после апгрейда до php7
версии:
ubuntu 16.04 4.4.0-22-generic
PHP 7.0.4-7ubuntu2
php-mysql 1:7.0+35ubuntu6
mysql Ver 15.1 Distrib 10.1.13-MariaDB
Yii Framework/2.0.9-dev
'db' => [
'class' => 'yii\db\Connection',
'masterConfig' => [
'username' => 'db_user',
'password' => 'strong_passwd',
'charset' => 'utf8',
'attributes' => [
PDO::ATTR_TIMEOUT => 10,
PDO::ATTR_PERSISTENT => TRUE,
],
],
'masters' => [
['dsn' => 'mysql:host=127.0.0.1;dbname=db'],
],
'slaveConfig' => [
'username' => 'db_user_ro',
'password' => 'strong_password',
'charset' => 'utf8',
'attributes' => [
PDO::ATTR_TIMEOUT => 10,
PDO::ATTR_PERSISTENT => TRUE,
],
],
'slaves' => [
['dsn' => 'mysql:host=127.0.0.1;dbname=db'],
],
],
после загрузки компа все работает, через минут 15 пропадает подключение к БД
при этом mysql-workbench к базе подключается,
из консоли
в логе mysql ошибок нет, в логе php тоже ошибок нет.
подскажите что делать
в момент наличия проблемы tcpdump показывает что сетевые пакеты к mariadb не отправляются.
нет ни у кого предположений почему пул соединений не пытается реконектиться?
для себя решил проблему добавлением
'serverStatusCache' => NULL,
т.е. так работает:
'db' => [
'class' => 'yii\db\Connection',
'serverStatusCache' => NULL,
'masterConfig' => [
'username' => 'db_user',
'password' => 'strong_passwd',
'charset' => 'utf8',
'attributes' => [
PDO::ATTR_TIMEOUT => 10,
PDO::ATTR_PERSISTENT => TRUE,
],
],
'masters' => [
['dsn' => 'mysql:host=127.0.0.1;dbname=db'],
],
'slaveConfig' => [
'username' => 'db_user_ro',
'password' => 'strong_password',
'charset' => 'utf8',
'attributes' => [
PDO::ATTR_TIMEOUT => 10,
PDO::ATTR_PERSISTENT => TRUE,
],
],
'slaves' => [
['dsn' => 'mysql:host=127.0.0.1;dbname=db'],
],
],
romzzzzec
(Romzzzzec)
July 17, 2016, 9:51pm
4
обновлю тему.
решение, описанное в предпоследнем посте просто позволяет не кэшировать статус, но периодически ошибка "None of the master DB servers is available." вываливается.
данная ошибка выловлена не на 1 инстансе, а на кластере после обновления до php7, при чем php 5.6 + mariadb работает, php7 + эта же версия mariadb не работает.
истинное решение данной проблемы дает закоментировать строку "PDO::ATTR_PERSISTENT => TRUE," или соответственно выставить как по дефолту ее в FALSE.
отказаться от персистент - это конечно проседание в производительности, но это это лучше чем совсем "None of the master DB servers is available."
проблема стабильно воспроизводится.
Yii Version 2.0.10-dev
на данный момент