SRE: เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃเฅค เจ—เฉ‹ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจตเฉˆเฉฑเจฌ เจธเจฐเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจตเจฟเจงเฉ€

เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ…เจคเฉ‡ เจŸเจฟเจŠเจจเจฟเฉฐเจ— เจ—เจพเจนเจ•เจพเจ‚ เจฒเจˆ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ เจธเจพเจงเจจ เจนเฉˆเฅค

เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจŸเจฟเจŠเจจเจฟเฉฐเจ— เจชเฉเจฐเจฏเฉ‹เจ—เจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจ—เจฟเจ†เจจเจ• เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจ•เฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจตเจฟเฉฑเจš เจฐเฉเจ•เจพเจตเจŸเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจ‡เจน เจฒเฉ‡เจ– เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจ—เฉ‹ เจตเฉˆเจฌเจธเจฐเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ…เจคเฉ‡ เจŸเจฟเจŠเจจเจฟเฉฐเจ— เจฒเจˆ เจ‡เฉฑเจ• เจ†เจฎ เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ—เฉ‹ เจ‡เฉฑเจฅเฉ‡ เจตเจฟเจธเจผเฉ‡เจธเจผ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจงเฉ€เจ† เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจธ เจตเจฟเฉฑเจš เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจฟเฉฐเจ— เจŸเฉ‚เจฒ เจนเจจ pprof เจฎเจฟเจ†เจฐเฉ€ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเจฟเฉฑเจš.

SRE: เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃเฅค เจ—เฉ‹ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจตเฉˆเฉฑเจฌ เจธเจฐเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจตเจฟเจงเฉ€

เจฐเจฃเจจเฉ€เจคเฉ€

เจ†เจ‰ เจธเจพเจกเฉ‡ เจขเจพเจ‚เจšเจพเจ—เจค เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจธเฉฐเจ–เฉ‡เจช เจธเฉ‚เจšเฉ€ เจฌเจฃเจพเจˆเจเฅค เจ…เจธเฉ€เจ‚ เจ…เจจเฉเจญเจต เจœเจพเจ‚ เจ…เจจเฉเจฎเจพเจจ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ เจฌเจฆเจฒเจพเจ… เจ•เจฐเจจ เจฆเฉ€ เจฌเจœเจพเจ เจซเฉˆเจธเจฒเฉ‡ เจฒเฉˆเจฃ เจฒเจˆ เจ•เฉเจ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ‡เจน เจ•เจฐเจพเจ‚เจ—เฉ‡:

  • เจ…เจธเฉ€เจ‚ เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพ เจฆเฉ€เจ†เจ‚ เจนเฉฑเจฆเจพเจ‚ (เจฒเฉ‹เฉœเจพเจ‚) เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚;
  • เจ…เจธเฉ€เจ‚ เจธเจฟเจธเจŸเจฎ เจฒเจˆ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจฒเฉ‹เจก เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚;
  • เจ…เจธเฉ€เจ‚ เจŸเฉˆเจธเจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ (เจกเฉ‡เจŸเจพ เจฌเจฃเจพเจ“);
  • เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚;
  • เจ…เจธเฉ€เจ‚ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ - เจ•เฉ€ เจธเจพเจฐเฉ€เจ†เจ‚ เจฒเฉ‹เฉœเจพเจ‚ เจชเฉ‚เจฐเฉ€เจ†เจ‚ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ?
  • เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจตเจฟเจ—เจฟเจ†เจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฅเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ‡เฉฑเจ• เจชเจฐเจฟเจ•เจฒเจชเจจเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚;
  • เจ…เจธเฉ€เจ‚ เจ‡เจธ เจงเจพเจฐเจจเจพ เจจเฉ‚เฉฐ เจชเจฐเจ–เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจฐเจฏเฉ‹เจ— เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

SRE: เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃเฅค เจ—เฉ‹ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจตเฉˆเฉฑเจฌ เจธเจฐเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจตเจฟเจงเฉ€

เจธเจงเจพเจฐเจจ HTTP เจธเจฐเจตเจฐ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ

เจ‡เจธ เจฒเฉ‡เจ– เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ—เฉ‹เจฒเฉฐเจ— เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ‡ HTTP เจธเจฐเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡. เจ‡เจธ เจฒเฉ‡เจ– เจคเฉ‹เจ‚ เจธเจพเจฐเฉ‡ เจ•เฉ‹เจก เจฒเฉฑเจญเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ เจ‡เฉฑเจฅเฉ‡.

เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ‡เฉฑเจ• HTTP เจธเจฐเจตเจฐ เจนเฉˆ เจœเฉ‹ เจนเจฐเฉ‡เจ• เจฌเฉ‡เจจเจคเฉ€ เจฒเจˆ Postgresql เจจเฉ‚เฉฐ เจชเฉ‹เจฒ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ…เจคเฉ‡ เจธเจฟเจธเจŸเจฎ เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจคเจฐ เจ•เจฐเจจ เจ…เจคเฉ‡ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจชเฉเจฐเฉ‹เจฎเฉ€เจฅเฉ€เจ…เจธ, เจจเฉ‹เจก_เจเจ•เจธเจชเฉ‹เจฐเจŸเจฐ เจ…เจคเฉ‡ เจ—เฉเจฐเจพเจซเจพเจจเจพ เจนเฉˆเฅค

SRE: เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃเฅค เจ—เฉ‹ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจตเฉˆเฉฑเจฌ เจธเจฐเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจตเจฟเจงเฉ€

เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจฎเฉฐเจจเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจนเจฐเฉ€เจœเฉฑเจŸเจฒ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— (เจ…เจคเฉ‡ เจ—เจฃเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจฃ) เจฒเจˆ เจนเจฐเฉ‡เจ• เจธเฉ‡เจตเจพ เจ…เจคเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เฉ‡ เจคเฉˆเจจเจพเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ:

SRE: เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃเฅค เจ—เฉ‹ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจตเฉˆเฉฑเจฌ เจธเจฐเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจตเจฟเจงเฉ€

เจŸเฉ€เจšเจฟเจ†เจ‚ เจฆเฉ€ เจชเจฐเจฟเจญเจพเจธเจผเจพ

เจ‡เจธ เจชเฉœเจพเจ… 'เจคเฉ‡, เจ…เจธเฉ€เจ‚ เจŸเฉ€เจšเจพ เจคเฉˆเจ… เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจ•เฉ€ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚? เจ…เจธเฉ€เจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เจน เจ•เจฆเฉ‹เจ‚ เจ–เจคเจฎ เจนเฉ‹เจฃ เจฆเจพ เจธเจฎเจพเจ‚ เจนเฉˆ? เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ•เจฒเจชเจจเจพ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ—เจพเจนเจ• เจนเจจ เจ…เจคเฉ‡ เจธเจพเจกเฉ€ เจธเฉ‡เจตเจพ เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ 10 เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเฉ‡เจ—เฉ€เฅค

ะ’ เจ—เฉ‚เจ—เจฒ เจเจธเจ†เจฐเจˆ เจฌเฉเฉฑเจ• เจšเฉ‹เจฃ เจ…เจคเฉ‡ เจฎเจพเจกเจฒเจฟเฉฐเจ— เจฆเฉ‡ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจฌเจพเจฐเฉ‡ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจšเจฐเจšเจพ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆเฅค เจšเจฒเฉ‹ เจ‰เจนเฉ€ เจ•เจฐเฉ€เจ เจ…เจคเฉ‡ เจฎเจพเจกเจฒ เจฌเจฃเจพเจ‰:

  • เจฒเฉ‡เจŸเฉˆเจ‚เจธเฉ€: 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 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: เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃเฅค เจ—เฉ‹ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจตเฉˆเฉฑเจฌ เจธเจฐเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจตเจฟเจงเฉ€

เจชเจคเฉ‡ เจœเฉ‹ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฒเฉฑเจญเจฆเจพ เจนเฉˆ Postgresql เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเฉˆเฅค 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹ 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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹