kern.ipc.shmmax=1073741824
değerini hemen hemen 2 katına çıkarttığımda sorun düzeldi. kern.ipc.shmmax=2073741824 nedeni: shared_buffer komple shared memory ancak shared memory için verdiğiniz değer sistemde çalışan diğer uygulamaların da kullandığı ortak memory kapasitesini aşmamalı. Ortak kullanılan bir shared memory olduğundan postgresql'e bu kadarlık alan içerisinde kendine yeteni kadar kullan denilmelidir. shmax degeri 1GB olunca en fazla 440MB tanımlanabiliyor... Örnek: max_connections = 100 # (change requires restart) # Note: Increasing max_connections costs ~400 bytes of shared memory per # connection slot, plus lock space (see max_locks_per_transaction). You might # also need to raise shared_buffers to support more connections. shared_buffers = 512MB # min 128kB or max_connections*16kB İsmail Yenigül'e teşekkürler... From: Mesut GÜLNAZ [mailto:[EMAIL PROTECTED] Sent: Tuesday, April 29, 2008 10:40 AM To: 'freebsd@lists.enderunix.org' Subject: postgresql ve performans İsmail yenigül arkadaşımızın hazırlamış olduğu postgresql de performans konulu dökümandan yararlanarak alt yapısı # egrep CPU /var/run/dmesg.boot CPU: Intel(R) Xeon(TM) CPU 3.20GHz (3189.40-MHz 686-class CPU) Hyperthreading: 2 logical CPUs cpu0: <ACPI CPU> on acpi0 # top -S last pid: 61371; load averages: 0.62, 0.61, 0.56 up 0+19:49:52 10:28:12 189 processes: 4 running, 129 sleeping, 56 waiting CPU states: 16.7% user, 0.0% nice, 10.9% system, 1.6% interrupt, 70.8% idle Mem: 209M Active, 2599M Inact, 219M Wired, 20K Cache, 112M Buf, 798M Free Swap: 6144M Total, 6144M Free Şeklinde olan bir sunucu üzerinde sysctl.conf dosyasına kern.ipc.shmmax=1073741824 #shmall = shmmax / 4096 (page size) kern.ipc.shmall=262144 kern.ipc.semmsl=512 kern.ipc.semmap=256 parametrelerini /boot/loader.conf dosyasına kern.ipc.semmni=512 kern.ipc.semmns=1024 kern.ipc.semmnu=512 kern.maxusers=512 parametrelerini girdim. postgresql.conf dosyasında ise aşağıdaki değişiklikleri yaptım. max_connections = 100 shared_buffers = 512MB work_mem = 5MB effective_cache_size = 1024MB sunucuyu yeniden başlattıktan sonra postgresql başlangıçta çalışmadı ve ctrl-c ile başlatılmasını durdurdum ve sunucunun açılmasını sağladım. Daha sonradan elle çalıştırmaya çalıştığımda aşağıdaki hatayı aldım. Bu hata ctrl-c ile kesmeden öncede verilen hatanın aynısı. Sorun nedir ve nasıl çözebilirim? Değerleri nasıl değiştirerek uygun bir değerler dengesi sağlayabilirim... Apr 28 14:27:54 www postgres[47361]: [1-1] ÖLÜMCÜL: shared memory segment oluşturulamıyor: Invalid argument Apr 28 14:27:54 www postgres[47361]: [1-2] AYRINTI:Başarısız sistem çağrısı: shmget(key=5432001, size=140214272, 03600). Apr 28 14:27:54 www postgres[47361]: [1-3] İPUCU:Bu hata, PostgreSQL'in shared memory isteğinin kernelin SHMMAX parametresinde verilen değerinin aıldığını gösteriyor. Apr 28 14:27:54 www postgres[47361]: [1-4] İstenilen bellek boyutunu dürebilir veya kerneli daha büyük bir SHMMAX parametresi ile yeniden konfigure edebilirsiniz. Apr 28 14:27:54 www postgres[47361]: [1-5] İstenilen bellek boyutunu (şu an 140214272 bayt) düşürmek için PostgreSQL'in shared_buffers parametresini (şu an 16384) ve/veya Apr 28 14:27:54 www postgres[47361]: [1-6] max_connections (şu an 100) parametrelerini düşürebilirsiniz. Apr 28 14:27:54 www postgres[47361]: [1-7] Eğer istenilen bellek boyutu zaten küçük ise, kernelin SHMMIN parametresinden düşük olabilir, bu durumda istenilen bellek Apr 28 14:27:54 www postgres[47361]: [1-8] boyutunu SHMMIN değerine kadar büyütmeniz lazım veya SHMMIN değerini düşürmeniz lazmı. PostgreSQL dokümanlarında shared memory Apr 28 14:27:54 www postgres[47361]: [1-9] konfigurasyonu hakkında daha fazla bilgi bulabilirsiniz. İyi çalışmalar... Mesut GÜLNAZ