| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 16. ¿î¿µ ½Ã½ºÅÛÀÇ È¯°æ | Fast Forward | Next |
´ë±Ô¸ð PostgreSQLInstallation¿¡¼´Â, °ð¹Ù·Î °¢Á¾ ¿î¿µ ½Ã½ºÅÛÀÇ ÀÚ¿ø Á¦ÇÑÀ» ³Ñ¾î ¹ö¸®´Â ÀÏÀÌ ÀÖ½À´Ï´Ù (½Ã½ºÅÛ¿¡ µû¶ó¼´Â, ½ÇÁ¦·Î "´ë±Ô¸ð"ÀÎ ¼³Ä¡°¡ ¾Æ´Ï¾îµµ, ÃâÇϽÃÀÇ ±âº»°ª¿¡¼´Â ³Ê¹« ³·Àº °Íµµ ÀÖ½À´Ï´Ù). ÀÌ·± Á¾·ùÀÇ ¹®Á¦°¡ ¹ß»ýÇϸé, À̰͵éÀ» Àоî ÁÖ¼¼¿ä.
°øÀ¯ ¸Þ¸ð¸®¿Í 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¿¡¼´Â ¹®Á¦»ïÀ» Çʿ䰡 ¾ø½À´Ï´Ù.
°øÀ¯ ¸Þ¸ð¸®. ±âº»°ª¿¡¼´Â, 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"
±âº»°ªÀÇ ¼³Á¤Àº, ¼Ò±Ô¸ðÀÇ ¼³Ä¡¿¡¼¸¸ ÀûÇÕÇÕ´Ï´Ù(¿¹¸¦ µé¸é, ±âº»°ªÀÇ 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¿Í °°°Ô µ¿ÀÛÇÕ´Ï´Ù.
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 10¿¡¼´Â SEMMNSÀÇ ÃâÇϽÃÀÇ ±âº»°ªÀº 128ÀÔ´Ï´Ù¸¸, À̰ÍÀº ´ë±Ô¸ð µ¥ÀÌÅͺ£À̽º »çÀÌÆ®¿¡´Â ³Ê¹« ³·À»Áöµµ ¸ð¸¨´Ï´Ù.
IPC¸Å°³º¯¼ö´Â ½Ã½ºÅÛ °ü¸® ¸Å´ÏÀú(SAM)·ÎºÎÅÍ Kernel Configuration->Configurable Parameters¾Æ·¡¿¡¼, ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ³¡³ª¸é Create A New Kernel¸¦ ´·¯ ÁÖ¼¼¿ä.
±âº»°ªÀÇ ÃÖ´ë ¼¼±×¸ÕÆ®(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
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Àü¹öÁ¯À¸·Î, °øÀ¯ ¸Þ¸ð¸®¸Å°³º¯¼öÀÇ º¯°æÀ» ¹Ý¿µ½Ã۱â À§Çؼ ÀçºÎÆÃÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù.
±âº»°ªÀÇ ¼³Á¤¿¡¼´Â, ¼¼±×¸ÕÆ®(segment) ´ç 512ų·Î¹ÙÀÌÆ®ÀÇ °øÀ¯ ¸Þ¸ð¸®°¡ Çã¿ëµÇ°í ÀÖ½À´Ï´Ù. ÀÌ ¼³Á¤À» Áõ°¡½ÃŰ·Á¸é, ¿ì¼±, /etc/conf/cf.dµð·ºÅ丮·Î À̵¿ÇÕ´Ï´Ù. SHMMAXÀÇ ÇöÀç°¡¸¦ Ç¥½ÃÇÏ·Á¸é, ÀÌÇϸ¦ ½ÇÇàÇÕ´Ï´Ù.
./configure -y SHMMAX
SHMMAX¿¡ »õ·Î¿î °ªÀ» ¼³Á¤ÇÏ·Á¸é, ÀÌÇϸ¦ ½ÇÇàÇÕ´Ï´Ù.
./configure SHMMAX= value
¿©±â¼, value °¡ Èñ¸ÁÇÏ´Â »õ·Î¿î °ª(¹ÙÀÌÆ® ´ÜÀ§)ÀÔ´Ï´Ù. ±×¸®°í, ÀÌÇÏ¿Í °°ÀÌ Ä¿³ÚÀ» À籸Ãà ÇØ, ÀçºÎÆÃÇÕ´Ï´Ù.
./link_unix
Àû¾îµµ ¹öÁ¯ 5.1¿¡¼´Â, ¸ðµç ¸Þ¸ð¸®°¡ °øÀ¯ ¸Þ¸ð¸®·Î¼ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¼³Á¤µÇ¾î ÀÖ´Â °Íó·³ º¸ÀÔ´Ï´Ù. SHMMAXµîÀÇ ¸Å°³º¯¼ö¿¡ ´ëÇØ¼ Ưº°ÇÑ ¼³Á¤Àº ÇÊ¿ä ¾ø½À´Ï´Ù. À̰ÍÀº DB/2µîÀÇ ´Ù¸¥ µ¥ÀÌÅͺ£À̽º¿¡¼µµ »ç¿ëµÇ´Â, ÀϹÝÀûÀÎ ¼³Á¤ ¹æ¹ý¹ýÀÔ´Ï´Ù.
±×·¯³ª, /etc/security/limits³»ÀÇ Æ÷°ýÀûÀÎ 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
º¯°æÀ» ¹Ý¿µ½ÃŰ·Á¸é ÀçºÎÆÃÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
Solarisȯ°æ¿¡¼ÀÇ °øÀ¯ ¸Þ¸ð¸®¿¡ °üÇÑ Á¤º¸¿¡ ´ëÇØ¼´Â, http://sunsite.uakom.sk/sunworldonline/swol-09-1997/swol-09-insidesolaris.htmlµµ ÂüÁ¶ÇØ ÁÖ¼¼¿ä. Solaris.
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 |
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¸¦ ºÙ¿© ÁÖ¼¼¿ä. )
Ä¿³ÚÀº ¸î°³ÀÇ ÀÚ¿ø¿¡ ´ëÇØ¼, ½Ã½ºÅÛ ÀüüÀÇ Á¦ÇÑÀ» °¡Áö´Â µµÀÌ °¡´ÉÇÕ´Ï´Ù.
Linux¿¡¼´Â, /proc/sys/fs/file-max°¡, Ä¿³ÚÀÌ Áö¿öÇÏ´Â ¿ÀÇ ÆÄÀϼöÀÇ Ãִ븦 °áÁ¤ÇÕ´Ï´Ù. ÀÌ ¼ö¸¦ ¹Ù²Ù±â À§Çؼ´Â, ±× ÆÄÀÏ¿¡ ´Ù¸¥ ¼ö¸¦ ±âÀÔÇϵ簡, ȤÀº /etc/sysctl.conf¿¡ ´ëÀÔ½ÄÀ» Ãß°¡ÇÕ´Ï´Ù. ÇÁ·Î¼¼½º¸¶´ÙÀÇ ÆÄÀÏÀÇ ÃÖ´ë Á¦ÇÑÀº Ä¿³ÚÀÌ ÄÄÆÄÀÏ µÇ¾úÀ» ¶§¿¡ °íÁ¤µË´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â /usr/src/linux/Documentation/proc.txt¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
PostgreSQL¼¹ö´Â Á¢¼Ó ¸¶´Ù 1°³ÀÇ ÇÁ·Î¼¼½º¸¦ »ç¿ëÇϹǷÎ, Àû¾îµµ Çã°¡µÈ Á¢¼ÓÀÇ ¼ö ¸¸ÅÀÇ ÇÁ·Î¼¼½º¿Í ³ª¸ÓÁöÀÇ ½Ã½ºÅÛÀÇ ÇÊ¿äÇÑ ºÐÀ» Ãß°¡ÇÑ °ÍÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù. Åë»ó, À̰ÍÀº ¹®Á¦°¡ ¾Æ´Õ´Ï´Ù¸¸, 1°³ÀÇ ¸Ó½Å»ó¿¡¼ ¸î°³ÀÇ ¼¹ö¸¦ ±âµ¿Çϰí ÀÖ´Â °æ¿ì´Â ¾î·Á¿î »óȲÀÌ µÉÁöµµ ¸ð¸¨´Ï´Ù.
¿ÀÇ ÆÄÀÏÀÇ Á¦ÇÑÀÇ ÃâÇϽÃÀÇ ±âº»°ªÀº, ÀÚÁÖ ´ë´Ù¼öÀÇ »ç¿ëÀÚ´Â ¸Ó½Å»ó¿¡¼ ½Ã½ºÅÛ ÀÚ¿øÀÇ ºÎÀûÀýÇÑ ºÎºÐÀ» »ç¿ëÇÏÁö ¾Ê°í "»çȸÀûÀ¸·Î ¿ìÈ£ÀûÀÎ"°ªÀ» ¼³Á¤ÇØ ¹ö¸³´Ï´Ù. 1°³ÀÇ ¸Ó½Å»ó¿¡¼ º¹¼öÀÇ ¼¹ö¸¦ ±âµ¿ÇÏ´Â °æ¿ì¿¡ ÇÊ¿äÇϰÚÁö¸¸, Àü¿ë ¼¹ö¿¡¼´Â ÀÌ Á¦ÇÑÀ» ¿Ã¸®°í ½ÍÀ»Áöµµ ¸ð¸¨´Ï´Ù.
¹Ý´ë·Î, °³°³ÀÇ ÇÁ·Î¼¼½º°¡ ´Ù¼öÀÇ ÆÄÀÏÀ» ¿ÀÇÂÇÏ´Â °ÍÀ» Çã°¡ÇÏ´Â ½Ã½ºÅÛµµ ÀÖ½À´Ï´Ù. ±×·¯ÇÑ ÇÁ·Î¼¼½º°¡ ¸î °³ ÀÌ»ó ÀÖÀ¸¸é, ½Ã½ºÅÛ ÀüüÀÇ Á¦ÇÑÀº °£´ÜÇÏ°Ô ³Ñ¾î ¹ö¸³´Ï´Ù. ÀÌ ¹ß»ýÀ» °¨ÁöÇØ, ½Ã½ºÅÛ ÀüüÀÇ Á¦ÇÑÀÇ º¯°æÀ» ¹Ù¶óÁö ¾Ê´Â °æ¿ì´Â, PostgreSQLÀÇ max_files_per_process¼³Á¤ ¸Å°³º¯¼ö¸¦ ¼³Á¤ÇØ, ¿ÀÇ ÆÄÀÏÀÇ ¼Òºñ¸¦ Á¦ÇÑÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
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ÀÇ Ä¿³Ú Àü¹®°¡¿¡°Ô »ó´ãÇØ ÁÖ¼¼¿ä.