私は基本的にRabbitMQキューとスーパーバイザでジョブメッセージを入れているSymfony 3.1アプリケーションを開発しています。私はRabbitMQメッセージを消費し、Symfonyで管理されているジョブを実行します。消費者の仕事は、メッセージをデコードし、同じカーネルを注入して、読み取り/書き込みの両方のデータベース操作を持つSymfonyコマンドを実行する新しいSymfony\Bundle\FrameworkBundle\Console\Application
を作成することです。Mysqlエラー:Mysqlサーバーがなくなりました
ここから問題が始まります。通常、同時に、私は通常、生成された4つのワーカープロセスがメッセージを消費するようにしておきます。同時に、すべての消費者は異なるデータだけで同じデータベース操作を行い、基本的にすべてのプロセスが同じSymfony RabbitMQコンシューマを実行します。場合によっては問題なく動作しますが、MySQLはエラー"MySQL server has gone away"
を返すことがあります。通常、これを修正するために、スーパーバイザサービスを再起動して、ワーカープロセスを強制終了して再度生成する必要があります。通常は再起動後、数時間は正常に動作しますが、実際には予測できないパターンです。
MySQLの接続タイムアウトではありません。小さな操作であり、MySQLのconnect_timeout
を増やしたからです。私もwait_timeout
を2日間増やしました。基本的に、これは問題を解決しません。