DB�����и���Linux���塼�˥󥰤�ͤ��� �� ���ꥪ���С����ߥå���
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
char *p;
for(i=0;i<65536;i++){
p = (char *)malloc(65536);
if(0 == (long)p){
break;
}
}
printf("SIZE=%dMB\n",i*65536/1024/1024);
return(0);
}
swapoff �������� 1G �Υޥ���Ǥ����¹Ԥ���Ȥ���ʴ����ˤʤ�ޤ���
$ gcc -o alloctest alloctest.c
$ ./alloctest
SIZE=3052MB
���ʤߤ� free �η�̤Ϥ���ʴ����Ǥ���
$ free -m
total used free shared buffers cached
Mem: 938 728 209 0 191 118
-/+ buffers/cache: 418 519
Swap: 0 0 0
�ʤ�� 1G �Υޥ���ʤΤ� 3G ����ΰ����ݤ��뤳�Ȥ��Ǥ��Ƥ��ޤ��ޤ�����
Linux �β��ۥ��ꥷ���ƥ�Ǥϡ��ץ��������������ݤ���ݤˤϤ������󤢤�褦�˸��������Ƥ����ơ��ºݤ˥���������ȯ����������ʪ������������ƤƤ��ޤ�������ϡ���ǰ�Τ��ᤤ�äѤ��������ݤ��Ƥ������ɼºݤϤ���ʤ˻Ȥ�ʤ��ץ������פ�ʣ��ư���Ƥ���Ȥ��ʤɤˡ��ϡ��ɥ������꥽������Í�����Ѥ��뤿���ͥ�줿���ȤߤȤ����ޤ���
����Ǥϡ��ºݤ˥�����Â����������ɤ��ʤäƤ��ޤ��ΤǤ��礦����
�������о줹��Τ�Í̾�ʡ�OOM Killer�פȤ������ȤߤǤ���
Linux ���ºݤ˥�����Â�˴٤�ȡ��Ȥ��륢�르�ꥺ��Ǥ����Ĥ��Υץ����������ò¤·¡ï¿½ï¿½ï¿½ï¿½ï¿½ò¾¡¼ï¿½ï¿½ kill ���Ƥ��ޤ��ޤ���kill �����ץ������ϡ���ʬ��������Ȥ����Τ����Τ�ͳ������ޤ���
�Ĥޤꡢmalloc �η�̤ò¸«¤Æ¥ï¿½ï¿½ï¿½ï¿½ï¿½Â�Υ��顼�����ò¤·¤Æ¤ï¿½ï¿½ï¿½ï¿½È¤ï¿½ï¿½Æ¤â¡¢ï¿½ÂºÝ¤Ë¤ï¿½ï¿½Î½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ï¤Ê¤ï¿½ï¿½Î¤Ç¤ï¿½ï¿½ï¿½Linux ���ư���Ƥ������ƤΥץ������ϡ������ƥब������Â�ˤʤäƤ��Ƥⵤ�ˤ�����ư��ĤŤ��Ƥ��ޤ�������΢�Ǥ� OOM Killer �����ä��ȥץ���������ߤ��Ƥ���櫓�Ǥ���
���Ⱦ��ˤ�äƤϥѥե����ޥ��̤ˤ����� OOM Killer ��Í���ʻ��⤢��ޤ��Τǡ�ɬ�����⤳�λ��Ȥߤ������ȤϤ����ޤ��󤬡�������MySQL �� PostgreSQL �ʤɤ� DB�����ФǤ��ε�����ư���Ƥ����Τϴò¤·¤ï¿½ï¿½ï¿½ï¿½È¤Ç¤Ï¤ï¿½ï¿½ï¿½Þ¤ï¿½ï¿½ó¡£¥ï¿½ï¿½ï¿½ï¿½ï¿½Â�������Ƕ���Ū�˥ץ���������Ȥ���뤯�餤�ʤ顢 DB�����м��Ȥǥ�����Â�ò¸¡½Ð¤ï¿½ï¿½Æ¥ï¿½ï¿½é¡¼ï¿½ï¿½ï¿½ï¿½ï¿½ò¤·¤ï¿½ï¿½Û¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ç¤Ï¤Ê¤ï¿½ï¿½Ç¤ï¿½ï¿½ç¤¦ï¿½ï¿½ï¿½ï¿½
�����ͥ�2.6�Ǥϡ��ʲ��Υ��ޥ�ɤǤ���ư������椹�뤳�Ȥ��Ǥ���褦�ˤʤäƤ��ޤ���
# sysctl -w vm.overcommit_ratio=99
# sysctl -w vm.overcommit_memory=2
/proc/sys/vm/overcommit_ratio���dz��ݤǤ���ʪ������γ�����ꤷ�ޤ���
/proc/sys/vm/overcommit_memory �� 2�ˤ���ȥ��ꥪ���С����ߥåȤ�����ʤ��ʤ�ޤ���
��overcommit_ratio �Υǥե�����ͤ� 50 �Ǥ������ꤷ�ʤ��ޤޤ�����ܥ����Ⱦʬ�ޤǤ������ݤǤ��ʤ��ʤäƤ��ޤ��ޤ��ΤǤ����ղ��������Ǥʤ��Ȥ����餳����ǥ�����Â���ǤϤ���ޤ���
���ξ��֤���ۤɤ� alloctest ��¹Ԥ��Ƥߤޤ���
$ ./alloctest
SIZE=428MB
�ºݤζ������̤������ݤǤ��ʤ��ʤä��褦�Ǥ���
MySQL�Υѥե����ޥ󥹥��塼�˥󥰤ʤɤò¤¹¤ï¿½Ý¤Ë¤Ï¡ï¿½overcommit_memory=2 �ˤ��Ƴ��ݤǤ�����ꥵ���������¤��Ƥ����ޤ������꤬Â��ʤ��ʤä��� Out Of Memory �� MySQL ����ʬ�������褦�ˤʤ�ޤ��Τǡ��ºݤˤɤ�����Υ����ɬ�פȤ��Ƥ��뤫���狼��褦�ˤʤ�ޤ���
����ǥХåե��������ʤɤΥѥ�᡼��Ĵ�����ưפˤʤ�ΤǤϤʤ��Ǥ��礦����
����
/proc/sys/vm/* �˴ؤ���ʸ��
�ȥ�å��Хå�URL
���ε����ؤΥ�����
> MySQL�Υѥե����ޥ󥹥��塼�˥󥰤ʤɤ򤹤�ݤˤϡ�overcommit_ratio=2 �ˤ���
��overcommit_memory=2�ˤ��ơפǤϤʤ��Ǥ��礦��? _ratio=2���ȡ������������Ȥˤʤꤽ���Ǥ���
imsut���󡢤���Ŧ���꤬�Ȥ��������ޤ���
��ʸ�������ޤ�����
�������� ratio=2 �ˤ���ȶ����������Ȥˤʤ�ޤ���(^^;