MySQL сервер часто теряется, но приложение работает отлично - PullRequest
0 голосов
/ 14 февраля 2019

Среда Godaddy, виртуальный хостинг с использованием Linux, Mysql, php 7.2, laravel 5.7.

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

Я создал cronjob, который запускается каждые 5 минут, чтобы запускать планировщик для заданий электронной почты, который периодически отправляет письма на основе регистрации, дней рождения и других действий, а также резервное копирование БД 4 раза в день.Я получаю ошибки в файле журнала, описанном ниже:

production.ERROR: SQLSTATE [HY000]: общая ошибка: 2006 сервер MySQL исчез (SQL: выберите * из jobs, где queue = по умолчанию и ((reserved_at равно нулю и available_at <= отметка времени) или (<code>reserved_at <= отметка времени)) в порядке <code>id ограничение по возрастанию 1 для обновления).Временные метки разные, но запрос одинаковый.

production.ERROR: SQLSTATE [HY000] [2002] Не удается подключиться к локальному серверу MySQL через сокет '/var/lib/mysql/mysql.sock' (2){"исключение": "[объект] (исключение PDO (код: 2002): SQLSTATE [HY000] [2002] Не удается подключиться к локальному серверу MySQL через сокет '/var/lib/mysql/mysql.sock'

production.ERROR: вызов функции-члена beginTransaction () для null {"исключение": "[объект] Symfony \ Component \ Debug \ Exception \ FatalThrowableError (код: 0):

Нетиз запланированных задач были либо прерваны, либо не выполнены из-за какой-либо ошибки. Все эти запланированные задачи выполняются идеально. Пример: Когда я запрашиваю отправку по электронной почте, он публикуется в той же таблице заданий, и те же записи исчезают во флэш-памяти, и ядоставить почту в пункт назначения. Странно, я часто получаю эту ошибку в промежутке, когда не выполняются какие-либо действия или взаимодействие с приложением (имеется в виду, что никто не взаимодействует с приложением). Я не нахожу никаких проблемe с запросом, поскольку я выполнил тот же запрос в phpMyAdmin, в моей локальной консоли или в MySQL workbench.Это базовый запрос по умолчанию.

protected $commands = [
    //
    Commands\SendBirthdayEmail::class,
    Commands\SendReminderEmail::class,
    Commands\ManageLogs::class,
    Commands\BackupDb::class,
];

/**
 * Define the application's command schedule.
 *
 * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
 * @return void
 */
protected function schedule(Schedule $schedule)
{

   $schedule->command('manage:logfiles')->weekly()->sundays()->at('01:15');
   $schedule->command('backup:stdb')->dailyAt('01:20');
   $schedule->command('backup:stdb')->dailyAt('05:20');

   $schedule->command('email:birthday')->dailyAt('05:55');
   $schedule->command('email:reminder')->dailyAt('06:00');

   $schedule->command('backup:stdb')->dailyAt('13:45');
   $schedule->command('backup:stdb')->dailyAt('19:20');
   $schedule->command('backup:stdb')->dailyAt('21:20');
   $schedule->command('queue:work --tries=3')->everyFiveMinutes();
}

Даже после этих записей (предположительно с состоянием потерянного соединения) следующая задача будет выполнена идеально, как нужно.

Я искал все, но не смог найти проблему с таблицей заданий, а также причину этих записей журнала.В качестве проблемного запроса всегда отображается одна и та же таблица заданий.

...