24MB shared_buffers ayarı muhafazakar varsayılan, 16GB RAM ile özel bir veritabanı için çok daha yüksek olması gerektiğini söyleyebilirim. Ancak evet, yeniden boyutlandırmak için sunucuyu yeniden başlatmanız gerekir. Performans yapılandırma yönergeleri için http://wiki.postgresql.org/wiki/Performance_Optimization iyi bir başlangıç noktasıdır. Paylaşılan_buffers'ı 4GB veya 6GB olarak ayarlamak daha makul görünebilir.
Linux'ta bu kadar paylaşılan belleğin bir bloğunu ayırmak için kernel.shmmax sysctl ayarını (/etc/sysctl.conf dosyasında veya sadece / proc / sys / kernel / shmmax yazarak) ayarlamanız gerektiğini unutmayın. Ne kadarının talep edildiğini belirten bir hata alırsanız, kernel.shmmax değerini bundan daha yüksek olarak ayarlamanız gerekir.
Çok fazla belleğiniz olduğundan, varsayılan work_mem değerini daha yüksek olarak ayarlamayı düşünebilirsiniz, bu da sıralama ve karma (grup / sipariş / farklı vb.) Gibi şeylerin geçici dosyalar kullanmak yerine bellekte çalışma eğiliminde olmasını sağlar. Bunu yapmak için sunucuyu yeniden başlatmanız gerekmez, sadece yapılandırma dosyasını güncelleyin, hizmeti yeniden yükleyin ve yeni oturumlar yeni ayarı alacaktır. Bir oturum için varsayılan çalışma belleği 1 MB'dir, tek seferde kullanılabilecek maksimum değeri hesaplayabilir ve bunun work_mem * max_client_connectionsne gibi bir etkisi olacağını tahmin edebilirsiniz.
Ayrıca planlayıcıya çekirdek FS katmanının postgresql'in paylaşılan arabelleklerinin dışında bellekte çok fazla sayfa önbelleğe alacağını belirtmek için active_cache_size değerini artırmalısınız.
vb. umarım bu sizi iyi bir başlangıç yapar.