Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Ошибка БД - 2006 - MySQL server has gone away

Может кто-нибудь сталкивался: Сегодня за день пришло более 2000 писем с данной ошибкой. Причем началось все в 14.15 дня, сайт днем не трогал. С любой посещенной страницы приходит один и тот же текст. Привожу:

MYSQL ERROR REPORT
- 11/10/2009 17:10:38
---------------------------------------
2006 - MySQL server has gone away

SELECT
                                                *
                                            FROM
                                                os_customers_status
                                            WHERE
                                                customers_status_id = '1' AND language_id = '1'
---------------------------------------
Server Name  : raritet-parfum.ru
Remote Address: 81.88.222.82
Referer      : http://raritet-parfum.ru/index.php?cat=531
Requested    : /index.php?cat=531&on_page=10
Trace Back    : redirector.php:182(includearray(1) {;  =>;  string(51) "index.php"; }; ) =>
index.php:11(includearray(1) {;  =>;  string(58) "includes/top.php"; }; ) =>
includes/top.php:258(requirearray(1) {;  =>;  string(77) "includes/write_customers_status.php"; }; ) =>
includes/write_customers_status.php:53(os_db_queryarray(1) {;  =>;  &string(319) "SELECT;             
*;                                            FROM;                                               
os_customers_status;                                            WHERE;                                   
customers_status_id = '1' AND language_id = '1'"; }; ) =>
includes/functions/admin.include.php:3410(os_db_errorarray(3) {;  =>;  &string(319) "SELECT;         
*;                                            FROM;                                               
os_customers_status;           
                                WHERE;                                                customers_status_id
= '1' AND language_id = '1'";  =>;  &int(2006);  =>;  &string(26) "MySQL server has gone away"; };


Наиболее часто ошибка MySQL server has gone away возникает в результате тайм-аута соединения и его закрытия сервером. По умолчанию сервер закрывает соединение по прошествии 8 часов бездействия. Можно изменить лимит времени, установив при запуске mysqld переменную wait_timeout.

Другой распространенной причиной получения ошибки MySQL server has gone away является выдача команды "закрытия" на соединении MySQL с последующей попыткой выполнить запрос на закрытом соединении.


Да, Евгений, давай попробуем разобраться, вдруг еще кому-то пригодится.  Сегодня опять начали сыпаться письма.  По письмам определил, что иногда поступает по несколько запросов в секунду, соотв это работа машины, а не действий человека.  Причем, все письма, которые пришли сегодня - с одного адреса, Remote Address: 84.23.43.244  Вводим здесь http://domains.whois.com/domain.php?action=whois , получаем данные московского провайдера http://home.imsys.ru/  Соответственно, больше похоже на какую-то атаку злобного Василия.... Как считаешь?


прежде всего отключить отправку email из за возникших ошибок.

includes\functions\admin.include.php

заменить

function os_db_error($query, $errno, $error)
{
  include(_LANG.'ru/db_error.php');
  if (DB_ERR_MAIL_SEND == true)
  {
  $msg = "\n" . 'MYSQL ERROR REPORT' . "\n" . " - " . date("d/m/Y H:m:s",time()) . "\n" . '---------------------------------------' . "\n";
  $msg .= $errno . ' - ' . $error . "\n\n" . $query . "\n";
  $msg .= '---------------------------------------' . "\n";
  $msg .= 'Server Name  : ' . $_SERVER . "\n";
  $msg .= 'Remote Address: ' . $_SERVER . "\n";
  $msg .= 'Referer      : ' . $_SERVER . "\n";
  $msg .= 'Requested    : ' . $_SERVER . "\n";
  $msg .= 'Trace Back    : ' . str_replace(DIR_FS_CATALOG, '', str_replace('\\', '/', implode(" => ", zen_trace_back('', 0 , 1, true))))."\n";;
  if(defined('DEBUG') && DEBUG == true) {
echo(nl2br($msg));
die('==========================================================================');
}
  $log = date("d/m/Y H:m:s",time()) . ' | ' . $errno . ' - ' . $error . ' | ' . $query . ' | ' . $_SERVER . "\n";
error_log($log, 3, 'mysql_db_error.log');
  mail(DB_ERR_MAIL, 'MySQL DB Error!', $msg,
        'From: db_error@'.$_SERVER);
  }
//if (!headers_sent() && file_exists('db_error.html') ) {
  //  header('Location: db_error.html');
    //include('db_error.html');
  // }
  die(DB_ERR_MSG);
}


на

function os_db_error($query, $errno, $error)
{
  include(_LANG.'ru/db_error.php');
  if (DB_ERR_MAIL_SEND == true)
  {
  $msg = "\n" . 'MYSQL ERROR REPORT' . "\n" . " - " . date("d/m/Y H:m:s",time()) . "\n" . '---------------------------------------' . "\n";
  $msg .= $errno . ' - ' . $error . "\n\n" . $query . "\n";
  $msg .= '---------------------------------------' . "\n";
  $msg .= 'Server Name  : ' . $_SERVER . "\n";
  $msg .= 'Remote Address: ' . $_SERVER . "\n";
  $msg .= 'Referer      : ' . $_SERVER . "\n";
  $msg .= 'Requested    : ' . $_SERVER . "\n";
  $msg .= 'Trace Back    : ' . str_replace(DIR_FS_CATALOG, '', str_replace('\\', '/', implode(" => ", zen_trace_back('', 0 , 1, true))))."\n";;
  if(defined('DEBUG') && DEBUG == true) {
echo(nl2br($msg));
die('==========================================================================');
}
  $log = date("d/m/Y H:m:s",time()) . ' | ' . $errno . ' - ' . $error . ' | ' . $query . ' | ' . $_SERVER . "\n";
error_log($log, 3, 'mysql_db_error.log');
  //mail(DB_ERR_MAIL, 'MySQL DB Error!', $msg,
      // 'From: db_error@'.$_SERVER);
  }
//if (!headers_sent() && file_exists('db_error.html') ) {
  //  header('Location: db_error.html');
    //include('db_error.html');
  // }
  die(DB_ERR_MSG);
}



Да, Евгений, давай попробуем разобраться, вдруг еще кому-то пригодится.  Сегодня опять начали сыпаться письма.  По письмам определил, что иногда поступает по несколько запросов в секунду, соотв это работа машины, а не действий человека.  Причем, все письма, которые пришли сегодня - с одного адреса, Remote Address: 84.23.43.244   Вводим здесь http://domains.whois.com/domain.php?action=whois , получаем данные московского провайдера http://home.imsys.ru/  Соответственно, больше похоже на какую-то атаку злобного Василия.... Как считаешь?


так не понял

письма от скрипта или нет?


Источник



Copyright ShopOS