問題タブ [time-wait]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
connection-pooling - PythonのMySQL接続プール?
Python を使用して大量のデータを処理し、MySQL で処理ステータスを維持しようとしています。しかし、python-mysql (Java の HikariCP のような) の標準接続プールがないことに驚いています。
私は最初に PyMySQL から始めました。プログラムが最初の数時間実行されるまで、物事は素晴らしかったです。数時間後、物事は失敗し始めました。次のような多くのエラーが発生していました。
さらに、接続プールがないために頻繁に接続を開いたり閉じたりしているため、多くのポートが TIME_WAIT 状態でスタックしていました。
thisとthisに従って、 tcp_fin_timeoutと ip_local_port_range を設定しようとしましたが、ほとんど何も改善されませんでした。
その後、MySQL がプーリング機能を備えた mysql.connector を提供していることを知りました。そのすべてを実行した後、パフォーマンスは実際に低下しました。より多くのプロセスが失敗し始めました。私はPythonのマルチプロセッシングモジュールを使用して、24コアのマシンで29個のプロセスを同時に実行しています(マルチプロセッシング.プールはデフォルトでこれを選択しませんでした)。以下はコードです。もちろん、 .my.cnf を使用してすべての資格情報を渡し、 git へのコミットを回避していました。
最後に、古いコードに戻しました。まだ PyMySQL を使用しており、エラーはそれほど頻繁ではありませんが、依然として大きな問題を引き起こしています。私は SQLAlchemy を調べましたが、プーリングに関するドキュメントはあまり見つかりませんでした。
mysql-python 接続プーリングの問題を他の人はどのように扱っているのでしょうか? 車輪を再発明する必要がないように、そこには何かがあるべきだと本当に信じています.
どんなポインタでも大歓迎です。