私のマシンで web.py サーバーを実行しています。このサーバーは、POST データを継続的に受信し、データの一部を MySQL(5.7.19) に保存し、一部を InfluxDB(1.3.1) に保存します。どちらも Ubuntu( 16.04.1)。
また、Python スクリプトをローカルで実行して、InfluxDB データを抽出し、MySQL データを操作しています。この python スクリプトは、メイン関数が実行されるたびに両方のデータベースへの新しい接続を作成します (毎回終了するたびに閉じます)。これは 1 秒あたり最大 10 回まで可能です。MySQLdb および InfluxDB Python API を使用しています。
問題は、しばらくすると、両方のデータベースへの接続タイムアウトが時々発生することです。
エラーメッセージは次のようになります。
MySQL: OperationalError: (1205、「ロック待機タイムアウトを超えました。トランザクションを再起動してください」)
InfluxDB: InfluxDBServerError: {"エラー":"タイムアウト"}
すべてのコードを注意深く調べた後、この問題の原因を見つけることができません。MySQL と Influx、あるいは Ubuntu でさえ、ユーザーごとの接続と時間に制限がありますか?
MySQL に関して言えば、一部の行は SELECT FOR UPDATE クエリを使用してロックされますが、コードでは、すべてのトランザクションが適切にコミットまたはロールバックされます。コミットまたはロールバックの前に接続が失われた場合、適切にロック解除されないロックされた行にアクセスしようとするため、MySQL のタイムアウトが説明されます。
InfluxDB に関して言えば、アトミックな挿入のタイムアウトを処理しているだけなので、私には少しも意味がありません。
誰かがこれらのタイムアウトの原因を知っているなら、私は永遠に感謝します!