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

Cevap