Rust Diesel r2d2のpool数設定

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

スポンサードリンク

diesel = { version = "1.4.4", features = ["postgres", "chrono", "r2d2"] }

で、r2d2でconnection poolingを使用する時。

デフォルトのpool数は10個みたい。

で、actix-webなんかだと起動時にアプリケーションが4スレッド立ち上がるので、4 * 10個のセッションがPostgreSQLに接続される。

なので油断しているとPostgreSQL側のmax_connection数がオーバーしてしまうなんてこともある。

アプリ側でpool数を設定するには

let manager = ConnectionManager::<PgConnection>::new(database_url);
let pool = Pool::builder().max_size(4).build(manager).expect("Failed to create pool");

max_size()で設定できる。この場合、4 * actix_webのスレッド数分、接続が張られる。