PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 16. ����������ʱ���� | Fast Forward | Next |
һ�δ���PostgreSQL��װ������ľ����ֲ���ϵͳ����Դ���ޡ� ������Щϵͳ�ϣ��������õ͵��㶼����һ��"����"��װ���� ����������������⣬������Ķ���
�����ڴ���źŵƵ���ȷ�з���"System VIPC" ��������Ϣ���У���������PostgreSQL����ûʲô��ϵ���� ���������ִ�����ϵͳ���ṩ������ԣ�������������ϵͳȱʡ�������������㹻����Դ���������� BSD ��Դ��ϵͳ�� ������QNX��BeOS��ֲ��PostgreSQL�Լ��ṩ�����Ƶ��滻ʵ�֡���
��ȫȱ����Щ���Ƶı���ͨ�����ڷ�����������ʱ��� Illegal system call���� ��ʱ�������������ں�����ûʲô�����ġ� PostgreSQL û���Ǹɲ��˻
��� PostgreSQL ��������ЩIPC ��Դ��Ӳ����֮һ��ʱ��ͻ�ܾ�������������һ���൱�������ԵĴ�����Ϣ��������������ʲô�����Լ���ҪΪ����Щʲô�� ���ּ� Section 16.3.1���� ��ص��ں˲����ڲ�ͬϵͳ֮��������Թ̶������Table 16-2 ��һ���ſ��� �������������ǵķ���ȴ���ֶ���������Ҫע����ǣ�������������������Ļ���������Ҫ���±����ں�������Щ���á�
Table 16-2. System V IPC����
���� | ���� | ����ȡֵ |
---|---|---|
SHMMAX | ������ڴ�γߴ磨�ֽڣ� | 250kB + 8.2 kB * shared_buffers + 14.2 kB * max_connections ֱ������� |
SHMMIN | ��С�����ڴ�γߴ磨�ֽڣ� | 1 |
SHMALL | ���ù����ڴ�����������ֽڻ���ҳ�棩 | ������ֽڣ��ͺ� SHMMAX һ���������ҳ�棬ceil(SHMMAX/PAGE_SIZE) |
SHMSEG | ÿ����������ڴ������ | ֻ��Ҫ 1 ���Σ�����ȱʡ����ߵöࡣ |
SHMMNI | ϵͳ��Χ������ڴ������ | ���� SHMSEG ������������Ӧ�õĿռ� |
SEMMNI | �źŵƱ�ʶ������С������Ҳ����˵���ף� | ����ceil(max_connections / 16) |
SEMMNS | ϵͳ��Χ������źŵ����� | ceil(max_connections / 16) * 17������������Ӧ�õĿռ� |
SEMMSL | ÿ���źŵ���С�źŵ����� | ���� 17 |
SEMMAP | �źŵ�ӳ����ļ�¼���� | �����ı� |
SEMVMX | �źŵƵ����ֵ | ���� 1000 ��ȱʡͨ����32767�����DZ��ȣ�����Ҫ�ģ� |
����Ҫ�Ĺ����ڴ������ SHMMAX�� ���ֽڼǵĹ����ڴ�ο�ӵ�е����ߴ硣 ������յ�����shmget������Invalid argument �����Ĵ�����Ϣ����ô���п������㳬�������ˡ� Ҫ��Ĺ����ڴ����������Ļ�����������-Bѡ������������������-Nѡ��ı仯���仯�� ����ǰ��������Ҫ�����ء� ����ˣ���Ϊһ����ʱ�Ľ������������Խ�����Щ�������ƹ�ʧ�ܡ��� ������Եع��ƣ�����Թ�������Ҫ�Ķγߴ磬�� Table 16-2 ���н��顣 �κ���õ��Ĵ�����Ϣ�����������ʧ�ܵijߴ硣
��Щϵͳ��ϵͳ���湲���ڴ��������SHMALL���������ơ� ��ע�������ֵ�����㹻��PostgreSQL ��������ʹ�ù����ڴ�ε�Ӧ�õ��ܺ͡� ��ע�⣺SHMALL �ںܶ�ϵͳ������ҳ�������������ֽ���������ġ���
��̫���ܳ�������ǹ����ڴ�ε���С�ߴ磨SHMMIN���� �� PostgreSQL��˵��Լ�� 256 kB ���ң�ͨ��ֻ�� 1���� ��ϵͳ��Χ��SHMMNI����ÿ���̣�SHMSEG�� ������ڴ��������Ӧ�û�������⣬�������ϵͳ����������㡣
PostgreSQL ÿ�����������ʹ��һ���źŵƣ�-Nѡ��� �� 16 ��Ϊһ�ס�ÿ���źŵƻ�������ʮ�߸��źŵƣ� ������洢һ��"magic number����־���֣�"�� �Լ�������Ӧ��ʹ�õ��źŵƼ���ͻ�� ϵͳ�������źŵ���Ŀ����SEMMNS���õģ� ������ֵӦ�����ٺ� max_connections ����һ������ÿʮ�������ӻ�Ҫ�����һ���� ������Table 16-2 ����Ĺ�ʽ���� ����SEMMNI����ϵͳ��һ�ο��Դ��ڵ��źŵƼ�����Ŀ�� ��������������Ӧ��Ϊ ceil(max_connections % 16)�� ���������������Ŀ��һ����ʱ���ƿ�ʧ�ܵķ������������ʧ��ͨ�������Ժ���semget �Ĵ�����Ӧ No space left on device ��ú������Ի�
��ʱ�����б�Ҫ����SEMMAP��ʹ֮���ٰ��� SEMMNS���á�������������źŵ���Դӳ��ijߴ磬 ���õ�ÿ���������źŵƿ������ӳ���д��һ����¼�� ÿ��һ���źŵƱ��ͷţ���ô��Ҫô����뵽��ӳ����һ�����������ͷŵĿ������У�Ҫôע���һ���µ���ڡ����ӳ����������Ƭ�� ��ô���ͷŵ��źŵƾͶ�ʧ�ˣ��������𣩡����ʱ�䳤�źŵƿռ����Ƭ�˻ᵼ�¿��õ��źŵƱ�Ӧ���е��źŵ��١�
SEMMSL ����������һ���źŵ�������ж����źŵƣ����� PostgreSQL����Ӧ�������� 17��
��������� "semaphore undo���źŵƻָ���"�йأ����� SEMMNU �� SEMUME����Щ�� PostgreSQL �ء�
�����ڴ�. ȱʡʱ��ֻ֧�� 4 MB �Ĺ����ڴ档���ס�����ڴ��Dz��ܷ�ҳ�ģ��������� RAM ����ġ� Ҫ�������ϵͳ֧�ֵĹ���������Ŀ��������ں������ļ�������������У�
options "SHMALL=8192" options "SHMMAX=\(SHMALL*PAGE_SIZE\)"
SHMALL �� 4KB ҳΪ��λ���㣬���� 1024 ҳ����� 4 M �����ڴ档 ��������Ķ����ѹ����ڴ��������ӵ� 32 MB�� �������� 4.3 ���߸��°汾���ˣ��������Ҫ���� KERNEL_VIRTUAL_MB�� ����ȱʡ�� 248�������������֮��Ȼ������ں˲�����
�������� 4.0 ���߸���İ汾�ģ� ���� bpatch �ҳ���ǰ�ں˵� sysptsizeֵ������������ʱ��̬����ġ�
$ bpatch -r sysptsize 0x9 = 9
Ȼ�� SYSPTSIZE��Ϊ���ں������ļ����һ��Ӳ����ֵ�� �� bpatch �������ֵ������Ϊ����Ҫ��ÿ������� 4 MB �����ڴ��ټ� 1��
options "SYSPTSIZE=16"
sysptsize������ sysctl �ġ�
�źŵ�. ����ܻ���Ҫ�����źŵƵ�������ϵͳȱʡ������ 60 ֻ�������� 50 �� PostgreSQL ���ӡ� ���ں������ļ�����������Ҫ��ֵ�����磺
options "SEMMNI=40" options "SEMMNS=240"
�����ں�ʱ��Ҫ��ѡ�� SYSVSHM �� SYSVSEM�� ��ȱʡ�Ǵġ��������ڴ�����ߴ�����ѡ��SHMMAXPGS����ҳ�ƣ��� ������ʾ��һ�����������Щ���������ӣ�
options SYSVSHM options SHMMAXPGS=4096 options SHMSEG=256 options SYSVSEM options SEMMNI=256 options SEMMNS=512 options SEMMNU=256 options SEMMAP=256
���� NetBSD �� OpenBSD� �ؼ���ʵ�����ǵ����� option��
�����ԭ��ʹ�� sysctl ���ý������ڴ����� RAM ���Ա������DZ�������ȥ��Ҳ����kern.ipc.shm_use_phys��
ȱʡ���ÿ�������ͨ��װ���㹻���ˡ� �� HP-UX 10��SEMMNS�ij���ȱʡ�� 128�� ���ܶԴ�����ݿ�ڵ���˵̫С�ˡ�
IPC������ System Administration Manager��ϵͳ�������� ��SAM������� Kernel Configuration->Configurable Parameters ���á������������Ժ��� Create A New Kernelѡ�
�� 2.2 �ں���ȱʡ�Ĺ����ڴ����ƣ� SHMMAX �� SHMALL������ 32 MB�� ����������� proc �ļ�ϵͳ������Щֵ���������𣩡� ���磬Ҫ���� 128 MB��
$ echo 134217728 >/proc/sys/kernel/shmall $ echo 134217728 >/proc/sys/kernel/shmmax
�������Щ����ŵ�һ������ʱ���еĽű��С�
���⣬������ϵͳ���еĻ��������ʹ�� sysctl ��������Щ������ ����һ���� /etc/sysctl.conf ���ļ���Ȼ��������������������ļ��У�
kernel.shmall = 134217728 kernel.shmmax = 134217728
ͨ����������ʱ��ᴦ������ļ��� ����Ҳ�����Ժ���ȷ���� sysctl��
�����������κ�Ӧ����˵���㹻�ˡ� ��������Լ��鿴������Կ������漸���ļ��� /usr/src/linux/include/asm-xxx/shmparam.h �� /usr/src/linux/include/linux/sem.h.
�� OS X 10.2 �Լ�����汾� �༭�ļ� /System/Library/StartupItems/SystemTuning/SystemTuning ������������������Щ��ֵ��
sysctl -w kern.sysv.shmmax sysctl -w kern.sysv.shmmin sysctl -w kern.sysv.shmmni sysctl -w kern.sysv.shmseg sysctl -w kern.sysv.shmall
�� OS X 10.3 ���Щ�����ƶ��� /etc/rc ����ȥ�ˣ�����������༭�� ����Ҫ��������������������Ч����ע�� /etc/rc ͨ���ᱻ OS X ���¸��� ������ 10.3.6 �� 10.3.7��������ÿ�θ��º�����ܶ���Ҫ���±༭��
�����ƽ̨�ϣ�SHMALL ���� 4KB ҳ�������ġ�
ȱʡ����ʱ��ֻ����ÿ�� 512KB �����ڴ棬���ֻ�� -B 24 -N 12�õġ� Ҫ�������ã����Ƚ��� /etc/conf/cf.dĿ¼�� Ҫ��ʾ��ǰ�����ֽڼǵ� SHMMAX������
./configure -y SHMMAX
���� SHMMAX����ֵ��
./configure SHMMAX=value
���� value ���������õ����ֽڼǵ���ֵ�� ���������Ժ�SHMMAX���������ں�
./link_unix
Ȼ������
���ٶ��ڰ汾 5.1 ���ԣ������б�ҪΪ���� SHMMAX �����IJ�������������ã� ��Ϊ���������������Ϊ�������ݶ����������ڴ�ʹ�á���������� DB/2 ���������ݿⳣ�õ����á�
���������ǿ����б�Ҫ�� /etc/security/limits ������ȫ�� ulimit ulimit ��Ϣ����Ϊ�ļ���С��ȱʡӲ���ƣ�fsize���Լ��ļ�����nofiles������̫���ˡ�
���ٵ��汾 2.6 Ϊֹ�������ڴ�ε�ȱʡ������ö� PostgreSQL ��˵��̫���ˡ���ص����ÿ�����/etc/system�����ģ� ���磺
set shmsys:shminfo_shmmax=0x2000000 set shmsys:shminfo_shmmin=1 set shmsys:shminfo_shmmni=256 set shmsys:shminfo_shmseg=256 set semsys:seminfo_semmap=256 set semsys:seminfo_semmni=512 set semsys:seminfo_semmns=512 set semsys:seminfo_semmsl=32
��Ҫ����ϵͳ������Ч��
�ּ� http://sunsite.uakom.sk/sunworldonline/swol-09-1997/swol-09-insidesolaris.html ��ȡ���� Solaris ����Ĺ����ڴ����Ϣ��
�� UnixWare 7 �ϣ�ȱʡ�������������ڴ���� 512 kB�� �����ֻ��-B 24 -N 12�õġ�Ҫ��ʾSHMMAX�ĵ�ǰֵ������
/etc/conf/bin/idtune -g SHMMAX
�ͻ���ʾ���ֽڼǵĵ�ǰ��ȱʡ����С�����ֵ�� Ҫ��SHMMAX����һ����ֵ�����У�
/etc/conf/bin/idtune SHMMAX value
���� value���������õ����ֽڼǵ���ֵ�� ������SHMMAX���ؽ��ں�
/etc/conf/bin/idbuild -B
Ȼ������
Unix ��ϵͳǿ���������Դ���ƣ���Щ���ƿ��ܸ������ PostgreSQL �����������С� ����������Ҫ�Ƕ�ÿ���û��Ľ�����Ŀ�����ƣ�ÿ�����̴��ļ���Ŀ�� �Լ�ÿ�����̿��õ��ڴ档 ��Щ������ÿ������һ��"Ӳ"���ƺ�һ��"��"���ơ� ������ʵ���ǹ��õģ����û������Լ��ij����ΪӲ���Ƶ���Ŀ�� ��Ӳ������ֻ���� root �û��ĵ����ơ� ϵͳ���� setrlimit ����������Щ������ shell ���ڽ����� ulimit��Bourne shells�� ��limit ��csh�� �����������������Ͽ�����Դ���Ƶġ� �� BSD ������ϵͳ�ϣ��ļ�/etc/login.conf �����ڵ�¼ʱ�Ը�����Դ����ʲô����������ֵ�����IJ���ϵͳ�ĵ���ȡϸ�ڡ� ��صIJ����� maxproc�� openfiles���� datasize�� ���磺
default:\ ... :datasize-cur=256M:\ :maxproc-cur=256:\ :openfiles-cur=256:\ ...
��-cur �������ƣ����渽�� -max �Ϳ�������Ӳ���ơ���
�ں�ͨ��Ҳ��һЩϵͳ��Χ����Դ���ơ�
�� Linux �ϣ� /proc/sys/fs/file-max �����ں˿���֧�ֵ�����ļ����� �����ͨ�������ļ�д��һ����ͬ����ֵ�Ĵ�ֵ�� ������ /etc/sysctl.conf ������һ����ֵ�� ÿ�����̵������ļ��������ڱ����ں˵�ʱ��̶��ģ� ���� /usr/src/linux/Documentation/proc.txt ��ȡ������Ϣ��
PostgreSQL ������ÿ�����Ӷ�ʹ��һ�����̣� ������Ӧ�������������������ͬ�Ľ��������ټ������ϵͳ������������Ҫ����Ŀ�� ͨ�����������ʲô���⣬���������һ̨���������ж���������������Ҫ�������������
���ļ���Ŀ�ij���ȱʡ����ͨ������Ϊ"����Ѻ�"��ֵ������˵��������û�������һ̨������ �����ᵼ��ֻʹ��ϵͳ��Դ�IJ����������������һ̨����������������������Ҳ���������Ҫ�ģ�����������ķ������ϣ��������Ҫ���������ơ�
���������һ�ߣ�һЩϵͳ��������Ľ��̴dz�����ļ����������ô����������ô�ɣ���ϵͳ��Χ�����ͺ����״ﵽ�� ����㷢�������������Ҳ�����ϵͳ��Χ�����ƣ� ��Ϳ��� PostgreSQL �� max_files_per_process ���ò��������ƴ��ļ��������ġ�
�� Linux 2.4 �Լ�֮��İ汾�ȱʡ�������ڴ����Ϊ���Ƕ� PostgreSQL ���ŵġ� ԭ�����ں�ʵ���ڴ���ύ�ķ���������������̵��ڴ�������ϵͳ�ù������ڴ棬 ��ô�ں˿��ܻ���ֹ PostgreSQL ��������postmaster���̣���
������������������飬��ῴ���������������ں���Ϣ���ο����ϵͳ�ĵ������ã������������ܿ�����������Ϣ����
Out of Memory: Killed process 12345 (postmaster).
��ͱ��� postmaster ��Ϊ�ڴ�ѹ������ֹ�ˡ� �������е��������ӽ�����������ת�������µ����ӽ������ܡ� Ҫ��ָ�����Ӧ������ PostgreSQL��
һ�������������ķ�������һ̨��ȷ�Ų�����Ϊ�������̶��ľ��ڴ�Ļ��������� PostgreSQL��
�� Linux 2.6 �Լ��Ժ�İ汾�һ�����õĽ�����������ڴ����Ϊ�� �������Ͳ�����"���ύ"�ڴ档����ͨ���� sysctl ѡȡһ���ϸ�Ĺ��ύģʽʵ�ֵģ�
sysctl -w vm.overcommit_memory=2
������ /etc/sysctl.conf ���һ����Ч����Ŀ�� ����ܻ�ϣ������ص����� vm.overcommit_ratio�� ��ϸ��Ϣ������ں��ĵ��ļ� Documentation/vm/overcommit-accounting��
��Щ��Ӧ�̵� Linux 2.4 �ں��������� 2.6 ���ύ�� sysctl�� ��������û����ش�����ں������� vm.overcommit_memory Ϊ 2 ֻ����������㣬�����Ǹ��á� ���ǽ�������һ��ʵ�ʵ��ں�Դ���루�����ļ� mm/mmap.c ����� vm_enough_memory �������� ��ʵһ�����������İ汾����ڵģ�Ȼ������ 2.4 �ں���ʹ��������ԡ� �ĵ��ļ� overcommit-accounting �Ĵ������ܵ�����������Դ��ڵ�֤���� ��������⣬��ѯ������ں˹�Ӧ�̵�ר�ҡ�