SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชชเชฐเซเชซเซ‹เชฐเซเชฎเชจเซเชธ เชเชจเชพเชฒเชฟเชธเชฟเชธ เช…เชจเซ‡ เชŸเซเชฏเซเชจเชฟเช‚เช— เช เช•เซเชฒเชพเชฏเชจเซเชŸเซเชธ เชฎเชพเชŸเซ‡ เชชเชฐเซเชซเซ‹เชฐเซเชฎเชจเซเชธ เช…เชจเซเชชเชพเชฒเชจ เชšเช•เชพเชธเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เชธเชพเชงเชจ เช›เซ‡.

เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชŸเซเชฏเซเชจเชฟเช‚เช— เชชเซเชฐเชฏเซ‹เช—เซ‹เชจเชพ เชชเชฐเซ€เช•เซเชทเชฃ เชฎเชพเชŸเซ‡ เชตเซˆเชœเซเชžเชพเชจเชฟเช• เช…เชญเชฟเช—เชฎ เชฒเชพเช—เซ เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฎเชพเช‚ เช…เชตเชฐเซ‹เชงเซ‹ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เช† เชฒเซ‡เช– เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เช—เซ‹ เชตเซ‡เชฌเชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช…เชจเซ‡ เชŸเซเชฏเซเชจเชฟเช‚เช— เชฎเชพเชŸเซ‡เชจเชพ เชธเชพเชฎเชพเชจเซเชฏ เช…เชญเชฟเช—เชฎเชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡.

เช—เซ‹ เช…เชนเซ€เช‚ เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชธเชพเชฐเซเช‚ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชฎเชพเช‚ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฟเช‚เช— เชŸเซ‚เชฒเซเชธ เช›เซ‡ pprof เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชชเซเชธเซเชคเช•เชพเชฒเชฏเชฎเชพเช‚.

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชธเซเชŸเซเชฐเซ‡เชŸเซ‡เชœเซ€

เชšเชพเชฒเซ‹ เช†เชชเชฃเชพ เชฎเชพเชณเช–เชพเช•เซ€เชฏ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชฎเชพเชŸเซ‡ เชธเชพเชฐเชพเช‚เชถ เชธเซ‚เชšเชฟ เชฌเชจเชพเชตเซ€เช. เช…เชฎเซ‡ เช…เช‚เชคเชฐเซเชœเซเชžเชพเชจ เช…เชฅเชตเชพ เช…เชจเซเชฎเชพเชจเชจเชพ เช†เชงเชพเชฐเซ‡ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡ เชจเชฟเชฐเซเชฃเชฏเซ‹ เชฒเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชกเซ‡เชŸเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เชถเซเช‚. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เช† เช•เชฐเซ€เชถเซเช‚:

  • เช…เชฎเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชธเซ€เชฎเชพเช“ (เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹) เชจเช•เซเช•เซ€ เช•เชฐเซ€เช เช›เซ€เช;
  • เช…เชฎเซ‡ เชธเชฟเชธเซเชŸเชฎ เชฎเชพเชŸเซ‡ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชฒเซ‹เชกเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ€เช เช›เซ€เช;
  • เช…เชฎเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ€เช เช›เซ€เช (เชกเซ‡เชŸเชพ เชฌเชจเชพเชตเซ‹);
  • เช…เชฎเซ‡ เช…เชตเชฒเซ‹เช•เชจ เช•เชฐเซ€เช เช›เซ€เช;
  • เช…เชฎเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€เช เช›เซ€เช - เชถเซเช‚ เชฌเชงเซ€ เช†เชตเชถเซเชฏเช•เชคเชพเช“ เชชเซ‚เชฐเซ€ เชฅเชพเชฏ เช›เซ‡?
  • เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชตเซˆเชœเซเชžเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชธเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช, เชเช• เชชเซ‚เชฐเซเชตเชงเชพเชฐเชฃเชพ เช•เชฐเซ€เช เช›เซ€เช;
  • เช…เชฎเซ‡ เช† เชชเซ‚เชฐเซเชตเชงเชพเชฐเชฃเชพเชจเซ‡ เชšเช•เชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชชเซเชฐเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช.

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชธเชฐเชณ HTTP เชธเชฐเซเชตเชฐ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ

เช† เชฒเซ‡เช– เชฎเชพเชŸเซ‡ เช†เชชเชฃเซ‡ เช—เซ‹เชฒเชพเช‚เช—เชฎเชพเช‚ เชจเชพเชจเชพ HTTP เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚. เช† เชฒเซ‡เช–เชฎเชพเช‚เชฅเซ€ เชคเชฎเชพเชฎ เช•เซ‹เชก เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชนเซ€เช‚.

เชœเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡ เชเช• HTTP เชธเชฐเซเชตเชฐ เช›เซ‡ เชœเซ‡ เชฆเชฐเซ‡เช• เชตเชฟเชจเช‚เชคเซ€ เชฎเชพเชŸเซ‡ Postgresql เชจเซเช‚ เชฎเชคเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เชตเชงเซเชฎเชพเช‚, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช…เชจเซ‡ เชธเชฟเชธเซเชŸเชฎ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ, เชจเซ‹เชก_เชเช•เซเชธเชชเซ‹เชฐเซเชŸเชฐ เช…เชจเซ‡ เช—เซเชฐเชพเชซเชจเชพ เช›เซ‡.

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเช เช›เซ€เช เช•เซ‡ เช†เชกเซ€ เชธเซเช•เซ‡เชฒเชฟเช‚เช— (เช…เชจเซ‡ เช—เชฃเชคเชฐเซ€เช“เชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ) เชฎเชพเชŸเซ‡ เชฆเชฐเซ‡เช• เชธเซ‡เชตเชพ เช…เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชเช•เชธเชพเชฅเซ‡ เชœเชฎเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชงเซเชฏเซ‡เชฏเซ‹ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค

เช† เชชเช—เชฒเชพ เชชเชฐ, เช…เชฎเซ‡ เชฒเช•เซเชทเซเชฏ เชจเช•เซเช•เซ€ เช•เชฐเซ€เช เช›เซ€เช. เช†เชชเชฃเซ‡ เชถเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช? เชœเซเชฏเชพเชฐเซ‡ เชธเชฎเชพเชชเซเชค เชฅเชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เช†เชชเชฃเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชœเชพเชฃเซ€ เชถเช•เซ€เช? เช† เชฒเซ‡เช–เชฎเชพเช‚, เช…เชฎเซ‡ เช•เชฒเซเชชเชจเชพ เช•เชฐเซ€เชถเซเช‚ เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช—เซเชฐเชพเชนเช•เซ‹ เช›เซ‡ เช…เชจเซ‡ เช…เชฎเชพเชฐเซ€ เชธเซ‡เชตเชพ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 10 เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชถเซ‡.

ะ’ Google SRE เชฌเซเช• เชชเชธเช‚เชฆเช—เซ€ เช…เชจเซ‡ เชฎเซ‹เชกเซ‡เชฒเชฟเช‚เช—เชจเซ€ เชชเชฆเซเชงเชคเชฟเช“เชจเซ€ เชตเชฟเช—เชคเชตเชพเชฐ เชšเชฐเซเชšเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡. เชšเชพเชฒเซ‹ เชคเซ‡ เชœ เช•เชฐเซ€เช เช…เชจเซ‡ เชฎเซ‹เชกเซ‡เชฒเซ‹ เชฌเชจเชพเชตเซ€เช:

  • เชฒเซ‡เชŸเชจเซเชธเซ€: 99% เชตเชฟเชจเช‚เชคเซ€เช“ 60ms เช•เชฐเชคเชพ เช“เช›เชพ เชธเชฎเชฏเชฎเชพเช‚ เชชเซ‚เชฐเซเชฃ เชฅเชตเซ€ เชœเซ‹เชˆเช;
  • เช•เชฟเช‚เชฎเชค: เชธเซ‡เชตเชพเชฎเชพเช‚ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชจเชพเชฃเชพเชจเซ‹ เชตเชชเชฐเชพเชถ เชฅเชตเซ‹ เชœเซ‹เชˆเช เชœเซ‡ เช…เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชตเซเชฏเชพเชœเชฌเซ€ เชฐเซ€เชคเซ‡ เชถเช•เซเชฏ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชฅเซเชฐเซเชชเซเชŸเชจเซ‡ เชฎเชนเชคเซเชคเชฎ เช•เชฐเซ€เช เช›เซ€เช;
  • เช•เซเชทเชฎเชคเชพ เช†เชฏเซ‹เชœเชจ: เชเช•เช‚เชฆเชฐ เชธเซเช•เซ‡เชฒเชฟเช‚เช— เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชธเชนเชฟเชค, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เช•เซ‡เชŸเชฒเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ เช…เชจเซ‡ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชฒเซ‹เชก เช…เชจเซ‡ เชœเซ‹เช—เชตเชพเชˆเชจเซ€ เช†เชตเชถเซเชฏเช•เชคเชพเช“เชจเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‡เชŸเชฒเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ เชคเซ‡ เชธเชฎเชœเชตเชพ เช…เชจเซ‡ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชฐเซ€เชกเชจเซเชกเชจเซเชธเซ€ n+1.

เชฒเซ‡เชŸเชจเซเชธเซ€ เชฎเชพเชŸเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช‰เชชเชฐเชพเช‚เชค เช“เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ€ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชฅเซเชฐเซเชชเซเชŸเชจเซเช‚ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. SRE SLO เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชตเชฟเชฒเช‚เชฌเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช—เซเชฐเชพเชนเช• เช…เชฅเชตเชพ เชตเซเชฏเชตเชธเชพเชฏ เชคเชฐเชซเชฅเซ€ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เช‰เชคเซเชชเชพเชฆเชจ เชฎเชพเชฒเชฟเช• เชฆเซเชตเชพเชฐเชพ เชฐเชœเซ‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช…เชจเซ‡ เช…เชฎเชพเชฐเซ€ เชธเซ‡เชตเชพ เชถเชฐเซ‚เช†เชคเชฅเซ€ เชœ เช•เซ‹เชˆเชชเชฃ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชตเชฟเชจเชพ เช† เชœเชตเชพเชฌเชฆเชพเชฐเซ€ เชชเซ‚เชฐเซ€ เช•เชฐเชถเซ‡!

เชชเชฐเซ€เช•เซเชทเชฃ เชตเชพเชคเชพเชตเชฐเชฃ เชธเซเชฏเซ‹เชœเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชชเชฐเซ€เช•เซเชทเชฃ เชตเชพเชคเชพเชตเชฐเชฃเชจเซ€ เชฎเชฆเชฆเชฅเซ€, เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ€ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชฎเชพเชชเซ‡เชฒ เชฒเซ‹เชก เชฎเซ‚เช•เซ€ เชถเช•เซ€เชถเซเช‚. เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชฎเชพเชŸเซ‡, เชตเซ‡เชฌ เชธเซ‡เชตเชพเชจเชพ เชชเซเชฐเชฆเชฐเซเชถเชจ เชชเชฐเชจเซ‹ เชกเซ‡เชŸเชพ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชฒเซ‹เชก

เช† เชชเชฐเซเชฏเชพเชตเชฐเชฃ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เชถเชพเช• เชฌเช‚เชง เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เช•เชธเซเชŸเชฎ HTTP เชตเชฟเชจเช‚เชคเซ€ เชฆเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡:

$ make load-test LOAD_TEST_RATE=50
echo "POST http://localhost:8080" | vegeta attack -body tests/fixtures/age_no_match.json -rate=50 -duration=0 | tee results.bin | vegeta report

เช…เชตเชฒเซ‹เช•เชจ

เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจเชฒ เชฒเซ‹เชก เชฐเชจเชŸเชพเช‡เชฎ เชชเชฐ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ (เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ, เชชเซเชฐเชคเชฟเชธเชพเชฆ เชฒเซ‡เชŸเชจเซเชธเซ€) เช…เชจเซ‡ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ (เชฎเซ‡เชฎเชฐเซ€, CPU, IOPS) เช‰เชชเชฐเชพเช‚เชค, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฟเช‚เช— เช เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡ เชถเชฐเซ‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เช•เซ‡ เชคเซ‡เชจเซ‡ เช•เซเชฏเชพเช‚ เชธเชฎเชธเซเชฏเชพเช“ เช›เซ‡, เชคเซ‡เชฎเชœ CPU เชธเชฎเชฏเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฅเชพเชฏ เช›เซ‡.

เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฟเช‚เช—

เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฟเช‚เช— เช เชฎเชพเชชเชจเซ‹ เชเช• เชชเซเชฐเช•เชพเชฐ เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เช เชœเซ‹เชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชพเชฒเซ€ เชฐเชนเซ€ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ CPU เชธเชฎเชฏ เช•เซเชฏเชพเช‚ เชœเชˆ เชฐเชนเซเชฏเซ‹ เช›เซ‡. เชคเซ‡ เชคเชฎเชจเซ‡ เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเชจเซ‹ เชธเชฎเชฏ เช•เซเชฏเชพเช‚ เช…เชจเซ‡ เช•เซ‡เชŸเชฒเซ‹ เช–เชฐเซเชšเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เช† เชกเซ‡เชŸเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชชเซƒเชฅเซเชฅเช•เชฐเชฃ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชตเซเชฏเชฐเซเชฅ CPU เชธเชฎเชฏ เช…เชจเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเชพ เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เช•เชพเชฐเซเชฏเชจเซ€ เชธเชฎเชœ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. Go (pprof) เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชธเชพเชงเชจเซ‹เชจเชพ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชธเชฎเซ‚เชนเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชซเซเชฒเซ‡เชฎ เช—เซเชฐเชพเชซ เชคเชฐเซ€เช•เซ‡ เชตเชฟเชเซเชฏเซเช…เชฒเชพเชˆเช เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชนเซเช‚ เชฒเซ‡เช–เชฎเชพเช‚ เชชเช›เซ€เชฅเซ€ เชคเซ‡เชฎเชจเชพ เช‰เชชเชฏเซ‹เช— เช…เชจเซ‡ เชธเซ‡เชŸเช…เชช เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถ.

เช…เชฎเชฒ, เช…เชตเชฒเซ‹เช•เชจ, เชตเชฟเชถเซเชฒเซ‡เชทเชฃ.

เชšเชพเชฒเซ‹ เชเช• เชชเซเชฐเชฏเซ‹เช— เช•เชฐเซ€เช. เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เช…เชฎเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจเชฅเซ€ เชธเช‚เชคเซเชทเซเชŸ เชจ เชฅเชˆเช เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เช…เชฎเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจ, เช…เชตเชฒเซ‹เช•เชจ เช…เชจเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€เชถเซเช‚. เชšเชพเชฒเซ‹ เชชเซเชฐเชฅเชฎ เช…เชตเชฒเซ‹เช•เชจเซ‹เชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‡ เชฒเชพเช—เซ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชจเชธเซเชตเซ€ เชฐเซ€เชคเซ‡ เช“เช›เชพ เชฒเซ‹เชก เชฎเซ‚เชฒเซเชฏ เชชเชธเช‚เชฆ เช•เชฐเซ€เช. เชฆเชฐเซ‡เช• เช…เชจเซเช—เชพเชฎเซ€ เชชเช—เชฒเชพ เชชเชฐ เช…เชฎเซ‡ เช…เชฎเซเช• เชญเชฟเชจเซเชจเชคเชพ เชธเชพเชฅเซ‡ เชชเชธเช‚เชฆ เช•เชฐเซ‡เชฒ เชšเซ‹เช•เซเช•เชธ เชธเซเช•เซ‡เชฒเชฟเช‚เช— เชชเชฐเชฟเชฌเชณ เชธเชพเชฅเซ‡ เชญเชพเชฐ เชตเชงเชพเชฐเซ€เชถเซเช‚. เชฆเชฐเซ‡เช• เชฒเซ‹เชก เชŸเซ‡เชธเซเชŸเชฟเช‚เช— เชฐเชจ เชเชกเชœเชธเซเชŸ เช•เชฐเซ‡เชฒเซ€ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชธเชพเชฅเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡: make load-test LOAD_TEST_RATE=X.

เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 50 เชตเชฟเชจเช‚เชคเซ€เช“

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชŸเซ‹เชšเชจเชพ เชฌเซ‡ เช—เซเชฐเชพเชซ เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ‹. เช‰เชชเชฐ เชกเชพเชฌเซ€ เชฌเชพเชœเซ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 50 เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡ (เชคเซ‡ เชตเชฟเชšเชพเชฐเซ‡ เช›เซ‡) เช…เชจเซ‡ เช‰เชชเชฐ เชœเชฎเชฃเซ€ เชฌเชพเชœเซเช เชฆเชฐเซ‡เช• เชตเชฟเชจเช‚เชคเซ€เชจเซ‹ เชธเชฎเชฏเช—เชพเชณเซ‹ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡. เชฌเช‚เชจเซ‡ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เช…เชฎเชจเซ‡ เชœเซ‹เชตเชพ เช…เชจเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชถเซเช‚ เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซ€ เชธเซ€เชฎเชพเช“เชฎเชพเช‚ เช›เซ€เช เช•เซ‡ เชจเชนเซ€เช‚. เช—เซเชฐเชพเชซ เชชเชฐ เชฒเชพเชฒ เชฐเซ‡เช–เชพ HTTP เชตเชฟเชจเช‚เชคเซ€ เชฒเซ‡เชŸเชจเซเชธเซ€ 60ms เชชเชฐ SLO เชฌเชคเชพเชตเซ‡ เช›เซ‡. เชฐเซ‡เช–เชพ เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชฎเชนเชคเซเชคเชฎ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชธเชฎเชฏเชจเซ€ เชจเซ€เชšเซ‡ เช›เซ€เช.

เชšเชพเชฒเซ‹ เช–เชฐเซเชš เชฌเชพเชœเซ เชœเซ‹เชˆเช:

เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 10000 เชตเชฟเชจเช‚เชคเซ€เช“ / เชธเชฐเซเชตเชฐ เชฆเซ€เช  50 เชตเชฟเชจเช‚เชคเซ€เช“ = 200 เชธเชฐเซเชตเชฐเซเชธ + 1

เช…เชฎเซ‡ เชนเชœเซ เชชเชฃ เช† เช†เช‚เช•เชกเซ‹ เชธเซเชงเชพเชฐเซ€ เชถเช•เซ€เช เช›เซ€เช.

เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 500 เชตเชฟเชจเช‚เชคเซ€เช“

เชœเซเชฏเชพเชฐเซ‡ เชฒเซ‹เชก เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 500 เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชฐ เชชเชนเซ‹เช‚เชšเซ‡ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เชตเชงเซ เชฐเชธเชชเซเชฐเชฆ เชตเชธเซเชคเซเช“ เชฅเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡:

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชซเชฐเซ€เชฅเซ€, เช‰เชชเชฐเชจเชพ เชกเชพเชฌเชพ เช—เซเชฐเชพเชซเชฎเชพเช‚ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชพเชฎเชพเชจเซเชฏ เชฒเซ‹เชก เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเซ€ เชฐเชนเซ€ เช›เซ‡. เชœเซ‹ เช† เช•เซ‡เชธ เชจเชฅเซ€, เชคเซ‹ เชธเชฐเซเชตเชฐ เชชเชฐ เชธเชฎเชธเซเชฏเชพ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชพเชฒเซ€ เชฐเชนเซ€ เช›เซ‡. เชชเซเชฐเชคเชฟเชธเชพเชฆ เชฒเซ‡เชŸเชจเซเชธเซ€ เช—เซเชฐเชพเชซ เช‰เชชเชฐ เชœเชฎเชฃเซ€ เชฌเชพเชœเซเช เชธเซเชฅเชฟเชค เช›เซ‡, เชœเซ‡ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก เชฆเซ€เช  500 เชตเชฟเชจเช‚เชคเซ€เช“ 25-40ms เชจเชพ เชชเซเชฐเชคเชฟเชญเชพเชต เชตเชฟเชฒเช‚เชฌเชฎเชพเช‚ เชชเชฐเชฟเชฃเชฎเซ€ เช›เซ‡. 99เชฎเซ€ เชชเชฐเซเชธเซ‡เชจเซเชŸเชพเชˆเชฒ เชนเชœเซ เชชเชฃ เช‰เชชเชฐ เชชเชธเช‚เชฆ เช•เชฐเซ‡เชฒ 60ms SLO เชฎเชพเช‚ เชธเชฐเชธ เชฐเซ€เชคเซ‡ เชฌเช‚เชงเชฌเซ‡เชธเซ‡ เช›เซ‡.

เช–เชฐเซเชšเชจเซ€ เชฆเซเชฐเชทเซเชŸเชฟเช:

เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 10000 เชตเชฟเชจเช‚เชคเซ€เช“ / เชธเชฐเซเชตเชฐ เชฆเซ€เช  500 เชตเชฟเชจเช‚เชคเซ€เช“ = 20 เชธเชฐเซเชตเชฐเซเชธ + 1

เชฌเชงเซเช‚ เชนเชœเซ เชชเชฃ เชธเซเชงเชพเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 1000 เชตเชฟเชจเช‚เชคเซ€เช“

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชฎเชนเชพเชจ เชฒเซ‹เชจเซเชš! เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เชฃเซ‡ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 1000 เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ€ เชนเชคเซ€, เชชเชฐเช‚เชคเซ SLO เชฆเซเชตเชพเชฐเชพ เชตเชฟเชฒเช‚เชฌเชคเชพ เชฎเชฐเซเชฏเชพเชฆเชพเชจเซเช‚ เช‰เชฒเซเชฒเช‚เช˜เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เช† เชŸเซ‹เชšเชจเชพ เชœเชฎเชฃเชพ เช—เซเชฐเชพเชซเชฎเชพเช‚ เชฒเชพเช‡เชจ p99 เชฎเชพเช‚ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡. เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ p100 เชฒเชพเช‡เชจ เช˜เชฃเซ€ เชŠเช‚เชšเซ€ เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชตเชพเชธเซเชคเชตเชฟเช• เชตเชฟเชฒเช‚เชฌ เชฎเชนเชคเซเชคเชฎ 60ms เช•เชฐเชคเชพ เชตเชงเชพเชฐเซ‡ เช›เซ‡. เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชถเซเช‚ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชšเชพเชฒเซ‹ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฟเช‚เช—เชฎเชพเช‚ เชกเซ‚เชฌเช•เซ€ เชฒเช—เชพเชตเซ€เช.

เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฟเช‚เช—

เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฟเช‚เช— เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชฒเซ‹เชกเชจเซ‡ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 1000 เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช, เชชเช›เซ€ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ pprof เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ CPU เชธเชฎเชฏ เช•เซเชฏเชพเช‚ เชตเชฟเชคเชพเชตเซ€ เชฐเชนเซ€ เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡. เช† HTTP เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸเชจเซ‡ เชธเช•เซเชฐเชฟเชฏ เช•เชฐเซ€เชจเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ pprof, เช…เชจเซ‡ เชชเช›เซ€, เชฒเซ‹เชก เชนเซ‡เช เชณ, curl เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชธเชพเชšเชตเซ‹:

$ curl http://localhost:8080/debug/pprof/profile?seconds=29 > cpu.1000_reqs_sec_no_optimizations.prof

เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช†เชจเซ€ เชœเซ‡เชฎ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

$ go tool pprof -http=:12345 cpu.1000_reqs_sec_no_optimizations.prof

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เช—เซเชฐเชพเชซ เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซเชฏเชพเช‚ เช…เชจเซ‡ เช•เซ‡เชŸเชฒเซ‹ CPU เชธเชฎเชฏ เชตเชฟเชคเชพเชตเซ‡ เช›เซ‡. เชจเชพ เชตเชฐเซเชฃเชจเชฎเชพเช‚เชฅเซ€ เชฌเซเชฐเซ‡เชจเซเชกเชจ เช—เซเชฐเซ‡เช—:

X เช…เช•เซเชท เช เชธเซเชŸเซ‡เช• เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชจเซ€ เชตเชธเซเชคเซ€ เช›เซ‡, เชœเซ‡ เชฎเซ‚เชณเชพเช•เซเชทเชฐเซ‹ เชชเซเชฐเชฎเชพเชฃเซ‡ เชธเซ‰เชฐเซเชŸ เช•เชฐเซ‡เชฒ เช›เซ‡ (เช† เชธเชฎเชฏ เชจเชฅเซ€), Y เช…เช•เซเชท เชธเซเชŸเซ‡เช•เชจเซ€ เชŠเช‚เชกเชพเชˆ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡, [เชŸเซ‹เชš] เชชเชฐ เชถเซ‚เชจเซเชฏเชฅเซ€ เช—เชฃเชพเชฏ เช›เซ‡. เชฆเชฐเซ‡เช• เชฒเช‚เชฌเชšเซ‹เชฐเชธ เชธเซเชŸเซ‡เช• เชซเซเชฐเซ‡เชฎ เช›เซ‡. เชซเซเชฐเซ‡เชฎ เชœเซ‡เชŸเชฒเซ€ เชตเชฟเชถเชพเชณ เช›เซ‡, เชคเซ‡ เชตเชงเซ เชตเช–เชค เชธเซเชŸเซ‡เช•เซเชธเชฎเชพเช‚ เชนเชพเชœเชฐ เช›เซ‡. เชŸเซ‹เชš เชชเชฐ เชถเซเช‚ เช›เซ‡ เชคเซ‡ CPU เชชเชฐ เชšเชพเชฒเซ‡ เช›เซ‡, เช…เชจเซ‡ เชจเซ€เชšเซ‡ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เชฌเชพเชณ เชคเชคเซเชตเซ‹ เช›เซ‡. เชฐเช‚เช—เซ‹เชจเซ‹ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เซ‹เชˆ เช…เชฐเซเชฅ เชนเซ‹เชคเซ‹ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชซเซเชฐเซ‡เชฎเชจเซ‡ เช…เชฒเช— เชชเชพเชกเชตเชพ เชฎเชพเชŸเซ‡ เชฐเซ‡เชจเซเชกเชฎ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชตเชฟเชถเซเชฒเซ‡เชทเชฃ - เชชเซ‚เชฐเซเชตเชงเชพเชฐเชฃเชพ

เชŸเซเชฏเซเชจเชฟเช‚เช— เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชตเซเชฏเชฐเซเชฅ CPU เชธเชฎเชฏ เชถเซ‹เชงเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซ€เชถเซเช‚. เช…เชฎเซ‡ เชจเช•เชพเชฎเชพ เช–เชฐเซเชšเชจเชพ เชธเซŒเชฅเซ€ เชฎเซ‹เชŸเชพ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เชถเซ‹เชงเซ€เชถเซเช‚ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ€เชถเซเช‚. เช เซ€เช• เช›เซ‡, เช†เชชเซ‡เชฒ เช›เซ‡ เช•เซ‡ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฟเช‚เช— เช–เซ‚เชฌ เชœ เชธเชšเซ‹เชŸ เชฐเซ€เชคเซ‡ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชคเซ‡เชจเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเชจเซ‹ เชธเชฎเชฏ เช•เซเชฏเชพเช‚ เชตเชฟเชคเชพเชตเซ€ เชฐเชนเซ€ เช›เซ‡, เชคเชฎเชพเชฐเซ‡ เชคเซ‡ เช˜เชฃเซ€ เชตเช–เชค เช•เชฐเชตเซเช‚ เชชเชกเชถเซ‡, เช…เชจเซ‡ เชคเชฎเชพเชฐเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‹ เชธเซเชฐเซ‹เชค เช•เซ‹เชก เชฌเชฆเชฒเชตเชพเชจเซ€ เชชเชฃ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡, เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชซเชฐเซ€เชฅเซ€ เชšเชฒเชพเชตเซ‹ เช…เชจเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจ เชฒเช•เซเชทเซเชฏ เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเซ‡ เช›เซ‡ เชคเซ‡ เชœเซ‹เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เชฌเซเชฐเซ‡เชจเซเชกเชจ เช—เซเชฐเซ‡เช—เชจเซ€ เชญเชฒเชพเชฎเชฃเซ‹เชจเซ‡ เช…เชจเซเชธเชฐเซ€เชจเซ‡, เช…เชฎเซ‡ เช‰เชชเชฐเชฅเซ€ เชจเซ€เชšเซ‡ เชธเซเชงเซ€ เชšเชพเชฐเซเชŸ เชตเชพเช‚เชšเซ€เชถเซเช‚. เชฆเชฐเซ‡เช• เชฒเชพเช‡เชจ เชธเซเชŸเซ‡เช• เชซเซเชฐเซ‡เชฎ (เชซเช‚เช•เซเชถเชจ เช•เซ‹เชฒ) เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡. เชชเซเชฐเชฅเชฎ เชฒเชพเช‡เชจ เช เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฎเชพเช‚ เชเชจเซเชŸเซเชฐเซ€ เชชเซ‹เชˆเชจเซเชŸ เช›เซ‡, เชœเซ‡ เช…เชจเซเชฏ เชคเชฎเชพเชฎ เช•เซ‰เชฒเซเชธเชจเชพ เชชเซ‡เชฐเซ‡เชจเซเชŸ เช›เซ‡ (เชฌเซ€เชœเชพ เชถเชฌเซเชฆเซ‹เชฎเชพเช‚ เช•เชนเซ€เช เชคเซ‹, เช…เชจเซเชฏ เชคเชฎเชพเชฎ เช•เซ‰เชฒเซเชธ เชคเซ‡เชฎเชจเชพ เชธเซเชŸเซ‡เช• เชชเชฐ เชนเชถเซ‡). เช†เช—เชณเชจเซ€ เชฒเชพเช‡เชจ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช…เชฒเช— เช›เซ‡:

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชœเซ‹ เชคเชฎเซ‡ เช•เชฐเซเชธเชฐเชจเซ‡ เช—เซเชฐเชพเชซ เชชเชฐ เชซเช‚เช•เซเชถเชจเชจเชพ เชจเชพเชฎ เชชเชฐ เชนเซ‹เชตเชฐ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชกเชฟเชฌเช—เซ€เช‚เช— เชฆเชฐเชฎเชฟเชฏเชพเชจ เชธเซเชŸเซ‡เช• เชชเชฐเชจเซ‹ เช•เซเชฒ เชธเชฎเชฏ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชถเซ‡. HTTPServe เชซเช‚เช•เซเชถเชจ เชคเซเชฏเชพเช‚ 65% เชธเชฎเชฏ เชนเชคเซเช‚, เช…เชจเซเชฏ เชฐเชจเชŸเชพเช‡เชฎ เช•เชพเชฐเซเชฏเซ‹ runtime.mcall, mstart ะธ gc, เชฌเชพเช•เซ€เชจเซ‹ เชธเชฎเชฏ เชฒเซ€เชงเซ‹. เชฎเชจเซ‹เชฐเช‚เชœเช• เชนเช•เซ€เช•เชค: เช•เซเชฒ เชธเชฎเชฏเชจเซ‹ 5% DNS เช•เซเชตเซ‡เชฐเซ€เช เชชเชฐ เช–เชฐเซเชšเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชœเซ‡ เชธเชฐเชจเชพเชฎเชพเช‚เช“ เชฎเชพเชŸเซ‡ เชœเซเช เช›เซ‡ เชคเซ‡ เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธเซเช•เซเชฒเชจเชพ เช›เซ‡. เช‰เชชเชฐ เช•เซเชฒเชฟเช• เช•เชฐเซ‹ FindByAge:

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชฐเชธเชชเซเชฐเชฆ เชฐเซ€เชคเซ‡, เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡, เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เชคเซเชฏเชพเช‚ เชคเซเชฐเชฃ เชฎเซเช–เซเชฏ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เช›เซ‡ เชœเซ‡ เชตเชฟเชฒเช‚เชฌ เช‰เชฎเซ‡เชฐเซ‡ เช›เซ‡: เช•เชจเซ‡เช•เซเชถเชจ เช–เซ‹เชฒเชตเชพ เช…เชจเซ‡ เชฌเช‚เชง เช•เชฐเชตเชพ, เชกเซ‡เชŸเชพเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเชตเซ€ เช…เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚. เช†เชฒเซ‡เช– เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ DNS เชตเชฟเชจเช‚เชคเซ€เช“, เช“เชชเชจเชฟเช‚เช— เช…เชจเซ‡ เช•เซเชฒเซ‹เชเชฟเช‚เช— เช•เชจเซ‡เช•เซเชถเชจ เช•เซเชฒ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชธเชฎเชฏเชจเชพ เชฒเช—เชญเช— 13% เชœเซ‡เชŸเชฒเซ‹ เชธเชฎเชฏ เชฒเซ‡ เช›เซ‡.

เชชเซ‚เชฐเซเชตเชงเชพเชฐเชฃเชพ: เชชเซเชฒเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชจเซ‡เช•เซเชถเชจเชจเซ‹ เชชเซเชจเชƒเช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฅเซ€ เชเช• เชœ HTTP เชตเชฟเชจเช‚เชคเซ€เชจเซ‹ เชธเชฎเชฏ เช˜เชŸเชพเชกเชตเซ‹ เชœเซ‹เชˆเช, เชœเซ‡ เช‰เชšเซเชš เชฅเซเชฐเซเชชเซเชŸ เช…เชจเซ‡ เช“เช›เซ€ เชตเชฟเชฒเช‚เชฌเชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช - เชชเซเชฐเชฏเซ‹เช—

เช…เชฎเซ‡ เชธเซเชฐเซ‹เชค เช•เซ‹เชก เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช, เชฆเชฐเซ‡เช• เชตเชฟเชจเช‚เชคเซ€ เชฎเชพเชŸเซ‡ Postgresql เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฃ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹. เชชเซเชฐเชฅเชฎ เชตเชฟเช•เชฒเซเชชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡ เชœเซ‹เชกเชพเชฃ เชชเซ‚เชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเซเชคเชฐเซ‡. เช† เชชเซเชฐเชฏเซ‹เช—เชฎเชพเช‚ เช…เชฎเซ‡ เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เชธเซ‡เชŸ เช•เชฐเซ€เช เช—เซ‹ เชฎเชพเชŸเซ‡ sql เชกเซเชฐเชพเช‡เชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชจเซ‡เช•เซเชถเชจ เชชเซ‚เชฒเชฟเช‚เช—:

db, err := sql.Open("postgres", dbConnectionString)
db.SetMaxOpenConns(8)

if err != nil {
   return nil, err
}

เช…เชฎเชฒ, เช…เชตเชฒเซ‹เช•เชจ, เชตเชฟเชถเซเชฒเซ‡เชทเชฃ

เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 1000 เชตเชฟเชจเช‚เชคเซ€เช“ เชธเชพเชฅเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชคเซ‡ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช•เซ‡ p99 เชจเซเช‚ เชฒเซ‡เชŸเชจเซเชธเซ€ เชฒเซ‡เชตเชฒ 60ms เชจเชพ SLO เชธเชพเชฅเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฅเชˆ เช—เชฏเซเช‚ เช›เซ‡!

เช•เชฟเช‚เชฎเชค เชถเซเช‚ เช›เซ‡?

เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 10000 เชตเชฟเชจเช‚เชคเซ€เช“ / เชธเชฐเซเชตเชฐ เชฆเซ€เช  1000 เชตเชฟเชจเช‚เชคเซ€เช“ = 10 เชธเชฐเซเชตเชฐเซเชธ + 1

เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เชตเชงเซ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ€เช!

เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 2000 เชตเชฟเชจเช‚เชคเซ€เช“

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชฒเซ‹เชกเชจเซ‡ เชฌเชฎเชฃเซเช‚ เช•เชฐเชตเซเช‚ เช เชœ เชตเชธเซเชคเซ เชฌเชคเชพเชตเซ‡ เช›เซ‡, เช‰เชชเชฒเชพ เชกเชพเชฌเชพ เช†เชฒเซ‡เช– เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 2000 เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเซ‡ เช›เซ‡, p100 60ms เช•เชฐเชคเชพเช‚ เช“เช›เซ€ เช›เซ‡, p99 SLO เชจเซ‡ เชธเช‚เชคเซเชทเซเชŸ เช•เชฐเซ‡ เช›เซ‡.

เช–เชฐเซเชšเชจเซ€ เชฆเซเชฐเชทเซเชŸเชฟเช:

เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 10000 เชตเชฟเชจเช‚เชคเซ€เช“ / เชธเชฐเซเชตเชฐ เชฆเซ€เช  2000 เชตเชฟเชจเช‚เชคเซ€เช“ = 5 เชธเชฐเซเชตเชฐเซเชธ + 1

เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 3000 เชตเชฟเชจเช‚เชคเซ€เช“

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เช…เชนเซ€เช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ 3000ms เช•เชฐเชคเชพเช‚ เช“เช›เซ€ p99 เชฒเซ‡เชŸเชจเซเชธเซ€ เชธเชพเชฅเซ‡ 60 เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. SLO เชจเซเช‚ เช‰เชฒเซเชฒเช‚เช˜เชจ เชฅเชคเซเช‚ เชจเชฅเซ€, เช…เชจเซ‡ เช•เชฟเช‚เชฎเชค เชจเซ€เชšเซ‡ เชฎเซเชœเชฌ เชธเซเชตเซ€เช•เชพเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 10000 เชตเชฟเชจเช‚เชคเซ€เช“ / เชธเชฐเซเชตเชฐ เชฆเซ€เช  3000 เชตเชฟเชจเช‚เชคเซ€เช“ = 4 เชธเชฐเซเชตเชฐ + 1 (เชฒเซ‡เช–เช•เซ‡ เชฐเชพเช‰เชจเซเชกเช…เชช เช•เชฐเซเชฏเซเช‚ เช›เซ‡, เช†เชถเชฐเซ‡ เช…เชจเซเชตเชพเชฆเช•)

เชšเชพเชฒเซ‹ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชจเซ‹ เชฌเซ€เชœเซ‹ เชฐเชพเช‰เชจเซเชก เช…เชœเชฎเชพเชตเซ€เช.

เชตเชฟเชถเซเชฒเซ‡เชทเชฃ - เชชเซ‚เชฐเซเชตเชงเชพเชฐเชฃเชพ

เช…เชฎเซ‡ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 3000 เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชฐ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชกเชฟเชฌเช— เช•เชฐเชตเชพเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชเช•เชคเซเชฐเชฟเชค เช…เชจเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ€เช เช›เซ€เช:

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชนเชœเซ เชชเชฃ 6% เชธเชฎเชฏ เชœเซ‹เชกเชพเชฃเซ‹ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช–เชฐเซเชšเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชชเซ‚เชฒ เชธเซเชฏเซ‹เชœเชฟเชค เช•เชฐเชตเชพเชฅเซ€ เชชเซเชฐเชฆเชฐเซเชถเชจเชฎเชพเช‚ เชธเซเชงเชพเชฐเซ‹ เชฅเชฏเซ‹ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเชฎเซ‡ เชนเชœเซ เชชเชฃ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชจเชตเชพ เชœเซ‹เชกเชพเชฃเซ‹ เชฌเชจเชพเชตเชตเชพ เชชเชฐ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เซ‡ เช›เซ‡.

เชชเซ‚เชฐเซเชตเชงเชพเชฐเชฃเชพ: เช•เชจเซ‡เช•เซเชถเชจเซเชธ, เชชเซ‚เชฒเชจเซ€ เชนเชพเชœเชฐเซ€ เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชนเชœเซ เชชเชฃ เช›เซ‹เชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชธเชพเชซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชชเซเชฒเชจเชพ เช•เชฆ เชชเชฐ เชฌเชพเช•เซ€ เช•เชจเซ‡เช•เซเชถเชจเซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ เชธเซ‡เชŸ เช•เชฐเชตเชพเชฅเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เชจเซ‡เช•เซเชถเชจ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เชœเซ‡ เชธเชฎเชฏ เชตเชฟเชคเชพเชตเซ‡ เช›เซ‡ เชคเซ‡ เช˜เชŸเชพเชกเซ€เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเชตเซ€ เชœเซ‹เชˆเช..

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช - เชชเซเชฐเชฏเซ‹เช—

เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‡ MaxIdleConns เชชเซ‚เชฒเชจเชพ เช•เชฆเชจเซ€ เชธเชฎเชพเชจ (เชชเชฃ เชตเชฐเซเชฃเชตเซ‡เชฒ เช…เชนเซ€เช‚):

db, err := sql.Open("postgres", dbConnectionString)
db.SetMaxOpenConns(8)
db.SetMaxIdleConns(8)
if err != nil {
   return nil, err
}

เช…เชฎเชฒ, เช…เชตเชฒเซ‹เช•เชจ, เชตเชฟเชถเซเชฒเซ‡เชทเชฃ

เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 3000 เชตเชฟเชจเช‚เชคเซ€เช“

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

p99 เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เช“เช›เชพ p60 เชธเชพเชฅเซ‡ 100ms เช•เชฐเชคเชพเช‚ เช“เช›เซเช‚ เช›เซ‡!

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชœเซเชฏเซ‹เชค เช—เซเชฐเชพเชซ เชคเชชเชพเชธเซ‹ เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชœเซ‹เชกเชพเชฃ เชนเชตเซ‡ เชงเซเชฏเชพเชจเชชเชพเชคเซเชฐ เชจเชฅเซ€! เชšเชพเชฒเซ‹ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ เชคเชชเชพเชธ เช•เชฐเซ€เช pg(*conn).query โ€” เช…เชนเซ€เช‚ เช•เชจเซ‡เช•เซเชถเชจ เชธเซเชฅเชพเชชเชฟเชค เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เชนเซ‹เชตเชพเชจเซเช‚ เชชเชฃ เช…เชฎเซ‡ เชจเซ‹เช‚เชงเซเชฏเซเช‚ เชจเชฅเซ€.

SRE: เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ. เช—เซ‹เชฎเชพเช‚ เชธเชฐเชณ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชชเชฆเซเชงเชคเชฟ

เชจเชฟเชทเซเช•เชฐเซเชท

เช—เซเชฐเชพเชนเช•เชจเซ€ เช…เชชเซ‡เช•เซเชทเชพเช“ เช…เชจเซ‡ เชฌเชฟเชจ-เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชชเซ‚เชฐเซ€ เชฅเชˆ เชฐเชนเซ€ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡. เช—เซเชฐเชพเชนเช•เชจเซ€ เช…เชชเซ‡เช•เซเชทเชพเช“ เชธเชพเชฅเซ‡ เช…เชตเชฒเซ‹เช•เชจเซ‹เชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเซ€เชจเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช•เซ‡ เชถเซเช‚ เชธเซเชตเซ€เช•เชพเชฐเซเชฏ เช›เซ‡ เช…เชจเซ‡ เชถเซเช‚ เชจเชฅเซ€. Go เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชฎเชพเช‚ เชฌเชจเซ‡เชฒเชพ เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เชธเชพเชงเชจเซ‹ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชจเซ‡ เชธเชฐเชณ เช…เชจเซ‡ เชธเซเชฒเชญ เชฌเชจเชพเชตเซ‡ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹