Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Node.js(Next.js) 애플리케이션 모니터링을 위한 메모리 인사이트

kakao
November 01, 2024

Node.js(Next.js) 애플리케이션 모니터링을 위한 메모리 인사이트

#모니터링 #node.js #성능 지표 #react ssr #prometheus

Node.js 애플리케이션의 메모리 지표의 의미와, 실제로 어떤 Native API를 사용하여 데이터를 측정하는지. Node.js Native API의 데이터 측정 방식을 살펴봅니다. Node.js 애플리케이션을 운영해야 하는 분들 중, 메모리 지표 해석에 대한 지식이 필요한 분들이라면 이 세션을 추천합니다.

목차:
1. 메모리 릭이 의심스러운 지표 발견
2. Node.js(V8) 메모리 구조와 데이터의 이해
3. 메모리 관련 모니터링 지표 이해하기
4. Node.js(V8) 내부 메모리 데이터 측정과정 엿보기
5. 마무리

발표자 : john.bosco
카카오페이 Frontend 개발자 john 입니다. Frontend 개발에 필요한 인프라 관련 업무를 주로 담당합니다.

kakao

November 01, 2024
Tweet

More Decks by kakao

Other Decks in Programming

Transcript

  1. ਃࣗ ࢸݺ STT  ೐۽ࣁझܳਤ೧पઁ۽3".ীࠁҙػ੹୓ݫݽܻ  पઁ۽੼ਬೞҊ੓חޛܻݫݽܻ௼ӝ  ݽٚ$ +BWBTDSJQUё୓৬௏٘оನೣ

    IFBQ5PUBM  7ղࠗীೡ׼ػ)FBQݫݽܻ੄੹୓௼ӝ  +BWBTDSJQUё୓৬ҙ۲ػࠗ࠙ীࢎਊоמೠ੹୓௼ӝ IFBQ6TFE  7࢚ী੼ਬػ)FBQࢎਊ۝  +BWBTDSJQUё୓оର૑ೞח୨௼ӝ  ($оجӝ੹ё୓оನೣغয੓ਸࣻ੓਺ FYUFSOBM  7ীࢲҙܻೞח +BWBTDSJQUё୓ী߄ੋ٬ػ$ ё୓੄ݫݽܻࢎਊ۝  7൩৻ࠗীೡ׼ػݫݽܻ BSSBZ#VGGFST  BSSBZ#VGGFST߂4IBSFE"SSBZ#VGGFSTী؀ೠݫݽܻೡ׼۝  FYUFSOBMݫݽܻ௼ӝীח؀ࠗ࠙੄҃਋੉ݫݽܻч੉ನೣغয੓਺ QSPDFTTNFNPSZ6TBHFSFTVMUT /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧
  2. ਃࣗ ࢸݺ STT  ೐۽ࣁझܳਤ೧पઁ۽3".ীࠁҙػ੹୓ݫݽܻ  पઁ۽੼ਬೞҊ੓חޛܻݫݽܻ௼ӝ  ݽٚ$ +BWBTDSJQUё୓৬௏٘оನೣ

    IFBQ5PUBM  7ղࠗীೡ׼ػ)FBQݫݽܻ੄੹୓௼ӝ  +BWBTDSJQUё୓৬ҙ۲ػࠗ࠙ীࢎਊоמೠ੹୓௼ӝ IFBQ6TFE  7࢚ী੼ਬػ)FBQࢎਊ۝  +BWBTDSJQUё୓оର૑ೞח୨௼ӝ  ($оجӝ੹ё୓оನೣغয੓ਸࣻ੓਺ FYUFSOBM  7ীࢲҙܻೞח +BWBTDSJQUё୓ী߄ੋ٬ػ$ ё୓੄ݫݽܻࢎਊ۝  7൩৻ࠗীೡ׼ػݫݽܻ BSSBZ#VGGFST  BSSBZ#VGGFST߂4IBSFE"SSBZ#VGGFSTী؀ೠݫݽܻೡ׼۝  FYUFSOBMݫݽܻ௼ӝীח؀ࠗ࠙੄҃਋੉ݫݽܻч੉ನೣغয੓਺ QSPDFTTNFNPSZ6TBHFSFTVMUTSTT /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧
  3. 4UBDL /FXTQBDF 0METQBDF -BSHFPCKFDUTQBDF $PEFTQBDF $FMMTQBDF 1SPQFSUZ$FMMTQBDF .BQTQBDF )FBQ IFBQ5PUBM

    3FTJEFOUTFU STT /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧ 7.FNPSZ"SDIJUFDUVSF3FTJEFOUTFU STT 5IFJNBHFTPVSDFJTIUUQT EFFQVUFDINFNPSZ - NBOBHFNFOU - JO - W
  4. ਃࣗ ࢸݺ STT  ೐۽ࣁझܳਤ೧पઁ۽3".ীࠁҙػ੹୓ݫݽܻ  पઁ۽੼ਬೞҊ੓חޛܻݫݽܻ௼ӝ  ݽٚ$ +BWBTDSJQUё୓৬௏٘оನೣ

    IFBQ5PUBM  7ղࠗীೡ׼ػ)FBQݫݽܻ੄੹୓௼ӝ  +BWBTDSJQUё୓৬ҙ۲ػࠗ࠙ীࢎਊоמೠ੹୓௼ӝ IFBQ6TFE  7࢚ী੼ਬػ)FBQࢎਊ۝  +BWBTDSJQUё୓оର૑ೞח୨௼ӝ  ($оجӝ੹ё୓оನೣغয੓ਸࣻ੓਺ FYUFSOBM  7ীࢲҙܻೞח +BWBTDSJQUё୓ী߄ੋ٬ػ$ ё୓੄ݫݽܻࢎਊ۝  7൩৻ࠗীೡ׼ػݫݽܻ BSSBZ#VGGFST  BSSBZ#VGGFST߂4IBSFE"SSBZ#VGGFSTী؀ೠݫݽܻೡ׼۝  FYUFSOBMݫݽܻ௼ӝীח؀ࠗ࠙੄҃਋੉ݫݽܻч੉ನೣغয੓਺ QSPDFTTNFNPSZ6TBHFSFTVMUTIFBQ5PUBM /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧
  5. /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧ 7.FNPSZ"SDIJUFDUVSF)FBQ IFBQ5PUBM 4UBDL /FXTQBDF 0METQBDF -BSHFPCKFDUTQBDF $PEFTQBDF

    $FMMTQBDF 1SPQFSUZ$FMMTQBDF .BQTQBDF )FBQ IFBQ5PUBM 3FTJEFOUTFU STT 5IFJNBHFTPVSDFJTIUUQT EFFQVUFDINFNPSZ - NBOBHFNFOU - JO - W
  6. ਃࣗ ࢸݺ STT  ೐۽ࣁझܳਤ೧पઁ۽3".ীࠁҙػ੹୓ݫݽܻ  पઁ۽੼ਬೞҊ੓חޛܻݫݽܻ௼ӝ  ݽٚ$ +BWBTDSJQUё୓৬௏٘оನೣ

    IFBQ5PUBM  7ղࠗীೡ׼ػ)FBQݫݽܻ੄੹୓௼ӝ  +BWBTDSJQUё୓৬ҙ۲ػࠗ࠙ীࢎਊоמೠ੹୓௼ӝ IFBQ6TFE  7࢚ী੼ਬػ)FBQࢎਊ۝  +BWBTDSJQUё୓оର૑ೞח୨௼ӝ  ($оجӝ੹ё୓оನೣغয੓ਸࣻ੓਺ FYUFSOBM  7ীࢲҙܻೞח +BWBTDSJQUё୓ী߄ੋ٬ػ$ ё୓੄ݫݽܻࢎਊ۝  7൩৻ࠗীೡ׼ػݫݽܻ BSSBZ#VGGFST  BSSBZ#VGGFST߂4IBSFE"SSBZ#VGGFSTী؀ೠݫݽܻೡ׼۝  FYUFSOBMݫݽܻ௼ӝীח؀ࠗ࠙੄҃਋੉ݫݽܻч੉ನೣغয੓਺ QSPDFTTNFNPSZ6TBHFSFTVMUTIFBQ6TFE /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧
  7. $PEFTQBDF $FMMTQBDF 1SPQFSUZ$FMMTQBDF .BQTQBDF 0METQBDF /FXTQBDF nࢎਊ઺ੋ৔৉ IFBQ6TFE /PEFKT 7

    ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧ 7.FNPSZ"SDIJUFDUVSF)FBQJOVTF IFBQ6TFE 4UBDL -BSHFPCKFDUTQBDF )FBQ IFBQ5PUBM 3FTJEFOUTFU STT 5IFJNBHFTPVSDFJTIUUQT EFFQVUFDINFNPSZ - NBOBHFNFOU - JO - W
  8. ਃࣗ ࢸݺ STT  ೐۽ࣁझܳਤ೧पઁ۽3".ীࠁҙػ੹୓ݫݽܻ  पઁ۽੼ਬೞҊ੓חޛܻݫݽܻ௼ӝ  ݽٚ$ +BWBTDSJQUё୓৬௏٘оನೣ

    IFBQ5PUBM  7ղࠗীೡ׼ػ)FBQݫݽܻ੄੹୓௼ӝ  +BWBTDSJQUё୓৬ҙ۲ػࠗ࠙ীࢎਊоמೠ੹୓௼ӝ IFBQ6TFE  7࢚ী੼ਬػ)FBQࢎਊ۝  +BWBTDSJQUё୓оର૑ೞח୨௼ӝ  ($оجӝ੹ё୓оನೣغয੓ਸࣻ੓਺ FYUFSOBM  7ীࢲҙܻೞח +BWBTDSJQUё୓ী߄ੋ٬ػ$ ё୓੄ݫݽܻࢎਊ۝  7൩৻ࠗীೡ׼ػݫݽܻ BSSBZ#VGGFST  BSSBZ#VGGFST߂4IBSFE"SSBZ#VGGFSTী؀ೠݫݽܻೡ׼۝  FYUFSOBMݫݽܻ௼ӝীח؀ࠗ࠙੄҃਋੉ݫݽܻч੉ನೣغয੓਺ QSPDFTTNFNPSZ6TBHFSFTVMUTFYUFSOBM BSSBZ#VGGFST /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧
  9. ਃࣗ ࢸݺ STT  ೐۽ࣁझܳਤ೧पઁ۽3".ীࠁҙػ੹୓ݫݽܻ  पઁ۽੼ਬೞҊ੓חޛܻݫݽܻ௼ӝ  ݽٚ$ +BWBTDSJQUё୓৬௏٘оನೣ

    IFBQ5PUBM  7ղࠗীೡ׼ػ)FBQݫݽܻ੄੹୓௼ӝ  +BWBTDSJQUё୓৬ҙ۲ػࠗ࠙ীࢎਊоמೠ੹୓௼ӝ IFBQ6TFE  7࢚ী੼ਬػ)FBQࢎਊ۝  +BWBTDSJQUё୓оର૑ೞח୨௼ӝ  ($оجӝ੹ё୓оನೣغয੓ਸࣻ੓਺ FYUFSOBM  7ীࢲҙܻೞח +BWBTDSJQUё୓ী߄ੋ٬ػ$ ё୓੄ݫݽܻࢎਊ۝  7൩৻ࠗীೡ׼ػݫݽܻ BSSBZ#VGGFST  BSSBZ#VGGFST߂4IBSFE"SSBZ#VGGFSTী؀ೠݫݽܻೡ׼۝  FYUFSOBMݫݽܻ௼ӝীח؀ࠗ࠙੄҃਋੉ݫݽܻч੉ನೣغয੓਺ QSPDFTTNFNPSZ6TBHFSFTVMUT /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧
  10. ਃࣗ ࢸݺ STT  ೐۽ࣁझܳਤ೧पઁ۽3".ীࠁҙػ੹୓ݫݽܻ  पઁ۽੼ਬೞҊ੓חޛܻݫݽܻ௼ӝ  ݽٚ$ +BWBTDSJQUё୓৬௏٘оನೣ

    IFBQ5PUBM  7ղࠗীೡ׼ػ)FBQݫݽܻ੄੹୓௼ӝ  +BWBTDSJQUё୓৬ҙ۲ػࠗ࠙ীࢎਊоמೠ੹୓௼ӝ IFBQ6TFE  7࢚ী੼ਬػ)FBQࢎਊ۝  +BWBTDSJQUё୓оର૑ೞח୨௼ӝ  ($оجӝ੹ё୓оನೣغয੓ਸࣻ੓਺ FYUFSOBM  7ীࢲҙܻೞח +BWBTDSJQUё୓ী߄ੋ٬ػ$ ё୓੄ݫݽܻࢎਊ۝  7൩৻ࠗীೡ׼ػݫݽܻ BSSBZ#VGGFST  BSSBZ#VGGFST߂4IBSFE"SSBZ#VGGFSTী؀ೠݫݽܻೡ׼۝  FYUFSOBMݫݽܻ௼ӝীח؀ࠗ࠙੄҃਋੉ݫݽܻч੉ನೣغয੓਺ QSPDFTTNFNPSZ6TBHFSFTVMUTSTT IFBQ5PUBM IFBQ6TFE /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧
  11. IFBQ5PUBMH .FNPSZ-JNJUߧਤղ IFBQ5PUBMࠁ׮੘਷Ӕࢎ஖੄ч .FNPSZ-JNJUH IFBQ6TFEH /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧ QSPDFTTNFNPSZ6TBHFSFTVMUTSTT IFBQ5PUBM

    IFBQ6TFEч੄߸ചݫழפ્ 5IF/PEFKT䢏MPHPJTBUSBEFNBSLPG0QFO+4'PVOEBUJPO䢏"MMSJHIUTUPUIJTMPHPBSFPXOFECZ0QFO+4'PVOEBUJPO
  12. IFBQ5PUBMH .FNPSZ-JNJUߧਤղ IFBQ5PUBMࠁ׮੘਷Ӕࢎ஖੄ч .FNPSZ-JNJUH IFBQ6TFEH HӔ੽ೞѢա؊௾ݫݽܻ೙ਃ IFBQ6TFE /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧

    QSPDFTTNFNPSZ6TBHFSFTVMUTSTT IFBQ5PUBM IFBQ6TFEч੄߸ചݫழפ્ 5IF/PEFKT䢏MPHPJTBUSBEFNBSLPG0QFO+4'PVOEBUJPO䢏"MMSJHIUTUPUIJTMPHPBSFPXOFECZ0QFO+4'PVOEBUJPO
  13. IFBQ5PUBMH .FNPSZ-JNJUߧਤղૐо HӔ੽ೞѢա؊௾ݫݽܻ೙ਃ IFBQ5PUBMH .FNPSZ-JNJUߧਤղ IFBQ5PUBMࠁ׮੘਷Ӕࢎ஖੄ч .FNPSZ-JNJUH IFBQ6TFEH IFBQ6TFE /PEFKT

    7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧ QSPDFTTNFNPSZ6TBHFSFTVMUTSTT IFBQ5PUBM IFBQ6TFEч੄߸ചݫழפ્ 5IF/PEFKT䢏MPHPJTBUSBEFNBSLPG0QFO+4'PVOEBUJPO䢏"MMSJHIUTUPUIJTMPHPBSFPXOFECZ0QFO+4'PVOEBUJPO
  14. HBSCBHFDPMMFDUJPO IFBQ5PUBMH .FNPSZ-JNJUߧਤղૐо HӔ੽ೞѢա؊௾ݫݽܻ೙ਃ IFBQ5PUBMH .FNPSZ-JNJUߧਤղ IFBQ5PUBMࠁ׮੘਷Ӕࢎ஖੄ч .FNPSZ-JNJUH IFBQ6TFEH IFBQ6TFE

    ($ /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧ QSPDFTTNFNPSZ6TBHFSFTVMUTSTT IFBQ5PUBM IFBQ6TFEч੄߸ചݫழפ્ 5IF/PEFKT䢏MPHPJTBUSBEFNBSLPG0QFO+4'PVOEBUJPO䢏"MMSJHIUTUPUIJTMPHPBSFPXOFECZ0QFO+4'PVOEBUJPO
  15. XJUI344 ($ HBSCBHFDPMMFDUJPO IFBQ5PUBMH .FNPSZ-JNJUߧਤղૐо HӔ੽ೞѢա؊௾ݫݽܻ೙ਃ IFBQ5PUBMH .FNPSZ-JNJUߧਤղ IFBQ5PUBMࠁ׮੘਷Ӕࢎ஖੄ч .FNPSZ-JNJUH

    IFBQ6TFEH IFBQ6TFE /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧ QSPDFTTNFNPSZ6TBHFSFTVMUTSTT IFBQ5PUBM IFBQ6TFEч੄߸ചݫழפ્ 5IF/PEFKT䢏MPHPJTBUSBEFNBSLPG0QFO+4'PVOEBUJPO䢏"MMSJHIUTUPUIJTMPHPBSFPXOFECZ0QFO+4'PVOEBUJPO
  16. XJUI344 ($ HBSCBHFDPMMFDUJPO IFBQ5PUBMH .FNPSZ-JNJUߧਤղૐо HӔ੽ೞѢա؊௾ݫݽܻ೙ਃ IFBQ5PUBMH .FNPSZ-JNJUߧਤ ղ IFBQ5PUBMࠁ׮੘਷Ӕࢎ஖੄

    ч .FNPSZ-JNJU H IFBQ6TFEH IFBQ6TFE OPEFnFYQPTF - HDJOEFYKT OPEFnUSBDF - HDJOEFYKT /PEFKT 7 ݫݽܻҳઑ৬ؘ੉ఠ੄੉೧ QSPDFTTNFNPSZ6TBHFSFTVMUTSTT IFBQ5PUBM IFBQ6TFEч੄߸ചݫழפ્ 5IF/PEFKT䢏MPHPJTBUSBEFNBSLPG0QFO+4'PVOEBUJPO䢏"MMSJHIUTUPUIJTMPHPBSFPXOFECZ0QFO+4'PVOEBUJPO
  17.   )PTU.FNPSZ-JNJU DPOUBJOFS@NFNPSZ@XPSLJOH@TFU@CZUFT  /PEFKT.FNPSZ-JNJU    

    .FNPSZ-JNJU  STT  IFBQ5PUBM ݫݽܻҙ۲ݽפఠ݂૑಴੉೧ೞӝ IFBQ6TFEIFBQ5PUBMਸन҃ॄঠೞח࢚ട
  18. const perThreadSetup = require('internal/process/per_thread'); const rawMethods = internalBinding('process_methods'); // Set

    up methods on the process object for all threads { // TODO(joyeecheung): either remove them or make them public process._getActiveRequests = rawMethods._getActiveRequests; const wrapped = perThreadSetup.wrapProcessMethods(rawMethods); process.memoryUsage = wrapped.memoryUsage; process.openStdin = function() { process.stdin.resume(); return process.stdin; }; } CPPTUSBQOPEFKT-
  19. const perThreadSetup = require('internal/process/per_thread'); const rawMethods = internalBinding('process_methods'); // Set

    up methods on the process object for all threads { // TODO(joyeecheung): either remove them or make them public process._getActiveRequests = rawMethods._getActiveRequests; const wrapped = perThreadSetup.wrapProcessMethods(rawMethods); process.memoryUsage = wrapped.memoryUsage; process.openStdin = function() { process.stdin.resume(); return process.stdin; }; } CPPTUSBQOPEFKT-
  20. SFBMNKT *OUFSOBMNPEVMF *OUFSOBMCJOEJOHMPBEFS OPEFKT *OJUJBMJ[FFOWJSPONFOU OPEF@CJOEJOHDD SFHJTUFSJOUFSOBMNPEVMF VW - DPNNPOD

    
 MPPQD FWFOUMPPQDPO fi HVSBUJPO NBOZPUIFS fi MFTj OPEFDD /PEFKT 7 ղࠗݫݽؘܻ੉ఠஏ੿җ੿৒ࠁӝ /PEFKTJOUFSOBM$ ݽٕਸ߄ੋ٬ೞחҗ੿ OPEF@NBJODD
  21. SFBMNKT *OUFSOBMNPEVMF *OUFSOBMCJOEJOHMPBEFS OPEFKT *OJUJBMJ[FFOWJSPONFOU OPEF@CJOEJOHDD SFHJTUFSJOUFSOBMNPEVMF VW - DPNNPOD

    
 MPPQD FWFOUMPPQDPO fi HVSBUJPO NBOZPUIFS fi MFTj OPEFDD /PEFKT 7 ղࠗݫݽؘܻ੉ఠஏ੿җ੿৒ࠁӝ /PEFKTJOUFSOBM$ ݽٕਸ߄ੋ٬ೞחҗ੿ OPEF@NBJODD 5IF/PEFKT䢏MPHPJTBUSBEFNBSLPG0QFO+4'PVOEBUJPO䢏"MMSJHIUTUPUIJTMPHPBSFPXOFECZ0QFO+4'PVOEBUJPO
  22. ݒ௼۽ܳࢎਊೞৈ (FU*OUFSOBM#JOEJOH୊ܻ *OUFSOBM#JOEJOH OPEFKT- SFBMNKT-  OPEF@CJOEJOHDD-  /PEFKT 7

    ղࠗݫݽؘܻ੉ఠஏ੿җ੿৒ࠁӝ /PEFKTJOUFSOBM$ ݽٕҗHFU*OUFSOBM#JOEJOHোѾҗ੿  (FU*OUFSOBM#JOEJOH ୊ܻҳഅࠗ
  23. const perThreadSetup = require('internal/process/per_thread'); const rawMethods = internalBinding('process_methods'); // Set

    up methods on the process object for all threads { // TODO(joyeecheung): either remove them or make them public process._getActiveRequests = rawMethods._getActiveRequests; const wrapped = perThreadSetup.wrapProcessMethods(rawMethods); process.memoryUsage = wrapped.memoryUsage; process.openStdin = function() { process.stdin.resume(); return process.stdin; }; } CPPTUSBQOPEFKT-
  24. const perThreadSetup = require('internal/process/per_thread'); const rawMethods = internalBinding('process_methods'); // Set

    up methods on the process object for all threads { // TODO(joyeecheung): either remove them or make them public process._getActiveRequests = rawMethods._getActiveRequests; const wrapped = perThreadSetup.wrapProcessMethods(rawMethods); process.memoryUsage = wrapped.memoryUsage; process.openStdin = function() { process.stdin.resume(); return process.stdin; }; } CPPTUSBQOPEFKT-
  25.  /PEFKTप೯ജ҃  Ӗ۽ߥё୓ݽٕ ੉߮౟ܖ೐١ਸҙܻ  *TPMBUF৬ݒட &OWJSPONFOU /PEFKT 

    7ূ૓੄ة݀ػप೯ജ҃  KBWBTDSJQU௏٘оप೯غחஶఫझ౟  ਕழझۨ٘оৈ۞ѐۄݶৈ۞ѐࢤࢿ *TPMBUF 7 OPEF@QSPDFTT@NFUIPETDD-
  26.  /FYUKTղࠗNJEEMFXBSF௏٘  ೧׼NJEEMFXBSFоٜ݅যղחё୓ઓ੤  ౠ੿೐۽ં౟ীࢲ݅($ীઁ؀۽ನೣغ૑ঋ਺ ਗੋ  അप੸ਵ۽ܻࣗझо੸ѱ٘ח೧Ѿߑউ଻ఖ 

    ೧׼NJEEMFXBSFౠࢿ࢚DMJFOUীࢲप೯оמ  ೧׼NJEEMFXBSF௏٘ܳDMJFOU۽੉ز ೧Ѿ ݃ޖܻ ݫݽܻܼਗੋ଺ӝ XJUI)FBQ%VNQ
  27. STT IFBQ5PUBM IFBQ6TFE  QSPDFTTNFNPSZ6TBHF  ׮ࢽо૑SFUVSOч੄੄޷  3TT IFBQ5PUBM

    IFBQ6TFEч੄߸҃ݫழפ્ ੉ۿ Ѩૐҗ੿  /PEFKT/BUJWF"1*חূ૓ӝמਸ߄۽оઉ׮ࢎਊ  "QQMJDBUJPO#PPUҗ੿ীJOUFSOBMNPEVMF߄ੋ٬  ূ૓ղؘࠗ੉ఠী߄۽੽ӔೞחѪҗэӝীউ੿੸ SFBMNKT 
 *OUFSOBMNPEVMF 
 *OUFSOBMCJOEJOHMPBEFS OPEFKT 
 *OJUJBMJ[FFOWJSPONFOU OPEF@CJOEJOHDD 
 SFHJTUFSJOUFSOBM NPEVMF VW - DPNNPOD 
 MPPQD 
 FWFOUMPPQDPO fi HVSBUJPO NBOZPUIFS fi MFTj OPEFDD OPEF@NBJODD ݃ޖܻ ӝর೧لਃࣗفо૑
  28.  SFRVFTUDPVOU  SFTQPOTFMBUFODZ  DQVVTBHF  DQVUISPUUMF  FWFOU-PPQMBH

     FWFOU-PPQVUJMJ[BUJPO  UDQTPDLFU  HDUJNJOH  HDEVSBUJPO  j  IPTUVTFSNFNPSZ  IPTUTZTUFNNFNPSZ  ECNFNPSZ  ECRVFSZMBUFODZ  FSSPSDPVOU  SFRVFTUFSSPSSBUJP  JP  TUSFBN  fi MFEFTDSJQUPS  j  NFNPSZ  STT  IFBQ5PUBM  IFBQ6TBHF  FYUFSOBM  BSSBZ#VGGFST ݃ޖܻ ݽפఠ݂૑಴઺ੌࠗ݅࢓ಝࠌਸࡺ
  29. 2"