16.4. Ä¿³Ú ÀÚ¿øÀÇ °ü¸®

´ë±Ô¸ð PostgreSQLInstallation¿¡¼­´Â, °ð¹Ù·Î °¢Á¾ ¿î¿µ ½Ã½ºÅÛÀÇ ÀÚ¿ø Á¦ÇÑÀ» ³Ñ¾î ¹ö¸®´Â ÀÏÀÌ ÀÖ½À´Ï´Ù (½Ã½ºÅÛ¿¡ µû¶ó¼­´Â, ½ÇÁ¦·Î "´ë±Ô¸ð"ÀÎ ¼³Ä¡°¡ ¾Æ´Ï¾îµµ, ÃâÇϽÃÀÇ ±âº»°ª¿¡¼­´Â ³Ê¹« ³·Àº °Íµµ ÀÖ½À´Ï´Ù). ÀÌ·± Á¾·ùÀÇ ¹®Á¦°¡ ¹ß»ýÇϸé, À̰͵éÀ» Àоî ÁÖ¼¼¿ä.

16.4.1. °øÀ¯ ¸Þ¸ð¸®¿Í semaphore

°øÀ¯ ¸Þ¸ð¸®¿Í semaphore´Â "System V IPC"·Î ºÒ¸³´Ï´Ù. (¸Þ½ÃÁö Å¥µµ ¶È°°½À´Ï´Ù¸¸, À̰ÍÀº PostgreSQL¿Í´Â °ü°è ¾ø½À´Ï´Ù). °ÅÀÇ ¸ðµç ÃֽŠ¿î¿µ½Ã½ºÅÛÀº ÀÌ·¯ÇÑ ±â´ÉÀ» Á¦°øÇϰí ÀÖ½À´Ï´Ù¸¸, ƯÈ÷ BSD À¯·¡·Î À¯È¿ÇÏ°Ô µÇ°í ÀÖ´Ù°í´Â ÇÒ ¼ö ¾ø°í, ±âº»°ªÀ¸·Î ÃæºÐÇÑ »çÀÌÁî°¡ ÀÖ´Ù°íµµ ÇÑÁ¤ÇÏÁö ¾Ê½À´Ï´Ù (WindowsÆÇ¿¡¼­´Â, PostgreSQL´Â µ¶ÀÚÀûÀÎ ´ëüÀûÀÎ ±¸ÇöÀ¸·Î ÀÌ·¯ÇÑ ±â´ÉÀ» Á¦°øÇϰí ÀÖ½À´Ï´Ù. ÀÌ ¶§¹®¿¡ º»¼³ÀÇ ´ëºÎºÐÀº ¹«½ÃÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù).

ÀÌ·¯ÇÑ ±â´ÉÀÇ ¿ÏÀüÇÑ °áÇÌÀº, ¼­¹ö ±âµ¿½ÃÀÇ Illegal system call¿¡·¯¿¡ ÀÇÇØ ÆÇ¸íµË´Ï´Ù. ±× °æ¿ì´Â Ä¿³ÚÀ» ´Ù½Ã ¼³Á¤ÇÒ ¼ö ¹Û¿¡ ¾ø½À´Ï´Ù. PostgreSQL´Â ÀÌ·¯ÇÑ ±â´É¾øÀÌ´Â ¿òÁ÷ÀÌÁö ¾Ê½À´Ï´Ù.

PostgreSQL°¡ ¿©·¯°¡ÁöIPCÀÇ Çϵå ÇѵµÀÇ Çϳª¸¦ ³ÑÀ¸¸é, ¼­¹ö´Â ±âµ¿À» °ÅºÎÇØ, ¹ß»ýÇÑ ¹®Á¦ ¹× ¹«¾ùÀ» ÇØ¾ß ÇÏ´ÂÁö¸¦ ¼³¸íÇÏ´Â ¿¡·¯ ¸Þ¼¼Áö¸¦ ³²±é´Ï´Ù (Section 16.3.1 µµ ÂüÁ¶ÇØ ÁÖ¼¼¿ä). °ü°èÇÏ´Â Ä¿³Ú ¸Å°³º¯¼ö´Â ´Ù¸¥ ½Ã½ºÅÛ»ó¿¡¼­µµ ÅëÀÏÇØ À̸§ÀÌ ºÙ¿©Áö°í ÀÖ½À´Ï´Ù (Table 16-1·Î °³·«À» ¾Ë ¼ö ÀÖ½À´Ï´Ù). ±×·¯³ª À̰͵éÀ» ¼³Á¤Çϱâ À§ÇÑ ¹æ¹ýÀº ´Ù¸¨´Ï´Ù. ÀÌÇÏ¿¡, ¸î °³ÀÇ Ç÷§Æû¿¡ Á¦¾ÈÀ» µì´Ï´Ù. ÀÌ·¯ÇÑ ¼³Á¤À» ¹Ù²Ù·Á¸é , ÀÚÁÖ ¸Ó½ÅÀ» Àç±âµ¿ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ°Ô µÇ¾î, Ä¿³ÚÀ» ÄÄÆÄÀÏ ´Ù½Ã ÇÒ Çʿ䰡 ÀÖ´Â °æ¿ì¸¶Àú ÀÖÀ»Å×´Ï ÁÖÀÇÇØ ÁÖ¼¼¿ä.

Table 16-1. System V IPC¸Å°³º¯¼ö

À̸§ ¼³¸í ÀûÀýÇÑ °ª
SHMMAX °øÀ¯ ¸Þ¸ð¸®¼¼±×¸ÕÆ®ÀÇ ÃÖ´ë »çÀÌÁî(¹ÙÀÌÆ®) ÃÖ¼Ò ¸Þ°¡¹ÙÀÌÆ®(º»¹®À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä)
SHMMIN °øÀ¯ ¸Þ¸ð¸®¼¼±×¸ÕÆ®ÀÇ ÃÖ¼Ò »çÀÌÁî(¹ÙÀÌÆ®) 1
SHMALL »ç¿ë °¡´ÉÇÑ °øÀ¯ ¸Þ¸ð¸®ÀÇ ÃÑ·®(¹ÙÀÌÆ® ¶Ç´Â ÆäÀÌÁö) ¹ÙÀÌÆ® ÁöÁ¤ÀÇ °æ¿ìSHMMAX¿Í °°½À´Ï´Ù. ÆäÀÌÁö ÁöÁ¤ÀÇ °æ¿ì´Â ceil(SHMMAX/PAGE_SIZE)ÀÔ´Ï´Ù.
SHMSEG ÇÁ·Î¼¼½º¸¶´ÙÀÇ °øÀ¯ ¸Þ¸ð¸®¼¼±×¸ÕÆ®ÀÇ ÃÖ´ë¼ö ÇÊ¿äÇÑ °ÍÀº 1 ¼¼±×¸ÕÆ®(segment) »ÓÀÔ´Ï´Ù¸¸, ±âº»°ªÀº Á» ´õ ¸¹¾ÆÁö°í ÀÖ½À´Ï´Ù
SHMMNI ½Ã½ºÅÛ ÀüüÀÇ °øÀ¯ ¸Þ¸ð¸®¼¼±×¸ÕÆ®ÀÇ ÃÖ´ë¼ö SHMSEG¿Í °°ÀÌ + ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǿëÀÇ °ø°£
SEMMNI semaphore ½Äº°ÀÚÀÇ ÃÖ´ë¼ö(Áï ¼¼Æ®) ÃÖÀú ceil((max_connections + autovacuum_max_workers) / 16)
SEMMNS ½Ã½ºÅÛ ÀüüÀÇ semaphoreÀÇ ÃÖ´ë¼ö ceil((max_connections + autovacuum_max_workers) / 16) * 17 + ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǿëÀÇ °ø°£
SEMMSL ¼¼Æ®¸¶´ÙÀÇ semaphoreÀÇ ÃÖ´ë¼ö  
SEMMAP semaphore ¸Ê¾ÈÀÇ Ç׸ñÀÇ ¼ö º»¹®À» ÂüÁ¶
SEMVMX semaphoreÀÇ ÃÖ´ë°ª ÃÖÀú 1000(±âº»°ªÀº º¸Åë 32767ÀÔ´Ï´Ù¸¸, °­Á¦´çÇÏÁö ¾Ê´Â ÇÑ ¹Ù²ÙÁö ¸»¾Æ ÁÖ¼¼¿ä)

°øÀ¯ ¸Þ¸ð¸®¿¡ °üÇÑ Á¦ÀÏ Áß¿äÇÑ ¸Å°³º¯¼ö´Â, °øÀ¯ ¸Þ¸ð¸®¼¼±×¸ÕÆ®ÀÇ ÃÖ´ë »çÀÌÁîÀÇ ¹ÙÀÌÆ®¼ö SHMMAXÀÔ´Ï´Ù. ¸¸¾à shmget·ÎºÎÅÍ Invalid argument¿Í °°Àº ¿¡·¯ ¸Þ¼¼Áö¸¦ ¹Þ¾ÒÀ» °æ¿ì, ¾Æ¸¶ ÀÌ »óÇÑÀ» ³Ñ°í ÀÖ½À´Ï´Ù. ÇÊ¿äÇÑ °øÀ¯ ¸Þ¸ð¸®¼¼±×¸ÕÆ®ÀÇ »çÀÌÁî´Â Table 16-2¿¡ ³ªÅ¸³»´Â °¢Á¾ÀÇ PostgreSQL¼³Á¤ ¸Å°³º¯¼ö¿¡ ÀÇÇØ ¹Ù²ò´Ï´Ù. (¿¡·¯½Ã¿¡ Ãâ·ÂµÇ´Â ¸Þ¼¼Áö¿¡´Â ¸ðµÎ, ÇÒ´ç ¿ä±¸¿¡ ½ÇÆÐÇÑ Á¤È®ÇÑ »çÀÌÁî°¡ ±âÀçµÇ¾î ÀÖ½À´Ï´Ù. ) ¿¡·¯¸¦ ¾ø¾Ö±â À§ÇÑ ÀϽÃÀûÀÎ ¹æ¹ýÀ¸·Î¼­ ÀÌ·¯ÇÑ ¼³Á¤À» ³·°Ô ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. SHMMAX¸¦ 2 ¸Þ°¡¹ÙÀÌÆ®·Î¼­ PostgreSQL¸¦ °¡µ¿½Ãų ¼ö°¡ ÀÖ½À´Ï´Ù¸¸, ¼ö¿ëÇÒ ¼ö ÀÖ´Â ¼º´ÉÀ» È®º¸Çϱâ À§Çؼ­´Â ²Ï º¸´Ù ¸¹Àº »çÀÌÁî°¡ ÇÊ¿äÇÕ´Ï´Ù. 10 ¸Þ°¡¹ÙÀÌÆ® ´ÜÀ§·ÎºÎÅÍ 100 ¸Þ°¡¹ÙÀÌÆ® ´ÜÀ§ÀÇ ¼³Á¤À» Ãßõ ÇÕ´Ï´Ù.

¶Ç, ½Ã½ºÅ۾ȿ¡´Â, ½Ã½ºÅÛ¿¡ À־ÀÇ °øÀ¯ ¸Þ¸ð¸®ÀÇ ÃÑ·®(SHMALL)¿¡ ´ëÇÑ Á¦ÇÑÀÌ ÀÖ´Â °ÍÀÌ ÀÖ½À´Ï´Ù. ÀÌ °ªÀ» È®½ÇÈ÷, PostgreSQL¿Í °øÀ¯ ¸Þ¸ð¸®¼¼±×¸ÕÆ®¸¦ »ç¿ëÇÏ´Â ´Ù¸¥ ¾îÇø®ÄÉÀ̼ÇÀÇ Çհ躸´Ù ÃæºÐÈ÷ Å©°Ô ÇØ ÁÖ¼¼¿ä (°æ°í: ¸¹Àº ½Ã½ºÅÛÀ¸·Î, SHMALL´Â ¹ÙÀÌÆ® ´ÜÀ§´Â ¾Æ´Ï°í ÆäÀÌÁö ´ÜÀ§ÀÔ´Ï´Ù).

¹®Á¦°¡ ÀûÀº °ÍÀº °øÀ¯ ¸Þ¸ð¸®¼¼±×¸ÕÆ®ÀÇ ÃÖ¼Ò »çÀÌÁî(SHMMIN)·Î, PostgreSQL¿¡¼­´Â ÃÖ´ë¿¡¼­µµ ´ë·« 500ų·Î¹ÙÀÌÆ®ÀÏ °ÍÀÔ´Ï´Ù(Åë»ó, 1ÀÔ´Ï´Ù). ½Ã½ºÅÛ ÀüüÀÇ ¼¼±×¸ÕÆ®(segment)ÀÇ ÃÖ´ë¼ö(SHMMNI) ȤÀº ÇÁ·Î¼¼½º¸¶´ÙÀÇ ¼¼±×¸ÕÆ®(segment)ÀÇ ÃÖ´ë¼ö(SHMSEG)¿¡ °üÇØ¼­, »ç¿ëÇϰí ÀÖ´Â ½Ã½ºÅÛ¿¡ 0À¸·Î ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº ÇÑ, ¹®Á¦°¡ ÀϾ´Â °ÍÀº °ÅÀÇ ¾ø½À´Ï´Ù. ¶Ç, ½Ã½ºÅÛ¿¡ µû¶ó¼­´Â, ½Ã½ºÅÛ³»ÀÇ °øÀ¯ ¸Þ¸ð¸®ÀÇ ÇÕ°è°ª¿¡µµ Á¦ÇÑÀ» ¼³Á¤ÇØ ÀÖ½À´Ï´Ù. ¾Æ·¡¿Í °°Àº Ç÷§Æû °íÀ¯ÀÇ Áö½Ã¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

PostgreSQL´Â, Çã°¡ÇÑ Á¢¼Ó(max_connections)¸¶´Ù 1°³ÀÇ semaphore¸¦ »ç¿ëÇØ, 16°³ÀÇ semaphore¸¦ 1 ÁýÇÕÀ¸·Î¼­ Ãë±ÞÇÕ´Ï´Ù. ÀÌ ÁýÇÕ °¢°¢Àº 17°³Â°ÀÇ semaphore¸¦ °¡Á®, ±× semaphore´Â ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǿ¡ »ç¿ëµÇ°í ÀÖ´Â semaphore ¼¼Æ®¿ÍÀÇ Ãæµ¹À» °ËÃâÇϱâ À§ÇÑ "magic number-"¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. ½Ã½ºÅÛ ³»ÀÇ semaphoreÀÇ ÃÖ´ë¼ö´Â SEMMNS¿¡ ÀÇÇØ ¼³Á¤µÇ´Â Çã°¡µÈ Á¢¼Ó 16°³ ¸¶´Ù ¿©ºÐÀÇ 1°³¸¦ ´õÇÑ °ªÀÌ»óÀº ¾øÀ¸¸é ¾ÈµË´Ï´Ù (Table 16-1ÀÇ °ø½ÄÀ» ÂüÁ¶ÇØ ÁÖ¼¼¿ä). SEMMNI¸Å°³º¯¼ö´Â ½Ã½ºÅÛ»ó¿¡ µ¿½Ã¿¡ Á¸ÀçÇÒ ¼ö ÀÖ´Â semaphore ÁýÇÕÀÇ ¼öÀÇ »óÇÑÀ» °áÁ¤ÇÕ´Ï´Ù. ±×·¯´Ï±î ÀÌ ¸Å°³º¯¼ö´Â Àû¾îµµ ceil((max_connections + autovacuum_max_workers) / 16)ÀÌ»óÀº ¾øÀ¸¸é ¾ÈµË´Ï´Ù. ÀϽÃÀûÀÎ ½ÇÆÐÀÇ È¸ÇÇÃ¥À¸·Î¼­´Â Çã°¡µÇ´Â Á¢¼ÓÀÇ ¼ö¸¦ ³»¸± ¼ö°¡ ÀÖ½À´Ï´Ù¸¸, No space left on device¶ó´Â È¥µ¿Çϱ⠽¬¿î ¸»ÀÌ semget()ÇÔ¼ö·ÎºÎÅÍ Ç¥½ÃµË´Ï´Ù.

°æ¿ì¿¡ µû¶ó¼­´Â SEMMAP¸¦ Àû¾îµµ SEMMNS¿Í µ¿ÀÏÇÑ Á¤µµ·Î ´Ã¸®´Â °ÍÀÌ ÇÊ¿äÇÏ°Ô µÇ´Â °æ¿ì°¡ ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â semaphore ÀÚ¿ø ¸ÊÀÇ »çÀÌÁ Á¤ÀÇÇØ, ±× Áß¿¡¼­´Â À¯È¿ÇÑ semaphoreÀÇ °¢°¢ÀÇ ÀÎÁ¢ÇÑ ºí·ÏÀÇ Ç׸ñÀÌ ÇÊ¿äÇÕ´Ï´Ù. semaphore ÁýÇÕÀÌ ÇØÁ¦µÇ¸é, ÇØÁ¦µÈ ºí·Ï¿¡ ÀÎÁ¢Çϰí ÀÌ¹Ì Á¸ÀçÇÏ´Â Ç׸ñ¿¡ Ãß°¡µÇ´ÂÁö, ȤÀº »õ·Î¿î ¸ÊÀÇ Ç׸ñ¾Æ·¡¿¡ µî·ÏµË´Ï´Ù. ¸ÊÀÌ °¡µæÂù °æ¿ì, ÇØÁ¦µÈ semaphore´Â(Àç±âµ¿ÇÒ ¶§±îÁö) ¾ø¾îÁý´Ï´Ù. semaphore °ø°£ÀÇ ´ÜÆíÈ­¿¡ ÀÇÇØ ½Ã°£ÀÌ Áö³¯ ¶§ ¸¶´Ù, À¯È¿ÇÑ semaphore°¡ ÀÖ¾î¾ß ÇÒ ¾çº¸´Ù Àû°Ô µÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.

1°³ÀÇ ÁýÇվȿ¡ ¸î °³ÀÇ semaphore°¡ ÀÖÀ»Áö¸¦ °áÁ¤ÇÏ´Â SEMMSL´Â PostgreSQL¿¡¼­´Â Àû¾îµµ 17Àº ¾øÀ¸¸é ¾ÈµË´Ï´Ù.

SEMMNU¿Í SEMUME¿Í °°Àº, ±× ¿ÜÀÇ ¿©·¯°¡Áö "semaphore undo"¿¡ °üÇÑ ¼³Á¤Àº PostgreSQL¿¡¼­´Â ¹®Á¦»ïÀ» Çʿ䰡 ¾ø½À´Ï´Ù.

BSD/OS

°øÀ¯ ¸Þ¸ð¸®. ±âº»°ª¿¡¼­´Â, 4 ¸Þ°¡¹ÙÀÌÆ®ÀÇ °øÀ¯ ¸Þ¸ð¸® ¹Û¿¡ Áö¿øµÇÁö ¾Ê½À´Ï´Ù. °øÀ¯ ¸Þ¸ð¸®´Â ÆäÀÌ¡ ÇÒ ¼ö ¾ø´Â °ÍÀ» ±â¾ïÇØ µÖ ÁÖ¼¼¿ä. RAM¾È¿¡ ¶ô µÇ°í ÀÖ½À´Ï´Ù. ½Ã½ºÅÛÀ¸·Î Áö¿øµÇ´Â °øÀ¯ ¹öÆÛ¼ö¸¦ Áõ°¡ÇÏ·Á¸é , Ä¿³Ú ¼³Á¤ ÆÄÀÏ¿¡ ÀÌÇϸ¦ Ãß°¡ÇØ ÁÖ¼¼¿ä.

options "SHMALL=8192"
options "SHMMAX=\(SHMALL*PAGE_SIZE\)"

SHMALL´Â 4ų·Î¹ÙÀÌÆ® ÆäÀÌÁö ´ÜÀ§À̹ǷÎ, 1024¶ó°í ÇÏ´Â °ªÀº, °øÀ¯ ¸Þ¸ð¸®°¡ 4 ¸Þ°¡¹ÙÀÌÆ®ÀÎ °ÍÀ» ³ªÅ¸³À´Ï´Ù. µû¶ó¼­, »ó±â¿¡¼­´Â, ÃÖ´ëÀÇ °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀ» 32 ¸Þ°¡¹ÙÀÌÆ®±îÁö Áõ°¡Çϰí ÀÖ½À´Ï´Ù. 4.3ÀÌÈÄ¿¡¼­´Â, ¾Æ¸¶ KERNEL_VIRTUAL_MB¸¦ ±âº»°ªÀÇ 248º¸´Ù ´Ã¸®Áö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ¸ðµç º¯°æÀ» ½Ç½ÃÇÑ ÈÄ, Ä¿³ÚÀ» ÀçÄÄÆÄÀÏ ÇØ, ÀçºÎÆÃÇØ ÁÖ¼¼¿ä.

4.0 ÀÌÀüÀÇ ¸±¸®½º¿¡¼­´Â, bpatch¸¦ »ç¿ëÇØ ÇöÀçÀÇ Ä¿³Ú·ÎºÎÅÍ sysptsize¸¦ °Ë»öÇØ ÁÖ¼¼¿ä. À̰ÍÀº ±âµ¿½Ã¿¡ ÀÚµ¿ÀûÀ¸·Î °è»êµË´Ï´Ù.

$ bpatch -r sysptsize
0x9 = 9

±×¸®°í, SYSPTSIZE¸¦ Ä¿³Ú ¼³Á¤ ÆÄÀϳ»¿¡ Çϵå ÄÚµå ÇÑ °ªÀ¸·Î ÇØ¼­ Ãß°¡ÇØ ÁÖ¼¼¿ä. ÀÌ °ªÀ» bpatch¸¦ »ç¿ëÇØ ã¾Æ³½ °ªÀ¸·Î ´Ã·Á ÁÖ¼¼¿ä. Èñ¸Á °øÀ¯ ¸Þ¸ð¸®¸¦ 4 ¸Þ°¡¹ÙÀÌÆ® ´Ã¸± ¶§ ¸¶´Ù 1 Áõ°¡ÇØ ÁÖ¼¼¿ä.

options "SYSPTSIZE=16"

sysptsize´Â sysctl¿¡¼­´Â º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù.

semaphore. semaphoreÀÇ ¼ö¿¡ ´ëÇØ¼­µµ ´Ã¸®°í ½ÍÀº °æ¿ì°¡ ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù. ±âº»°ªÀÇ ½Ã½ºÅÛ ÇÕ°èÀÎ 60À̶ó´Â °ªÀ¸·Î´Â, 50°³ÀÇ PostgreSQLÁ¢¼Ó ¹Û¿¡ ÇÒ ¼ö ¾ø½À´Ï´Ù. Èñ¸ÁÇÏ´Â °ªÀ» Ä¿³Ú ¼³Á¤ ÆÄÀÏ·Î ¼³Á¤ÇØ ÁÖ¼¼¿ä. ¿¹¸¦ µé¸é,

options "SEMMNI=40"
options "SEMMNS=240"

FreeBSD

±âº»°ªÀÇ ¼³Á¤Àº, ¼Ò±Ô¸ðÀÇ ¼³Ä¡¿¡¼­¸¸ ÀûÇÕÇÕ´Ï´Ù(¿¹¸¦ µé¸é, ±âº»°ªÀÇ SHMMAX´Â 32 ¸Þ°¡¹ÙÀÌÆ®ÀÔ´Ï´Ù). sysctl ¶Ç´Â loaderÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇØ º¯°æÀ» ½Ç½ÃÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡¼­´Â sysctl¸¦ »ç¿ëÇØ ¸Å°³º¯¼ö¸¦ º¯°æÇϰí ÀÖ½À´Ï´Ù.

$ sysctl -w kern.ipc.shmall=32768
$ sysctl -w kern.ipc.shmmax=134217728
$ sysctl -w kern.ipc.semmap=256

ÀÌ·¯ÇÑ ¼³Á¤À» ÀçºÎÆÃÇØµµ ¿µ¼ÓÈ­ÇÏ·Á¸é, /etc/sysctl.conf¸¦ º¯°æÇÕ´Ï´Ù.

³ª¸ÓÁöÀÇ semaphore ¼³Á¤Àº sysctl¿¡¼­´Â Àб⸸À¸·Î °£Áֵǰí ÀÖ½À´Ï´Ù¸¸, ±âµ¿Àü¿¡ loaderprompt¸¦ »ç¿ëÇØ º¯°æÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

(loader) set kern.ipc.semmni=256
(loader) set kern.ipc.semmns=512
(loader) set kern.ipc.semmnu=256

°°ÀÌ ÀÌ·¯ÇÑ ¼³Á¤À» ÀçºÎÆÃÇØµµ ¿µ¼ÓÈ­ ½ÃŰ·Á¸é /boot/loader.conf¿¡ º¸Á¸ÇÕ´Ï´Ù.

¶Ç, °øÀ¯ ¸Þ¸ð¸®¸¦ RAM»ó¿¡ ³²°Ü, ½º¿Ò¿¡ÀÇ ÆäÀÌÁö ¾Æ¿ôÀ» ½Ç½ÃÇÏÁö ¸øÇÏ°Ô ÇÏ°í ½ÍÀ»Áöµµ ¸ð¸¨´Ï´Ù. À̰ÍÀº sysctlÀÇ kern.ipc.shm_use_phys¼³Á¤À» »ç¿ëÇØ ½ÇÇöµÉ ¼ö ÀÖ½À´Ï´Ù.

sysctlÀÇ security.jail.sysvipc_allowed¸¦ À¯È¿ÇÏ°Ô ÇØ FreeBSD jail¸¦ ½ÇÇàÇϰí ÀÖ´Â °æ¿ì, ´Ù¸¥ jail·Î ½ÇÇàÇÏ´Â postmasterÀ» ´Ù¸¥ ¿î¿µ ½Ã½ºÅÛ »ç¿ëÀÚ·Î ½ÇÇàÇØ¾ßÇÕ´Ï´Ù. À̰ÍÀº, ºñƯ±Ç »ç¿ëÀÚ°¡ ´Ù¸¥ jailÀÇ °øÀ¯ ¸Þ¸ð¸®³ª semaphore¿¡ °£¼·ÇÏ´Â °ÍÀ» ¹æÁöÇÒ ¼ö Àֱ⠶§¹®¿¡, º¸¾ÈÀÌ Çâ»óÇÕ´Ï´Ù. ¶Ç, À̰Ϳ¡ ÀÇÇØ PostgreSQLÀÇ IPC¸¦ Á¤¸®ÇÏ´Â Äڵ带 ÀûÀýÈ÷ µ¿ÀÛ½Ãų ¼ö ÀÖ½À´Ï´Ù. (FreeBSD 6.0ÀÌÈÄ¿¡¼­´Â, IPC Á¤¸® ÄÚµå´Â ´Ù¸¥ jail¿¡ À־ÀÇ ÇÁ·Î¼¼½º¸¦ ÀûÀýÈ÷ °ËÃâÇÏÁö ¾Ê°í, ´Ù¸¥ jail·Î µ¿ÀÏ Æ÷Æ®·Î postmaster¸¦ ½ÇÇà½Ãų ¼ö°¡ ¾ø½À´Ï´Ù. )

FreeBSD¹öÁ¯ 4.0 ÀÌÀüÀ¸·Î´Â, (ÈļúÀÇ) NetBSD¿Í OpenBSD¿Í °°°Ô µ¿ÀÛÇÕ´Ï´Ù.

NetBSD
OpenBSD

SYSVSHM¿É¼Ç°ú SYSVSEM¿É¼ÇÀº Ä¿³ÚÀÇ ÄÄÆÄÀϽÿ¡ À¯È¿ÇÏ°Ô ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù(±âº»°ª¿¡¼­´Â À¯È¿ÇÏ°Ô µÇ¾î ÀÖ½À´Ï´Ù). °øÀ¯ ¸Þ¸ð¸®ÀÇ ÃÖ´ë »çÀÌÁî´Â SHMMAXPGS¿É¼Ç(ÆäÀÌÁö¼ö)À¸·Î °áÁ¤µË´Ï´Ù. ÀÌÇÏ¿¡, ¿©·¯°¡Áö ¸Å°³º¯¼öÀÇ ¼³Á¤ ¹æ¹ý¹ýÀÇ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù(OpenBSD¿¡¼­´Â ´ë½Å¿¡ option°¡ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù).

options        SYSVSHM
options        SHMMAXPGS=4096
options        SHMSEG=256

options        SYSVSEM
options        SEMMNI=256
options        SEMMNS=512
options        SEMMNU=256
options        SEMMAP=256

¶Ç, °øÀ¯ ¸Þ¸ð¸®¸¦ RAM¾È¿¡ Àá±×µµ·Ï Ä¿³ÚÀ» ¼³Á¤ÇÏ´Â °ÍÀ¸·Î, ½º¿Ò¿¡ ÆäÀÌÁö ¾Æ¿ô ÇÏÁö ¾Ê°Ôµµ ÇÒ ¼ö ÀÖ½À´Ï´Ù. sysctl¸¦ »ç¿ëÇØ kern.ipc.shm_use_phys¸¦ ¼³Á¤ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

HP-UX

±âº»°ªÀÇ ¼³Á¤Àº ÀϹÝÀûÀÎ ¼³Ä¡¿¡¼­´Â ÃæºÐÇÕ´Ï´Ù. HP-UX 10¿¡¼­´Â SEMMNSÀÇ ÃâÇϽÃÀÇ ±âº»°ªÀº 128ÀÔ´Ï´Ù¸¸, À̰ÍÀº ´ë±Ô¸ð µ¥ÀÌÅͺ£À̽º »çÀÌÆ®¿¡´Â ³Ê¹« ³·À»Áöµµ ¸ð¸¨´Ï´Ù.

IPC¸Å°³º¯¼ö´Â ½Ã½ºÅÛ °ü¸® ¸Å´ÏÀú(SAM)·ÎºÎÅÍ Kernel Configuration->Configurable Parameters¾Æ·¡¿¡¼­, ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ³¡³ª¸é Create A New Kernel¸¦ ´­·¯ ÁÖ¼¼¿ä.

Linux

±âº»°ªÀÇ ÃÖ´ë ¼¼±×¸ÕÆ®(segment) »çÀÌÁî´Â 32 ¸Þ°¡¹ÙÀÌÆ®·Î, ¼Ò±Ô¸ðÀÇ PostgreSQL¼³Ä¡¿¡¸¸ ÀûÇÕÇÕ´Ï´Ù. ±×·¯³ª, ÀÌ ´Ù¸¥ ±âº»°ªÀº ²Ï dzºÎÇÏ°Ô ÇÒ´çÇÒ ¼ö ÀÖ¾î, º¸ÅëÀº º¯°æÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. sysctlÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇØ, ÃÖ´ë °øÀ¯ ¸Þ¸ð¸®¼¼±×¸ÕÆ®»çÀÌÁ º¯°æÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, À̰ÍÀ» 128 MB·Î ÇØ, ¶Ç, ¸í½ÃÀûÀ¸·Î ÃÖ´ëÃѰøÀ¯ ¸Þ¸ð ¸®»çÀÌÁ 2097152 ÆäÀÌÁö(±âº»°ª)·Î ¼³Á¤ÇÏ·Á¸é ÀÌÇÏ¿Í °°ÀÌ ÇÕ´Ï´Ù.

$ sysctl -w kernel.shmmax=134217728
$ sysctl -w kernel.shmall=2097152

ÀÌ·¯ÇÑ ¼³Á¤À» ÀçºÎÆÃ½Ã¿¡ /etc/sysctl.conf¿¡ º¸Á¸ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

¿À·¡µÈ ¹èÆ÷¹°¿¡¼­´Â sysctlÇÁ·Î±×·¥ÀÌ Á¸ÀçÇÏÁö ¾ÊÀ» °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì, /procÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ Á¶ÀÛÀ¸·Î µ¿µîÀÇ º¯°æÀ» ½Ç½ÃÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

$ echo 134217728 >/proc/sys/kernel/shmmax
$ echo 2097152 >/proc/sys/kernel/shmall

MacOS X

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µî)À¸·Î µ¡¾²±âµÇ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. ±×·¯¹Ç·Î, °¢ ¾÷µ¥ÀÌÆ® ÀÌÈÄ¿¡ ´Ù½Ã ÆíÁýÇÒ Çʿ䰡 ÀÖ´Â °ÍÀ̶ó°í »ý°¢ÇؾßÇÕ´Ï´Ù.

OS X 10.3. 9¿Í ±× ÀÌÈÄ¿¡´Â, /etc/rc¸¦ ÆíÁýÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ÀÌÇÏ¿Í °°Àº º¯¼ö ´ëÀÔ¹®ÀÌ µÇ´Â, /etc/sysctl.conf¶ó´Â ¸íĪÀÇ ÆÄÀÏÀ» ÀÛ¼ºÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

kern.sysv.shmmax=4194304
kern.sysv.shmmin=1
kern.sysv.shmmni=32
kern.sysv.shmseg=8
kern.sysv.shmall=1024

ÀÌ ¹æ¹ýÀº, ½Ã½ºÅÛÀ» °»½ÅÇØµµ º¯°æÁ¡ÀÌ º¸Á¸µÈ´Ù´Â Á¡À¸·Î, /etc/rcÀÇ ÆíÁýº¸´Ù ¿ì¼öÇÕ´Ï´Ù. /etc/sysctl.conf³»¿¡ °øÀ¯ ¸Þ¸ð¸® ¸Å°³º¯¼ö 5°¡Áö ¸ðµÎ ¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù´Â Á¡¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. ¾Æ´Ï¸é °ªÀÌ ¹«½ÃµË´Ï´Ù.

ÃÖ±ÙÀÇ ¸±¸®½ºÀÇ OS X´Â, SHMMAX¸¦ 4096ÀÇ ¹è¼ö À̿ܿ¡ ¼³Á¤ÇÏ·Á°í ÇÏ¸é ¹«½ÃÇϱ⠶§¹®¿¡, ÁÖÀÇÇØ ÁÖ¼¼¿ä.

ÀÌ Ç÷§Æû¿¡¼­´Â, SHMALL´Â 4ų·Î¹ÙÀÌÆ® ÆäÀÌÁö ´ÜÀ§ÀÔ´Ï´Ù.

OS XÀü¹öÁ¯À¸·Î, °øÀ¯ ¸Þ¸ð¸®¸Å°³º¯¼öÀÇ º¯°æÀ» ¹Ý¿µ½Ã۱â À§Çؼ­ ÀçºÎÆÃÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù.

SCO OpenServer

±âº»°ªÀÇ ¼³Á¤¿¡¼­´Â, ¼¼±×¸ÕÆ®(segment) ´ç 512ų·Î¹ÙÀÌÆ®ÀÇ °øÀ¯ ¸Þ¸ð¸®°¡ Çã¿ëµÇ°í ÀÖ½À´Ï´Ù. ÀÌ ¼³Á¤À» Áõ°¡½ÃŰ·Á¸é, ¿ì¼±, /etc/conf/cf.dµð·ºÅ丮·Î À̵¿ÇÕ´Ï´Ù. SHMMAXÀÇ ÇöÀç°¡¸¦ Ç¥½ÃÇÏ·Á¸é, ÀÌÇϸ¦ ½ÇÇàÇÕ´Ï´Ù.

./configure -y SHMMAX

SHMMAX¿¡ »õ·Î¿î °ªÀ» ¼³Á¤ÇÏ·Á¸é, ÀÌÇϸ¦ ½ÇÇàÇÕ´Ï´Ù.

./configure SHMMAX=
value

¿©±â¼­, value °¡ Èñ¸ÁÇÏ´Â »õ·Î¿î °ª(¹ÙÀÌÆ® ´ÜÀ§)ÀÔ´Ï´Ù. ±×¸®°í, ÀÌÇÏ¿Í °°ÀÌ Ä¿³ÚÀ» À籸Ãà ÇØ, ÀçºÎÆÃÇÕ´Ï´Ù.

./link_unix

AIX

Àû¾îµµ ¹öÁ¯ 5.1¿¡¼­´Â, ¸ðµç ¸Þ¸ð¸®°¡ °øÀ¯ ¸Þ¸ð¸®·Î¼­ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¼³Á¤µÇ¾î ÀÖ´Â °Íó·³ º¸ÀÔ´Ï´Ù. SHMMAXµîÀÇ ¸Å°³º¯¼ö¿¡ ´ëÇØ¼­ Ưº°ÇÑ ¼³Á¤Àº ÇÊ¿ä ¾ø½À´Ï´Ù. À̰ÍÀº DB/2µîÀÇ ´Ù¸¥ µ¥ÀÌÅͺ£À̽º¿¡¼­µµ »ç¿ëµÇ´Â, ÀϹÝÀûÀÎ ¼³Á¤ ¹æ¹ý¹ýÀÔ´Ï´Ù.

±×·¯³ª, /etc/security/limits³»ÀÇ Æ÷°ýÀûÀÎ ulimitÁ¤º¸´Â º¯°æÇØ¾ß ÇÒÁöµµ ¸ð¸¨´Ï´Ù. ±âº»°ªÀÇ ÆÄÀÏ »çÀÌÁî(fsize)¿Í ÆÄÀϼö(nofiles) ¿ëÀÇ Çϵå Çѵµ´Â ³Ê¹« ³·À»Áöµµ ¸ð¸£±â ¶§¹®ÀÔ´Ï´Ù.

Solaris

Àû¾îµµ ¹öÁ¯ 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

º¯°æÀ» ¹Ý¿µ½ÃŰ·Á¸é ÀçºÎÆÃÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

Solarisȯ°æ¿¡¼­ÀÇ °øÀ¯ ¸Þ¸ð¸®¿¡ °üÇÑ Á¤º¸¿¡ ´ëÇØ¼­´Â, http://sunsite.uakom.sk/sunworldonline/swol-09-1997/swol-09-insidesolaris.htmlµµ ÂüÁ¶ÇØ ÁÖ¼¼¿ä. Solaris.

UnixWare

UnixWare 7¿¡¼­´Â, °øÀ¯ ¸Þ¸ð¸®¼¼±×¸ÕÆ®ÀÇ ÃÖ´ë »çÀÌÁî´Â ±âº»°ª ¼³Á¤À¸·Î 512ų·Î¹ÙÀÌÆ® ¹Û¿¡ ¾ø½À´Ï´Ù. ÇöÀçÀÇ SHMMAX°ªÀ» Ç¥½ÃÇϱâ À§Çؼ­´Â ¾Æ·¡¿Í °°À̸¦ ½ÇÇàÇØ ÁÖ¼¼¿ä.

/etc/conf/bin/idtune -g SHMMAX

À̰ÍÀº ÇöÀç°¡, ±âº»°ª, ÃÖ¼Ò°ª, ¹× ÃÖ´ë°ªÀ», ¹ÙÀÌÆ® ´ÜÀ§·Î Ç¥½ÃÇÕ´Ï´Ù.

/etc/conf/bin/idtune SHMMAX 
value

¿©±â¼­ value ´Â, Èñ¸ÁÇÏ´Â »õ·Î¿î °ª(¹ÙÀÌÆ®)ÀÔ´Ï´Ù. SHMMAXÀÇ ¼³Á¤ÀÌ ³¡³ª¸é Ä¿³ÚÀ» À籸Ãà ÇØ, ÀçºÎÆÃÇÕ´Ï´Ù.

/etc/conf/bin/idbuild -B

Table 16-2. PostgreSQLÀÇ °øÀ¯ ¸Þ¸ð¸® »ç¿ë·®¿¡ ¿µÇâÀ» ÁÖ´Â ¼³Á¤ ¸Å°³º¯¼ö

¸íĪ ´ëü ½Â¼ö( 1 ´Ã·ÈÀ» °æ¿ìÀÇ ¹ÙÀÌÆ®¼ö)
max_connections 1800 + 270 * max_locks_per_transaction
max_prepared_transactions 700 + 270 * max_locks_per_transaction
shared_buffers 8300 (BLCKSZ°¡ 8 KBÀÎ °ÍÀÌ ÀüÁ¦ÀÔ´Ï´Ù.)
wal_buffers 8200 (XLOG_BLCKSZ°¡ 8 KBÀÎ °ÍÀÌ ÀüÁ¦ÀÔ´Ï´Ù. )
max_fsm_relations 70
max_fsm_pages 6

16.4.2. ÀÚ¿øÀÇ Á¦ÇÑ

Unix ÁÁ¾ÆÇÏ´Â operating system¿¡¼­´Â PostgreSQL¼­¹öÀÇ Á¶ÀÛ°ú °ü°èÇÒ °¡´É¼ºÀÌ ÀÖ´Â ¿©·¯°¡Áö Á¾·ùÀÇ ÀÚ¿ø Á¦ÇÑÀÌ ÀÖ½À´Ï´Ù. ƯÈ÷ Áß¿äÇÑ °ÍÀº, »ç¿ëÀÚ¸¶´ÙÀÇ ÇÁ·Î¼¼½º¼öÀÇ Á¦ÇÑ, ÇÁ·Î¼¼½º¸¶´ÙÀÇ ¿ÀÇ ÆÄÀÏÀÇ ¼ö, ÇÁ·Î¼¼½º¸¶´ÙÀÇ ÀÌ¿ë °¡´ÉÇÑ ¸Þ¸ð¸®ÀÇ ¾çÀÔ´Ï´Ù. ÀÌ·¯ÇÑ °¢°¢ "Çϵå"¿Í "¼ÒÇÁÆ®"ÀÇ 2°³ÀÇ Á¦ÇÑÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ¼ÒÇÁÆ® Á¦ÇÑÀÌ ½ÇÁ¦·Î À¯È¿ÇÑ Á¦ÇÑÀÔ´Ï´Ù¸¸, »ç¿ëÀÚ¿¡ ÀÇÇØ Çϵå Á¦ÇѱîÁö ¹Ù²Ù´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. Çϵå Á¦ÇÑÀº ·çÆ®»ç¿ëÀÚ¿¡ ÀÇÇØ¼­¸¸ ¹Ù²Ü ¼ö°¡ ÀÖ½À´Ï´Ù. setrlimit½Ã½ºÅÛ ÄÝÀÌ ÀÌ·¯ÇÑ ¸Å°³º¯¼öÀÇ ¼³Á¤À» ½Ç½ÃÇÕ´Ï´Ù. ½©ÀÇ ³»Àå ¸í·Éulimit(Bourne ½©) ȤÀº limit(csh)´Â, ¸í·É ¶óÀÎÀ¸·ÎºÎÅÍ ÀÚ¿ø Á¦ÇÑÀ» Á¦¾îÇϱâ À§Çؼ­ »ç¿ëµË´Ï´Ù. BSD ÆÄ»ý ½Ã½ºÅÛ»ó¿¡¼­´Â /etc/login.confÆÄÀÏÀÌ, ·Î±×Àνà ¼³Á¤µÇ´Â ¿©·¯°¡Áö ÀÚ¿ø Á¦ÇÑÀ» Á¦¾îÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ¿î¿µ½Ã½ºÅÛÀÇ ¹®¼­¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä. °ü·ÃÇÏ´Â ¸Å°³º¯¼ö´Â maxproc, openfiles, datasizeÀÔ´Ï´Ù. ¿¹¸¦ µé¸é,

default:\
...
        :datasize-cur=256M:\
        :maxproc-cur=256:\
        :openfiles-cur=256:\
...

(-cur´Â ¼ÒÇÁÆ® Á¦ÇÑÀÔ´Ï´Ù. Çϵå Á¦ÇÑÀ» ¼³Á¤Çϱâ À§Çؼ­´Â -max¸¦ ºÙ¿© ÁÖ¼¼¿ä. )

Ä¿³ÚÀº ¸î°³ÀÇ ÀÚ¿ø¿¡ ´ëÇØ¼­, ½Ã½ºÅÛ ÀüüÀÇ Á¦ÇÑÀ» °¡Áö´Â µµÀÌ °¡´ÉÇÕ´Ï´Ù.

PostgreSQL¼­¹ö´Â Á¢¼Ó ¸¶´Ù 1°³ÀÇ ÇÁ·Î¼¼½º¸¦ »ç¿ëÇϹǷÎ, Àû¾îµµ Çã°¡µÈ Á¢¼ÓÀÇ ¼ö ¸¸Å­ÀÇ ÇÁ·Î¼¼½º¿Í ³ª¸ÓÁöÀÇ ½Ã½ºÅÛÀÇ ÇÊ¿äÇÑ ºÐÀ» Ãß°¡ÇÑ °ÍÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù. Åë»ó, À̰ÍÀº ¹®Á¦°¡ ¾Æ´Õ´Ï´Ù¸¸, 1°³ÀÇ ¸Ó½Å»ó¿¡¼­ ¸î°³ÀÇ ¼­¹ö¸¦ ±âµ¿Çϰí ÀÖ´Â °æ¿ì´Â ¾î·Á¿î »óȲÀÌ µÉÁöµµ ¸ð¸¨´Ï´Ù.

¿ÀÇ ÆÄÀÏÀÇ Á¦ÇÑÀÇ ÃâÇϽÃÀÇ ±âº»°ªÀº, ÀÚÁÖ ´ë´Ù¼öÀÇ »ç¿ëÀÚ´Â ¸Ó½Å»ó¿¡¼­ ½Ã½ºÅÛ ÀÚ¿øÀÇ ºÎÀûÀýÇÑ ºÎºÐÀ» »ç¿ëÇÏÁö ¾Ê°í "»çȸÀûÀ¸·Î ¿ìÈ£ÀûÀÎ"°ªÀ» ¼³Á¤ÇØ ¹ö¸³´Ï´Ù. 1°³ÀÇ ¸Ó½Å»ó¿¡¼­ º¹¼öÀÇ ¼­¹ö¸¦ ±âµ¿ÇÏ´Â °æ¿ì¿¡ ÇÊ¿äÇϰÚÁö¸¸, Àü¿ë ¼­¹ö¿¡¼­´Â ÀÌ Á¦ÇÑÀ» ¿Ã¸®°í ½ÍÀ»Áöµµ ¸ð¸¨´Ï´Ù.

¹Ý´ë·Î, °³°³ÀÇ ÇÁ·Î¼¼½º°¡ ´Ù¼öÀÇ ÆÄÀÏÀ» ¿ÀÇÂÇÏ´Â °ÍÀ» Çã°¡ÇÏ´Â ½Ã½ºÅÛµµ ÀÖ½À´Ï´Ù. ±×·¯ÇÑ ÇÁ·Î¼¼½º°¡ ¸î °³ ÀÌ»ó ÀÖÀ¸¸é, ½Ã½ºÅÛ ÀüüÀÇ Á¦ÇÑÀº °£´ÜÇÏ°Ô ³Ñ¾î ¹ö¸³´Ï´Ù. ÀÌ ¹ß»ýÀ» °¨ÁöÇØ, ½Ã½ºÅÛ ÀüüÀÇ Á¦ÇÑÀÇ º¯°æÀ» ¹Ù¶óÁö ¾Ê´Â °æ¿ì´Â, PostgreSQLÀÇ max_files_per_process¼³Á¤ ¸Å°³º¯¼ö¸¦ ¼³Á¤ÇØ, ¿ÀÇ ÆÄÀÏÀÇ ¼Òºñ¸¦ Á¦ÇÑÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

16.4.3. LinuxÀÇ ¸Þ¸ð¸® ¿À¹öÄ¿¹Ô

Linux 2.4ÀÌÈÄ¿¡¼­´Â, ±âº»°ªÀÇ °¡»ó ¸Þ¸ð¸®ÀÇ µ¿ÀÛÀº PostgreSQL¿¡´Â ÃÖÀûÀÌÁö´Â ¾Ê½À´Ï´Ù. Ä¿³ÚÀÌ ¸Þ¸ð¸® ¿À¹öÄ¿¹ÔÀ» ±¸ÇöÇÏ´Â ¹æ¹ýÀ̱⠶§¹®¿¡, Ä¿³ÚÀº, ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ÀÇÁ¸ÇÏ´Â ¸Þ¸ð¸®°¡ ½Ã½ºÅÛÀÇ °¡»ó ¸Þ¸ð¸®¸¦ °í°¥½ÃÄ×À» °æ¿ì, PostgreSQL(¸¶½ºÅÍ ¼­¹ö ÇÁ·Î¼¼½º)¸¦ Á¾·á½Ãų °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.

À̰ÍÀÌ ¹ß»ýÇßÀ» °æ¿ì, ÀÌÇÏ¿Í °°Àº Ä¿³Ú ¸Þ¼¼Áö°¡ ³ªÅ¸³³´Ï´Ù (ÀÌ·¯ÇÑ ¸Þ¼¼Áö¸¦ °Ë»öÇÏ´Â Àå¼Ò¿¡ ´ëÇØ¼­´Â ½Ã½ºÅÛ ¹®¼­¿Í ¼³Á¤À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä).

Out of Memory: Killed process 12345 (postgres). 

À̰ÍÀº, postgresÇÁ·Î¼¼½º°¡ ¸Þ¸ð¸® ºÎÁ· ¶§¹®¿¡ Á¾·áÇØ ¹ö¸° °ÍÀ» ³ªÅ¸³À´Ï´Ù. ±âµ¿ÁßÀÇ µ¥ÀÌÅͺ£À̽º Á¢¼ÓÀº Á¤»óÀûÀ¸·Î ÀÛµ¿ÇÕ´Ï´Ù¸¸, »õ·Î¿î Á¢¼ÓÀº ¹Þ¾ÆµéÀÏ ¼ö ¾ø½À´Ï´Ù. º¹±¸ÇÏ·Á¸é, PostgreSQL¸¦ Àç½ÃÀÛÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.

ÀÌ ¹®Á¦¸¦ ¹æÁöÇÏ´Â 1°³ÀÇ ¹æ¹ýÀ¸·Î¼­ PostgreSQL¸¦ ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ±× ¸Ó½ÅÀÇ ¸Þ¸ð¸®¸¦ °í°¥½ÃŰÁö ¾Ê´Â °ÍÀÌ È®½ÇÇÏ°Ô ¸Ó½ÅÀ» ±âµ¿ÇÏ´Â °ÍÀÔ´Ï´Ù.

Linux 2.6ÀÌÈÄ¿¡´Â, ¸Þ¸ð¸®¸¦ "¿À¹öÄ¿¹Ô"½ÃŰÁö ¾Ê°Ô Ä¿³ÚÀÇ µ¿ÀÛÀ» º¯°æÇÏ´Â, º¸´Ù ¶Ù¾î³­ ÇØ¹ýÀÌ ÀÖ½À´Ï´Ù. À̰ÍÀº, sysctl¸¦ »ç¿ëÇØ ¾ö¹ÐÇÑ ¿À¹ö Ä¿¹Ô ¸ðµå¸¦ ¼±ÅÃÇÏ´Â °ÍÀ¸·Î ½Ç½ÃµË´Ï´Ù.

sysctl -w vm.overcommit_memory=2

¶Ç, °ü·ÃÇÏ´Â vm.overcommit_ratio¼³Á¤À» º¯°æÇÏ´Â °ÍÀÌ ÁÁÀ» °ÍÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº Documentation/vm/overcommit-accountingÄ¿³Ú ¹®¼­¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

Linux 2.4 Ä¿³ÚÀÇ vender Áß¿¡´Â, 2.6ÀÇ ¿À¹ö Ä¿¹Ôsysctl¸Å°³º¯¼ö¸¦ °¡Áö´Â °ÍÀÌ º¸°íµÇ°í ÀÖ½À´Ï´Ù. ±×·¯³ª, °ü°èÇÏ´Â Äڵ带 °¡ÁöÁö ¾Ê´Â Ä¿³ÚÀÎ vm.overcommit_memory¸¦ 2·Î ¼³Á¤ÇÏ´Â °ÍÀº º¸´Ù »óȲÀ» ¾ÇÈ­½Ãŵ´Ï´Ù. 2.4ÀÇ ¼³Ä¡¿¡¼­´Â À̰ÍÀ» ½ÃÇèÇϱâ Àü¿¡, ½ÇÁ¦ÀÇ Ä¿³Ú ¼Ò½º Äڵ带 Á¶»çÇØ, ±× Áß¿¡ Áö¿øÇϰí ÀÖ´ÂÁö ¾Æ´ÑÁö¸¦ °ËÁõÇÏ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù(mm/mmap.cÆÄÀÏ ³»ÀÇ vm_enough_memoryÇÔ¼ö¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä). overcommit-accounting¹®¼­ ÆÄÀÏÀÇ Á¸Àç´Â, ÀÌ ±â´ÉÀÌ Á¸ÀçÇÏ´ÂÁö ¾Æ´ÑÁö¸¦ Áõ¸íÇÏ´Â °ÍÀÌ ¾ø½À´Ï´Ù . Àǽɽº·¯¿î °æ¿ì´Â, »ç¿ëÁßÀÇ Ä¿³Ú venderÀÇ Ä¿³Ú Àü¹®°¡¿¡°Ô »ó´ãÇØ ÁÖ¼¼¿ä.