私は、データストアとしてPostgresを使用するRuby on railアプリケーション(Mastodon)をホストしています。Postgresqlに関する多くのリクエストを処理するには
私は多くのリクエストを受け取りました。これは、アプリケーションがPostgresで話すのを待つ必要があるプールに関する問題を引き起こします。
私はこの構成ではPgbouncerを使用:
max_client_conn = 2000
default_pool_size = 50
私はそのようなPostgresのを微調整しています
max_connections = 500
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 1048kB
maintenance_work_mem = 128MB
min_wal_size = 1GB
max_wal_size = 2GB
checkpoint_completion_target = 0.7
wal_buffers = 16MB
default_statistics_target = 100
DBサーバは、2GのRAMを搭載した専用のVPS上です。
私はレール側に乗ったエラーの種類:
a connection from the pool within 5.000 seconds (waited 5.000 seconds); all pooled connections were in use
そして、時には要求タイムアウトに関するエラー(リクエストが90000msよりも長く走りました)。この設定で
マイレールのアプリスポーン労働者:
- WEB_CONCURRENCY=4
- MAX_THREADS=10
- DB_POOL=20
任意のアイデアはどのようにこの忙しいPostgresのプールの問題を停止するには? 設定上の問題かもしれません。
他の方法であれば、Postgresスレーブの読み込みがあるでしょうか?私はビットがリクエスト番号を超過してい
..