Как провести диагностику и понять в чем ошибка?

Есть файл логов. в нем вот такие данные

Oct 27 23:27:59 bitrix372 apache_error[100036]: mona-liza.com [Thu Oct 27 23:27:59 2022] [error] [pid 9935] sapi_apache2.c(349): [client 93.185.192.97:58058] PHP Fatal error:  Uncaught Bitrix\\Main\\DB\\SqlQueryException: Mysql query error: (2006) MySQL server has gone away in /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/db/mysqliconnection.php:146\nStack trace:\n#0 /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/db/mysqlcommonconnection.php(92): Bitrix\\Main\\DB\\MysqliConnection->queryInternal('SELECT * FROM `...')\n#1 /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/db/connection.php(787): Bitrix\\Main\\DB\\MysqlCommonConnection->getTableFields('b_user_session')\n#2 /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/db/sqlhelper.php(406): Bitrix\\Main\\DB\\Connection->getTableField('b_user_session', 'SESSION_ID')\n#3 /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/orm/data/datamanager.php(1669): Bitrix\\Main\\DB\\SqlHelper->prepareAssignment('b_user_session', 'SESSI
Oct 27 23:28:00 bitrix372 apache_error[100036]: mona-liza.com [Thu Oct 27 23:28:00 2022] [error] [pid 29706] sapi_apache2.c(349): [client 176.59.21.96:58196] PHP Fatal error:  Uncaught Bitrix\\Main\\DB\\SqlQueryException: Mysql query error: (2006) MySQL server has gone away in /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/db/mysqliconnection.php:146\nStack trace:\n#0 /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/db/mysqlcommonconnection.php(92): Bitrix\\Main\\DB\\MysqliConnection->queryInternal('SELECT * FROM `...')\n#1 /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/db/connection.php(787): Bitrix\\Main\\DB\\MysqlCommonConnection->getTableFields('b_user_session')\n#2 /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/db/sqlhelper.php(406): Bitrix\\Main\\DB\\Connection->getTableField('b_user_session', 'SESSION_ID')\n#3 /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/orm/data/datamanager.php(1669): Bitrix\\Main\\DB\\SqlHelper->prepareAssignment('b_user_session', 'SESSI
Oct 27 23:28:05 bitrix372 apache_error[100036]: mona-liza.com [Thu Oct 27 23:28:05 2022] [error] [pid 79202] sapi_apache2.c(349): [client 77.232.146.121:59034] PHP Fatal error:  Uncaught Bitrix\\Main\\DB\\SqlQueryException: Mysql query error: (2006) MySQL server has gone away in /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/db/mysqliconnection.php:146\nStack trace:\n#0 /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/db/mysqlcommonconnection.php(92): Bitrix\\Main\\DB\\MysqliConnection->queryInternal('SELECT * FROM `...')\n#1 /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/db/connection.php(787): Bitrix\\Main\\DB\\MysqlCommonConnection->getTableFields('b_user_session')\n#2 /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/db/sqlhelper.php(406): Bitrix\\Main\\DB\\Connection->getTableField('b_user_session', 'SESSION_ID')\n#3 /home/c/cl02446/ml-new/public_html/bitrix/modules/main/lib/orm/data/datamanager.php(1669): Bitrix\\Main\\DB\\SqlHelper->prepareAssignment('b_user_session', 'SES


что то с таблицой b_user_session , сайт от этого начинает долго обрабатывать запрос и тупит.

Хранение кеша установлено - memcache
  • Вопрос задан
  • 497 просмотров
Пригласить эксперта
Ответы на вопрос 1
Написано же: MySQL server has gone away.
Такое бывает, когда сначала выполняется какой-то очень долгий\тупой код, а потом идет попытка обращения к БД.
Так вот за время тупняка соединение с БД может по таймауту оборваться (по-умолчанию таймаут примерно 60 сек вроде).
Идеальным решением будет не допускать тормозящего кода.
А если это не получается, то после тупого кода можно сделать реконнект к БД примерно таким кодом:
$cn = \Bitrix\Main\Application::getConnection();
$cn->disconnect();
$cn->connect();
if(is_object($GLOBALS['DB']))
{
        $dbHost = $GLOBALS['DB']->DBHost;
        $dbName = $GLOBALS['DB']->DBName;
        $dbLogin = $GLOBALS['DB']->DBLogin;
        $dbPassword = $GLOBALS['DB']->DBPassword;
        $GLOBALS['DB']->Disconnect();
        $GLOBALS['DB']->Connect($dbHost, $dbName, $dbLogin, $dbPassword);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы