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のスレッド数分、接続が張られる。