2006ǯ09��14��

DB�����и���Linux���塼�˥󥰤�ͤ��� �� ���ꥪ���С����ߥå���

¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÅÐÏ¿

C�ǥץ�������񤤤Ƥ������̤Υ������ݤ������ʤä��Ȥ�������� malloc��Ȥ��Ȼפ��ޤ��������κݤˤ�����ͤ�NULL���ɤ�����Ƚ�Ǥ��ƥ��顼���������Ф��Ȼפ��ޤ�����������Linux �Υ���������֥����ƥ�ˤϡ֥��ꡦ�����С����ߥåȡפȤ������������ꡢ��������Ƥ������ʾ���ΰ����ݤǤ��Ƥ��ޤ��ޤ���

��˰ʲ��Τ褦�ʴ�ñ�ʥ����� (alloctest.c) ��񤤤Ƥߤޤ���


#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/* �˴ؤ���ʸ��

klab_gijutsu2 at 17:13��Comments(2)��TrackBack(0)��kernel | mysql

�ȥ�å��Хå�URL

���ε����ؤΥ�����

2. Posted by imsut   2006ǯ12��06�� 20:41
����ˤ��ϡ�OOM Killer�Τ��ȤϻϤ���Τ�ޤ������ٶ��ˤʤ�ޤ���

> MySQL�Υѥե����ޥ󥹥��塼�˥󥰤ʤɤ򤹤�ݤˤϡ�overcommit_ratio=2 �ˤ���

��overcommit_memory=2�ˤ��ơפǤϤʤ��Ǥ��礦��? _ratio=2���ȡ������������Ȥˤʤꤽ���Ǥ���
3. Posted by Yasui   2006ǯ12��06�� 21:18
��������������

imsut���󡢤���Ŧ���꤬�Ȥ��������ޤ���
��ʸ�������ޤ�����
�������� ratio=2 �ˤ���ȶ����������Ȥˤʤ�ޤ���(^^;

���ε����˥����Ȥ���

̾��:
URL:
  ����òµ­²ï¿½: ɾ��: ��    ��
 
 
 
Blog�⸡��
�ǿ�����
Archives
���Υ֥����ˤĤ���
DSAS�Ȥϡ�KLab �����ۤ����Ѥ��Ƥ��륳��ƥ�ĥ����ӥ��Ѥ�Linux�١����Υ���ե�Ǥ�������5����Υǡ������󥿤ˤƹ��ۤ������Ѥ��Ƥ��ޤ������桹��DSAS����Ȥ��䤹�����������ˡ������Ƥ����ϤDZ��ѤǤ��뤳�Ȥ��ܻؤ��ơ��������ɤ˶Ф���Ǥ��ޤ���
���Υ֥����Ǥϡ������ DSAS �ǻȤäƤ��뵻�ѤξҲ�䡢�¸����Ƥߤ���̤���𡢥ȥ�֥�˴������ޤ줿���ηи��̤ʤɡ���������������������򿥤�ޤ��ƾҲ𤷤Ƥ��������Ȼפ��ޤ���
�ǿ�������
<%==comments[n].author%>
<% } %>


'); label.html('\ �饤�֥ɥ��֥����ǤϹ���Υѡ����ʥ饤�������¬��Τ��᥯�å���(cookie)����Ѥ��Ƥ��ޤ���
\ ���ΥХʡ����Ĥ��뤫�������³���뤳�Ȥǥ��å����λ��Ѥ�ǧ������������ΤȤ����Ƥ��������ޤ���
\ �ޤ��������ͤ����ҥѡ��ȥʡ���Ȥˤ��������μ�³���ˤ�ꡢ���å����λ��Ѥ�������뤳�Ȥ�Ǥ��ޤ���
\ �ܺ٤��饤�֥ɥ����ѵ���򤴳�ǧ����������\ '); banner.append(label); var closeButton = $('