Scott hi, i calculate all of my jdbc pool size. Maximum is 300 connections from components wich use jdbc. I don't think that this is a good idea use pgbouncer, because our application using spring framework which using jdbc and prepared statement. I try to talk with our developer about disabling prepared statement in this framework, they don't want do this. Thats why i will try to upgrade HW and buy CPU with more core as you say based on formula 3-4xcore. But most of this connection is idle. This is a web based app not a datawarehouse, thats why all this connection is lightwear.
About my db freeze i set this kernel parameter: echo 1048576 > /proc/sys/vm/min_free_kbytes echo 80 > /proc/sys/vm/vfs_cache_pressure
And my freeze intervals is steel smaller. I try to dig deeper.