MySQL服务器经常丢失,但应用程序运行正常

时间:2019-02-14 00:31:04

标签: php laravel queue task scheduler

环境为Godaddy,使用LinuxMysqlphp 7.2, laravel 5.7共享托管。

我还没有涉及框架代码。我只是使用Laravel文档来运行工匠命令和记录信息。

我创建了一个cronjob,每5分钟运行一次,以运行电子邮件作业的调度程序 会根据注册,生日和其他活动定期发送邮件,并每天备份4次数据库。我在下面描述的日志文件中收到错误:

  

production.ERROR:SQLSTATE [HY000]:一般错误:2006 MySQL服务器已消失(SQL:从jobs中选择*,其中queue =默认值,而{{reserved_at为null和available_at <=时间戳)或(reserved_at <=时间戳))以id asc限制1的顺序升序进行更新)。时间戳不同,但查询相同。

     

production.ERROR:SQLSTATE [HY000] [2002]无法通过套接字'/var/lib/mysql/mysql.sock'(2){“ exception”:“ [object](PDOException (代码:2002):SQLSTATE [HY000] [2002]无法通过套接字'/var/lib/mysql/mysql.sock'连接到本地MySQL服务器

     

production.ERROR:在null上调用成员函数beginTransaction()   {“ exception”:“ [对象] Symfony \ Component \ Debug \ Exception \ FatalThrowableError(代码:0):

任何计划任务都不会因任何错误而中止或未执行。所有这些计划任务都能完美执行。例如:当我请求发送电子邮件时,它将被发送到相同的作业表中,并且相同的条目很快消失了,并且我将邮件发送到了目的地。奇怪的是,在没有执行任何活动或与应用程序互动时(这意味着没有人与应用程序互动),我经常在此错误之间发生。我没有在查询中发现任何问题,因为我已经在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();
}

即使在这些条目之后(应该是处于丢失的连接状态),下一个任务也会根据需要完美执行。

我进行了全面搜索,但找不到作业表以及这些日志条目的原因的问题。总是相同的作业表显示为有问题的查询。

0 个答案:

没有答案