SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เด•เตเดฒเดฏเดจเตเดฑเตเด•เดณเตเดŸเต† เดชเต†เตผเดซเต‹เดฎเตปเดธเต เด•เด‚เดชเตเดฒเดฏเตปเดธเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดถเด•เตเดคเดฎเดพเดฏ เด‰เดชเด•เดฐเดฃเดฎเดพเดฃเต เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเดตเตเด‚ เดŸเตเดฏเต‚เดฃเดฟเด‚เด—เตเด‚.

เดŸเตเดฏเต‚เดฃเดฟเด‚เด—เต เดชเดฐเต€เด•เตเดทเดฃเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดถเดพเดธเตเดคเตเดฐเต€เดฏ เดธเดฎเต€เดชเดจเด‚ เดชเตเดฐเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดฒเต† เดคเดŸเดธเตเดธเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เด’เดฐเต Go เดตเต†เดฌเตโ€Œเดธเต†เตผเดตเตผ เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเดคเตเดคเดฟเดจเตเด‚ เดŸเตเดฏเต‚เดฃเดฟเด‚เด—เดฟเดจเตเดฎเตเดณเตเดณ เด’เดฐเต เดชเตŠเดคเต เดธเดฎเต€เดชเดจเดคเตเดคเต† เดˆ เดฒเต‡เด–เดจเด‚ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเตเดฐเตŠเดซเตˆเดฒเดฟเด‚เด—เต เดŸเต‚เดณเตเด•เตพ เด‰เดณเตเดณเดคเดฟเดจเดพเตฝ Go เดŽเดจเตเดจเดคเต เด‡เดตเดฟเดŸเต† เดตเดณเดฐเต† เดจเดฒเตเดฒเดคเดพเดฃเต pprof เดธเดพเดงเดพเดฐเดฃ เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดฟเตฝ.

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เดคเดจเตเดคเตเดฐเด‚

เดจเดฎเตเดฎเตเดŸเต† เด˜เดŸเดจเดพเดชเดฐเดฎเดพเดฏ เดตเดฟเดถเด•เดฒเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดธเด‚เด—เตเดฐเดน เดฒเดฟเดธเตเดฑเตเดฑเต เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚. เด…เดตเดฌเต‹เดงเดคเตเดคเต†เดฏเต‹ เดŠเดนเดคเตเดคเต†เดฏเต‹ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดตเดฐเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดชเด•เดฐเด‚ เดคเต€เดฐเตเดฎเดพเดจเด™เตเด™เตพ เดŽเดŸเตเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด•เตเดฑเดšเตเดšเต เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เด‡เดคเต เดšเต†เดฏเตเดฏเตเด‚:

  • เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เด…เดคเดฟเดฐเตเด•เตพ เดžเด™เตเด™เตพ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเต (เด†เดตเดถเตเดฏเด™เตเด™เตพ);
  • เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเดพเดฏเตเดณเตเดณ เด‡เดŸเดชเดพเดŸเต เดฒเต‹เดกเต เดžเด™เตเด™เตพ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจเต;
  • เดžเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดจ เดจเดŸเดคเตเดคเตเดจเตเดจเต (เดกเดพเดฑเตเดฑ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•);
  • เดžเด™เตเด™เตพ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต;
  • เดžเด™เตเด™เตพ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต - เดŽเดฒเตเดฒเดพ เด†เดตเดถเตเดฏเด™เตเด™เดณเตเด‚ เดจเดฟเดฑเดตเต‡เดฑเตเดฑเตเดจเตเดจเตเดฃเตเดŸเต‹?
  • เดžเด™เตเด™เตพ เด…เดคเต เดถเดพเดธเตเดคเตเดฐเต€เดฏเดฎเดพเดฏเดฟ เดธเตเดฅเดพเดชเดฟเดšเตเดšเต, เด’เดฐเต เดธเดฟเดฆเตเดงเดพเดจเตเดคเด‚ เด‰เดฃเตเดŸเดพเด•เตเด•เตเด•;
  • เดˆ เดธเดฟเดฆเตเดงเดพเดจเตเดคเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด’เดฐเต เดชเดฐเต€เด•เตเดทเดฃเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจเต.

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เดฒเดณเดฟเดคเดฎเดพเดฏ HTTP เดธเต†เตผเดตเตผ เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเตผ

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ Golang-เดฒเต† เด’เดฐเต เดšเต†เดฑเดฟเดฏ HTTP เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เด•เต‹เดกเตเด•เดณเตเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ เด‡เดตเดฟเดŸเต†.

เด“เดฐเต‹ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเด•เตเด•เตเด‚ Postgresql เดตเต‹เดŸเตเดŸเต†เดŸเตเดชเตเดชเต เดจเดŸเดคเตเดคเตเดจเตเดจ เด’เดฐเต HTTP เดธเต†เตผเดตเดฑเดพเดฃเต เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป. เด•เต‚เดŸเดพเดคเต†, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด‚ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดฎเต†เดŸเตเดฐเดฟเด•เตเด•เตเด•เดณเตเด‚ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ Prometheus, node_exporter, Grafana เดŽเดจเตเดจเดฟเดตเดฏเตเดฃเตเดŸเต.

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดคเดฟเดฐเดถเตเดšเต€เดจ เดธเตเด•เต†เดฏเดฟเดฒเดฟเด‚เด—เดฟเดจเดพเดฏเดฟ (เด•เดฃเด•เตเด•เตเด•เต‚เดŸเตเดŸเดฒเตเด•เตพ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚) เด“เดฐเต‹ เดธเต‡เดตเดจเดตเตเด‚ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด‚ เด’เดฐเตเดฎเดฟเดšเตเดšเต เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดžเด™เตเด™เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเดจเตเดจเต:

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เดฒเด•เตเดทเตเดฏเด™เตเด™เตพ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเดจเตเดจเต

เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ เดฒเด•เตเดทเตเดฏเด‚ เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดคเดพเดฃเต เดจเดฎเตเดฎเตพ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเต? เด…เดคเต เด…เดตเดธเดพเดจเดฟเด•เตเด•เดพเตป เดธเดฎเดฏเดฎเดพเดฏเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดŽเด™เตเด™เดจเต† เด…เดฑเดฟเดฏเดพเด‚? เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพเด•เตเด•เต เด•เตเดฒเดฏเดจเตเดฑเตเด•เดณเตเดฃเตเดŸเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เดณเตเดŸเต† เดธเต‡เดตเดจเด‚ เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 10 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดฎเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เตเด‚.

ะ’ Google SRE เดฌเตเด•เตเด•เต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดฒเดฟเดจเตเดฑเต†เดฏเตเด‚ เดฎเต‹เดกเดฒเดฟเด‚เด—เดฟเดจเตเดฑเต†เดฏเตเด‚ เดฐเต€เดคเดฟเด•เตพ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดšเตผเดšเตเดšเดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เด‡เดคเต เดšเต†เดฏเตเดคเต เดฎเต‹เดกเดฒเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเด‚:

  • เด•เดพเดฒเดคเดพเดฎเดธเด‚: 99% เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเตเด‚ 60 เดฎเดฟเดฒเตเดฒเดฟเดฎเต€เดฑเตเดฑเดฑเดฟเตฝ เดคเดพเดดเต†เดฏเตเดณเตเดณ เดธเดฎเดฏเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฃเด‚;
  • เดšเต†เดฒเดตเต: เดจเตเดฏเดพเดฏเดฎเดพเดฏเตเด‚ เดธเดพเดงเตเดฏเดฎเดพเดฃเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด•เดฐเตเดคเตเดจเตเดจ เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดž เดคเตเด• เดธเต‡เดตเดจเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฃเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เดคเตเดฐเต‚เดชเตเดŸเตเดŸเต เดชเดฐเดฎเดพเดตเดงเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเต;
  • เด•เดชเตเดชเดพเดธเดฟเดฑเตเดฑเดฟ เดชเตเดฒเดพเดจเดฟเด‚เด—เต: เดฎเตŠเดคเตเดคเดคเตเดคเดฟเดฒเตเดณเตเดณ เดธเตเด•เต†เดฏเดฟเดฒเดฟเด‚เด—เต เดซเด‚เด—เตโ€Œเดทเดฃเดพเดฒเดฟเดฑเตเดฑเดฟ เด‰เตพเดชเตเดชเต†เดŸเต†, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดŽเดคเตเดฐ เดธเดจเตเดฆเตผเดญเด™เตเด™เตพ เดฑเตบ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เดชเตเดฐเดพเดฐเด‚เดญ เดฒเต‹เดกเตเด‚ เดชเตเดฐเตŠเดตเดฟเดทเดจเดฟเด‚เด—เต เด†เดตเดถเตเดฏเด•เดคเด•เดณเตเด‚ เดจเดฟเดฑเดตเต‡เดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเต เดŽเดคเตเดฐ เดธเดจเตเดฆเตผเดญเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต†เดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเด•เดฏเตเด‚ เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เด†เดตเตผเดคเตเดคเดจเด‚ 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

เดจเดฟเดฐเต€เด•เตเดทเดฃเด‚

เดฑเตบเดŸเตˆเดฎเดฟเตฝ เด‡เดŸเดชเดพเดŸเต เดฒเต‹เดกเต เดฌเดพเดงเด•เดฎเดพเด•เตเด‚. เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป (เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚, เดชเตเดฐเดคเดฟเด•เดฐเดฃ เดฒเต‡เดฑเตเดฑเตปเดธเดฟ), เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด‚ (เดฎเต†เดฎเตเดฎเดฑเดฟ, เดธเดฟเดชเดฟเดฏเต, เดเด’เดชเดฟเดŽเดธเต) เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เดŽเดจเตเดจเดฟเดตเดฏเตโ€Œเด•เตเด•เต เดชเตเดฑเดฎเต‡, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเตŠเดซเตˆเดฒเดฟเด‚เด—เต เด…เดคเดฟเดจเต เดŽเดตเดฟเดŸเต†เดฏเดพเดฃเต เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เดณเตเดณเตเดณเดคเต†เดจเตเดจเตเด‚ เดธเดฟเดชเดฟเดฏเต เดธเดฎเดฏเด‚ เดŽเด™เตเด™เดจเต† เดšเต†เดฒเดตเดดเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเตเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚.

เดชเตเดฐเตŠเดซเตˆเดฒเดฟเด‚เด—เต

เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดธเดฟเดชเดฟเดฏเต เดธเดฎเดฏเด‚ เดŽเดตเดฟเดŸเต‡เด•เตเด•เดพเดฃเต เดชเต‹เด•เตเดจเตเดจเดคเต†เดจเตเดจเต เด•เดพเดฃเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดคเดฐเด‚ เด…เดณเดตเต†เดŸเตเดชเตเดชเดพเดฃเต เดชเตเดฐเตŠเดซเตˆเดฒเดฟเด‚เด—เต. เดชเตเดฐเต‹เดธเดธเตเดธเตผ เดธเดฎเดฏเด‚ เดŽเดตเดฟเดŸเต†, เดŽเดคเตเดฐเดฎเดพเดคเตเดฐเด‚ เดšเต†เดฒเดตเดดเดฟเดšเตเดšเตเดตเต†เดจเตเดจเต เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเตป เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต:

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เดชเดพเดดเดพเดฏ เดธเดฟเดชเดฟเดฏเต เดธเดฎเดฏเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เด…เดจเดพเดตเดถเตเดฏ เดœเต‹เดฒเดฟเด•เตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เด‰เตพเด•เตเด•เดพเดดเตเดš เดจเต‡เดŸเตเดจเตเดจเดคเดฟเดจเต เดตเดฟเดถเด•เดฒเดจ เดธเดฎเดฏเดคเตเดคเต เดˆ เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. Go (pprof) เดจเต เดชเตเดฐเตŠเดซเตˆเดฒเตเด•เตพ เดœเดจเดฑเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด’เดฐเต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดŸเต‚เดณเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดตเดฏเต† เดซเตเดฒเต‡เด‚ เด—เตเดฐเดพเดซเตเด•เดณเดพเดฏเดฟ เดฆเตƒเดถเตเดฏเดตเตฝเด•เตเด•เดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚. เด…เดตเดฏเตเดŸเต† เด‰เดชเดฏเต‹เด—เดคเตเดคเต†เดฏเตเด‚ เดธเดœเตเดœเต€เด•เดฐเดฃ เด—เตˆเดกเดฟเดจเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเต เดžเดพเตป เดชเดฟเดจเตเดจเต€เดŸเต เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚.

เดจเดฟเตผเดตเตเดตเดนเดฃเด‚, เดจเดฟเดฐเต€เด•เตเดทเดฃเด‚, เดตเดฟเดถเด•เดฒเดจเด‚.

เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดชเดฐเต€เด•เตเดทเดฃเด‚ เดจเดŸเดคเตเดคเดพเด‚. เดชเตเดฐเด•เดŸเดจเดคเตเดคเดฟเตฝ เดคเตƒเดชเตเดคเดฐเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เดžเด™เตเด™เตพ เดชเตเดฐเด•เดŸเดจเด‚ เดจเดŸเดคเตเดคเตเด•เดฏเตเด‚ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เด†เดฆเตเดฏ เดจเดฟเดฐเต€เด•เตเดทเดฃเด™เตเด™เดณเตเดŸเต† เดซเดฒเด™เตเด™เตพ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด…เดคเต เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดจเดฎเตเด•เตเด•เต เดเด•เดชเด•เตเดทเต€เดฏเดฎเดพเดฏเดฟ เด•เตเดฑเดžเตเดž เดฒเต‹เดกเต เดฎเต‚เดฒเตเดฏเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเด‚. เด“เดฐเต‹ เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ เด˜เดŸเตเดŸเดคเตเดคเดฟเดฒเตเด‚ เดžเด™เตเด™เตพ เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เดธเตเด•เต†เดฏเดฟเดฒเดฟเด‚เด—เต เด˜เดŸเด•เด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฒเต‹เดกเต เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚, เดšเดฟเดฒ เดตเตเดฏเดคเตเดฏเดพเดธเด™เตเด™เดณเต‹เดŸเต† เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต. เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดš เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เด“เดฐเต‹ เดฒเต‹เดกเต เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดฑเดฃเตเดฃเตเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเต: make load-test LOAD_TEST_RATE=X.

เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 50 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เดฎเตเด•เดณเดฟเดฒเต† เดฐเดฃเตเดŸเต เด—เตเดฐเดพเดซเตเด•เตพ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•. เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 50 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดพเดฏเดฟ เดฎเตเด•เดณเดฟเตฝ เด‡เดŸเดคเต เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต (เด…เดคเต เด•เดฐเตเดคเตเดจเตเดจเต) เดฎเตเด•เดณเดฟเตฝ เดตเดฒเดคเต เด“เดฐเต‹ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดŸเต†เดฏเตเด‚ เดฆเตˆเตผเด˜เตเดฏเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต. เดฐเดฃเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเด‚ เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเด•เดŸเดจ เดชเดฐเดฟเดงเดฟเด•เตเด•เตเดณเตเดณเดฟเดฒเดพเดฃเต‹ เด…เดฒเตเดฒเดฏเต‹ เดŽเดจเตเดจเต เดจเต‹เด•เตเด•เดพเดจเตเด‚ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต. เด—เตเดฐเดพเดซเดฟเตฝ เดšเตเดตเดจเตเดจ เดตเดฐ HTTP เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดฒเต‡เดฑเตเดฑเตปเดธเดฟ 60ms-เตฝ SLO เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต. เดžเด™เตเด™เดณเตเดŸเต† เดชเดฐเดฎเดพเดตเดงเดฟ เดชเตเดฐเดคเดฟเด•เดฐเดฃ เดธเดฎเดฏเดคเตเดคเดฟเดจเต เดžเด™เตเด™เตพ เดตเดณเดฐเต† เดคเดพเดดเต†เดฏเดพเดฃเต†เดจเตเดจเต เดฒเตˆเตป เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต.

เดšเต†เดฒเดตเต เดตเดถเด‚ เดจเต‹เด•เตเด•เดพเด‚:

เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 10000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ / เด’เดฐเต เดธเต†เตผเดตเดฑเดฟเดจเต 50 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ = 200 เดธเต†เตผเดตเดฑเตเด•เตพ + 1

เดˆ เด•เดฃเด•เตเด•เต เด‡เดจเดฟเดฏเตเด‚ เดจเดฎเตเด•เตเด•เต เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเด‚.

เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 500 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ

เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 500 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เด•เต‚เดŸเตเดคเตฝ เดฐเดธเด•เดฐเดฎเดพเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดธเด‚เดญเดตเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเต:

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เดตเต€เดฃเตเดŸเตเด‚, เดฎเตเด•เดณเดฟเตฝ เด‡เดŸเดคเต เด—เตเดฐเดพเดซเดฟเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดพเดงเดพเดฐเดฃ เดฒเต‹เดกเต เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเต เด•เดพเดฃเดพเด‚. เด‡เดคเต เด…เด™เตเด™เดจเต†เดฏเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดธเต†เตผเดตเดฑเดฟเตฝ เด’เดฐเต เดชเตเดฐเดถเตเดจเดฎเตเดฃเตเดŸเต. เดชเตเดฐเดคเดฟเด•เดฐเดฃ เดฒเต‡เดฑเตเดฑเตปเดธเดฟ เด—เตเดฐเดพเดซเต เดฎเตเด•เดณเดฟเตฝ เดตเดฒเดคเตเดตเดถเดคเตเดคเต เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 500 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ 25-40 เดฎเดฟ.เดŽเดธเต เดชเตเดฐเดคเดฟเด•เดฐเดฃ เด•เดพเดฒเดคเดพเดฎเดธเดคเตเดคเดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต. เดฎเตเด•เดณเดฟเตฝ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดค 99ms SLO-เดฏเดฟเดฒเต‡เด•เตเด•เต 60-เดพเดฎเดคเตเดคเต† เดชเต†เตผเดธเดจเตเดฑเตˆเตฝ เด‡เดชเตเดชเต‹เดดเตเด‚ เดจเดจเตเดจเดพเดฏเดฟ เดฏเต‹เดœเดฟเด•เตเด•เตเดจเตเดจเต.

เดšเต†เดฒเดตเดฟเดจเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ:

เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 10000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ / เด’เดฐเต เดธเต†เตผเดตเดฑเดฟเดจเต 500 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ = 20 เดธเต†เตผเดตเดฑเตเด•เตพ + 1

เดŽเดฒเตเดฒเดพเด‚ เด‡เดจเดฟเดฏเตเด‚ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเด‚.

เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 1000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เดฎเดฟเด•เดšเตเดš เดฒเต‹เดžเตเดšเต! เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 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: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเดตเดฟเดŸเต†, เดŽเดคเตเดฐเดฎเดพเดคเตเดฐเด‚ CPU เดธเดฎเดฏเด‚ เดšเต†เดฒเดตเดดเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด—เตเดฐเดพเดซเต เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต. เดตเดฟเดตเดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดฌเตเดฐเดฃเตเดŸเตป เด—เตเดฐเต†เด—เต:

X เด…เด•เตเดทเด‚ เดŽเดจเตเดจเดคเต เดธเตเดฑเตเดฑเดพเด•เตเด•เต เดชเตเดฐเตŠเดซเตˆเตฝ เดชเต‹เดชเตเดชเตเดฒเต‡เดทเตป เด†เดฃเต, เด…เด•เตเดทเดฐเดฎเดพเดฒเดพเด•เตเดฐเดฎเดคเตเดคเดฟเตฝ เด…เดŸเตเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต (เด‡เดคเต เดธเดฎเดฏเดฎเดฒเตเดฒ), Y เด…เด•เตเดทเด‚ เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเดจเตเดฑเต† เด†เดดเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต, [เดฎเตเด•เดณเดฟเตฝ] เดชเต‚เดœเตเดฏเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเดฃเตเดฃเตเดจเตเดจเต. เด“เดฐเต‹ เดฆเต€เตผเด˜เดšเดคเตเดฐเดตเตเด‚ เด’เดฐเต เดธเตเดฑเตเดฑเดพเด•เตเด•เต เดซเตเดฐเต†เดฏเดฟเดฎเดพเดฃเต. เดตเดฟเดถเดพเดฒเดฎเดพเดฏ เดซเตเดฐเต†เดฏเดฟเด‚, เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เด…เดคเต เดธเตเดฑเตเดฑเดพเด•เตเด•เตเด•เดณเดฟเตฝ เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจเต. เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณเดคเต เดธเดฟเดชเดฟเดฏเตเดตเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดคเดพเดดเต†เดฏเตเดณเตเดณเดต เดšเตˆเตฝเดกเต เด˜เดŸเด•เด™เตเด™เดณเดพเดฃเต. เดจเดฟเดฑเด™เตเด™เตพ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด’เดจเตเดจเตเด‚ เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดซเตเดฐเต†เดฏเดฟเดฎเตเด•เตพ เดตเต‡เตผเดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดพเตป เด•เตเดฐเดฎเดฐเดนเดฟเดคเดฎเดพเดฏเดฟ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต.

เดตเดฟเดถเด•เดฒเดจเด‚ - เด…เดจเตเดฎเดพเดจเด‚

เดŸเตเดฏเต‚เดฃเดฟเด‚เด—เดฟเดจเดพเดฏเดฟ, เดชเดพเดดเดพเดฏ เดธเดฟเดชเดฟเดฏเต เดธเดฎเดฏเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเตเดณเตเดณ เดถเตเดฐเดฎเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เตเด‚. เด‰เดชเดฏเต‹เด—เดถเต‚เดจเตเดฏเดฎเดพเดฏ เดšเต†เดฒเดตเตเด•เดณเตเดŸเต† เดเดฑเตเดฑเดตเตเด‚ เดตเดฒเดฟเดฏ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดžเด™เตเด™เตพ เด…เดจเตเดตเต‡เดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดต เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดถเดฐเดฟ, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด…เดคเดฟเดจเตเดฑเต† เดชเตเดฐเต‹เดธเดธเตเดธเตผ เดธเดฎเดฏเด‚ เดŽเดตเดฟเดŸเต†เดฏเดพเดฃเต เดšเต†เดฒเดตเดดเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดชเตเดฐเตŠเดซเตˆเดฒเดฟเด‚เด—เต เดตเดณเดฐเต† เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดตเต†เดณเดฟเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต, เดจเดฟเด™เตเด™เตพ เด‡เดคเต เดชเดฒเดคเดตเดฃ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดฟ เดตเดจเตเดจเต‡เด•เตเด•เดพเด‚, เด•เต‚เดŸเดพเดคเต† เดจเดฟเด™เตเด™เตพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเต‹เดดเตเดธเต เด•เต‹เดกเต เดฎเดพเดฑเตเดฑเตเด•เดฏเตเด‚ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดตเต€เดฃเตเดŸเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดฐเด•เดŸเดจเด‚ เดฒเด•เตเดทเตเดฏเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด…เดŸเตเด•เตเด•เตเดจเตเดจเดคเต เด•เดพเดฃเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดฌเตเดฐเดฃเตเดŸเตป เด—เตเดฐเต†เด—เดฟเดจเตเดฑเต† เดถเตเดชเดพเตผเดถเด•เตพ เดชเดฟเดจเตเดคเตเดŸเตผเดจเตเดจเต, เดžเด™เตเด™เตพ เดšเดพเตผเดŸเตเดŸเต เดฎเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดคเดพเดดเต‡เด•เตเด•เต เดตเดพเดฏเดฟเด•เตเด•เตเด‚. เด“เดฐเต‹ เดตเดฐเดฟเดฏเตเด‚ เด’เดฐเต เดธเตเดฑเตเดฑเดพเด•เตเด•เต เดซเตเดฐเต†เดฏเดฟเด‚ (เดซเด‚เด—เตเดทเตป เด•เต‹เตพ) เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด†เดฆเตเดฏ เดตเดฐเดฟ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเตเดฐเดตเต‡เดถเดจ เดชเต‹เดฏเดฟเดจเตเดฑเดพเดฃเต, เดฎเดฑเตเดฑเต†เดฒเตเดฒเดพ เด•เต‹เดณเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดฐเด•เตเดทเด•เตผเดคเตเดคเดพเดตเต (เดฎเดฑเตเดฑเตŠเดฐเต เดฐเต€เดคเดฟเดฏเดฟเตฝ เดชเดฑเดžเตเดžเดพเตฝ, เดฎเดฑเตเดฑเต†เดฒเตเดฒเดพ เด•เต‹เดณเตเด•เตพเด•เตเด•เตเด‚ เด…เดคเต เด…เดตเดฐเตเดŸเต† เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเตฝ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚). เด…เดŸเตเดคเตเดค เดตเดฐเดฟ เด‡เดคเดฟเดจเด•เด‚ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเต:

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เด—เตเดฐเดพเดซเดฟเดฒเต† เด’เดฐเต เดซเด‚เด—เตโ€Œเดทเดจเตเดฑเต† เดชเต‡เดฐเดฟเตฝ เดจเดฟเด™เตเด™เตพ เด•เดดเตโ€Œเดธเตผ เดนเต‹เดตเตผ เดšเต†เดฏเตโ€Œเดคเดพเตฝ, เดกเต€เดฌเด—เตเด—เดฟเด‚เด—เต เดธเดฎเดฏเดคเตเดคเต เด…เดคเต เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเดฒเตเดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจ เด†เด•เต† เดธเดฎเดฏเด‚ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚. HTTPServe เดซเด‚เด—เตโ€Œเดทเตป 65% เดธเดฎเดฏเดตเตเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดฎเดฑเตเดฑเต เดฑเตบเดŸเตˆเด‚ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ runtime.mcall, mstart ะธ gc, เดฌเดพเด•เตเด•เดฟ เดธเดฎเดฏเด‚ เดŽเดŸเตเดคเตเดคเต. เดฐเดธเด•เดฐเดฎเดพเดฏ เดตเดธเตเดคเตเดค: เดฎเตŠเดคเตเดคเด‚ เดธเดฎเดฏเดคเตเดคเดฟเดจเตเดฑเต† 5% DNS เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดšเต†เดฒเดตเดดเดฟเด•เตเด•เตเดจเตเดจเต:

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดคเดฟเดฐเดฏเตเดจเตเดจ เดตเดฟเดฒเดพเดธเด™เตเด™เตพ Postgresql-เดจเตเดฑเต‡เดคเดพเดฃเต. เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด• FindByAge:

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เดฐเดธเด•เดฐเดฎเต†เดจเตเดจเต เดชเดฑเดฏเดŸเตเดŸเต†, เดคเดคเตเดคเตเดตเดคเตเดคเดฟเตฝ, เด•เดพเดฒเดคเดพเดฎเดธเด‚ เดšเต‡เตผเด•เตเด•เตเดจเตเดจ เดฎเต‚เดจเตเดจเต เดชเตเดฐเดงเดพเดจ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเดฃเตเดŸเต†เดจเตเดจเต เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต: เด•เดฃเด•เตเดทเดจเตเด•เตพ เดคเตเดฑเด•เตเด•เตเด•เดฏเตเด‚ เด…เดŸเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•, เดกเดพเดฑเตเดฑ เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เตเด•, เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเด•. DNS เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ, เด•เดฃเด•เตเดทเดจเตเด•เตพ เดคเตเดฑเด•เตเด•เตเดจเตเดจเดคเตเด‚ เด…เดŸเดฏเตเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดฎเตŠเดคเตเดคเด‚ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดทเตป เดธเดฎเดฏเดคเตเดคเดฟเดจเตเดฑเต† 13% เดŽเดŸเตเด•เตเด•เตเดฎเต†เดจเตเดจเต เด—เตเดฐเดพเดซเต เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดจเตเดฎเดพเดจเด‚: เดชเต‚เดณเดฟเด‚เด—เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดฃเด•เตเดทเดจเตเด•เตพ เดตเต€เดฃเตเดŸเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เด’เดฐเตŠเดฑเตเดฑ HTTP เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดŸเต† เดธเดฎเดฏเด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เด‰เดฏเตผเดจเตเดจ เดคเตเดฐเต‚เดชเตเดŸเตเดŸเตเด‚ เด•เตเดฑเดžเตเดž เดฒเต‡เดฑเตเดฑเตปเดธเดฟเดฏเตเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต - เดชเดฐเต€เด•เตเดทเดฃเด‚

เดžเด™เตเด™เตพ เดธเต‹เดดเตเดธเต เด•เต‹เดกเต เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด“เดฐเต‹ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเด•เตเด•เตเด‚ Postgresql-เดฒเต‡เด•เตเด•เตเดณเตเดณ เด•เดฃเด•เตเดทเตป เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•. เด†เดฆเตเดฏ เด“เดชเตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด•เดฃเด•เตเดทเตป เด•เตเดณเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดคเดฒเดคเตเดคเดฟเตฝ. เดˆ เดชเดฐเต€เด•เตเดทเดฃเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ เดจเดฎเตเด•เตเด•เต เด…เดคเต เดธเดœเตเดœเดฎเดพเด•เตเด•เดพเด‚ เดชเต‹เด•เดพเตป เดตเต‡เดฃเตเดŸเดฟ sql เดกเตเดฐเตˆเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดฃเด•เตเดทเตป เดชเต‚เดณเดฟเด‚เด—เต:

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

if err != nil {
   return nil, err
}

เดจเดฟเตผเดตเตเดตเดนเดฃเด‚, เดจเดฟเดฐเต€เด•เตเดทเดฃเด‚, เดตเดฟเดถเด•เดฒเดจเด‚

เด’เดฐเต เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 1000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเต‹เดŸเต† เดŸเต†เดธเตเดฑเตเดฑเต เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚, 99ms-เดจเตเดฑเต† SLO เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต p60-เดจเตเดฑเต† เดฒเต‡เดฑเตเดฑเตปเดธเดฟ เดฒเต†เดตเดฒเตเด•เตพ เดธเดพเดงเดพเดฐเดฃ เดจเดฟเดฒเดฏเดฟเดฒเดพเดฏเดคเดพเดฏเดฟ เดตเตเดฏเด•เตเดคเดฎเดพเดฃเต!

เดŽเดจเตเดคเดพเดฃเต เดšเต†เดฒเดตเต?

เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 10000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ / เด’เดฐเต เดธเต†เตผเดตเดฑเดฟเดจเต 1000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ = 10 เดธเต†เตผเดตเดฑเตเด•เตพ + 1

เดจเดฎเตเด•เตเด•เต เด‡เดคเต เด•เต‚เดŸเตเดคเตฝ เดจเดจเตเดจเดพเดฏเดฟ เดšเต†เดฏเตเดฏเดพเด‚!

เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 2000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เดฒเต‹เดกเต เด‡เดฐเดŸเตเดŸเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเดคเต เด’เดฐเต‡ เด•เดพเดฐเตเดฏเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 2000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดพเดฏเดฟ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต, p100 60ms-เตฝ เดคเดพเดดเต†เดฏเดพเดฃเต, p99 SLO-เดฏเต† เดคเตƒเดชเตเดคเดฟเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต.

เดšเต†เดฒเดตเดฟเดจเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ:

เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 10000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ / เด’เดฐเต เดธเต†เตผเดตเดฑเดฟเดจเต 2000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ = 5 เดธเต†เตผเดตเดฑเตเด•เตพ + 1

เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 3000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เด‡เดตเดฟเดŸเต† เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต 3000ms-เตฝ เดคเดพเดดเต†เดฏเตเดณเตเดณ p99 เดฒเต‡เดฑเตเดฑเตปเดธเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต 60 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. SLO เดฒเด‚เด˜เดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒ, เดšเต†เดฒเดตเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต:

เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 10000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ / เด“เดฐเต‹ เดธเต†เตผเดตเดฑเดฟเดจเตเด‚ 3000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ = 4 เดธเต†เตผเดตเดฑเตเด•เตพ + 1 (เดฐเดšเดฏเดฟเดคเดพเดตเต เดฑเต—เดฃเตเดŸเต เด…เดชเตเดชเต เดšเต†เดฏเตเดคเต, เดเด•เดฆเต‡เดถเด‚. เดตเดฟเดตเตผเดคเตเดคเด•เตป)

เดจเดฎเตเด•เตเด•เต เดฎเดฑเตเดฑเตŠเดฐเต เดตเดฟเดถเด•เดฒเดจเด‚ เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเด‚.

เดตเดฟเดถเด•เดฒเดจเด‚ - เด…เดจเตเดฎเดพเดจเด‚

เด’เดฐเต เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 3000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเดฟเตฝ เดžเด™เตเด™เตพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดกเต€เดฌเด—เตเด—เดฟเด‚เด—เต เดซเดฒเด™เตเด™เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต:

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เด‡เดชเตเดชเต‹เดดเตเด‚ 6% เดธเดฎเดฏเดตเตเด‚ เด•เดฃเด•เตเดทเดจเตเด•เตพ เดธเตเดฅเดพเดชเดฟเด•เตเด•เดพเตป เดšเต†เดฒเดตเดดเดฟเด•เตเด•เตเดจเตเดจเต. เดชเต‚เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเตเดฐเด•เดŸเดจเด‚ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เดชเด•เตเดทเต‡ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เดชเตเดคเดฟเดฏ เด•เดฃเด•เตเดทเดจเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดคเตเดŸเตผเดจเตเดจเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚.

เด…เดจเตเดฎเดพเดจเด‚: เด•เดฃเด•เตเดทเดจเตเด•เตพ, เด’เดฐเต เดชเต‚เดณเดฟเดจเตเดฑเต† เดธเดพเดจเตเดจเดฟเดงเตเดฏเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดŸเตเดŸเตเด‚, เด‡เดชเตเดชเต‹เดดเตเด‚ เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด•เดฏเตเด‚ เดตเตƒเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต เด…เดต เดชเตเดจเดƒเดธเดœเตเดœเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดชเต‚เตพ เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเตฝ เดคเต€เตผเดชเตเดชเดพเด•เตเด•เดพเดคเตเดค เด•เดฃเด•เตเดทเดจเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต, เด’เดฐเต เด•เดฃเด•เตเดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดšเต†เดฒเดตเดดเดฟเด•เตเด•เตเดจเตเดจ เดธเดฎเดฏเด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดฒเต‡เดฑเตเดฑเตปเดธเดฟเดฏเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเด‚.

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต - เดชเดฐเต€เด•เตเดทเดฃเด‚

เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต MaxIdleConns เด•เตเดณเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเดฃเต (เด‡เดคเตเด‚ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เด‡เดตเดฟเดŸเต†):

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

เดจเดฟเตผเดตเตเดตเดนเดฃเด‚, เดจเดฟเดฐเต€เด•เตเดทเดฃเด‚, เดตเดฟเดถเด•เดฒเดจเด‚

เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 3000 เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

p99 60ms-เตฝ เด•เตเดฑเดตเดพเดฃเต, p100-เตฝ เด•เดพเดฐเตเดฏเดฎเดพเดฏเดฟ เด•เตเดฑเดตเต!

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เดซเตเดฒเต‡เด‚ เด—เตเดฐเดพเดซเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเต, เด•เดฃเด•เตเดทเตป เด‡เดจเดฟ เดถเตเดฐเดฆเตเดงเดฏเดฟเตฝเดชเตเดชเต†เดŸเดฟเดฒเตเดฒเต†เดจเตเดจเต เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต! เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚ pg(*conn).query - เด‡เดตเดฟเดŸเต† เด•เดฃเด•เตเดทเตป เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดžเด™เตเด™เตพ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ.

SRE: เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚. Go-เดฏเดฟเดฒเต† เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟ

เดคเต€เดฐเตเดฎเดพเดจเด‚

เด‰เดชเดญเต‹เด•เตเดคเตƒ เดชเตเดฐเดคเต€เด•เตเดทเด•เดณเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเดชเดฐเดฎเดฒเตเดฒเดพเดคเตเดค เด†เดตเดถเตเดฏเด•เดคเด•เดณเตเด‚ เดจเดฟเดฑเดตเต‡เดฑเตเดฑเดชเตเดชเต†เดŸเตเดจเตเดจเตเดฃเตเดŸเต†เดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดชเตเดฐเด•เดŸเดจ เดตเดฟเดถเด•เดฒเดจเด‚ เดจเดฟเตผเดฃเดพเดฏเด•เดฎเดพเดฃเต. เดจเดฟเดฐเต€เด•เตเดทเดฃเด™เตเด™เดณเต† เด‰เดชเดญเต‹เด•เตเดคเตƒ เดชเตเดฐเดคเต€เด•เตเดทเด•เดณเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเดฟ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดธเตเดตเต€เด•เดพเดฐเตเดฏเดตเตเด‚ เด…เดฒเตเดฒเดพเดคเตเดคเดคเตเด‚ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเตป เดธเดนเดพเดฏเดฟเด•เตเด•เตเด‚. เดตเดฟเดถเด•เดฒเดจเด‚ เดฒเดณเดฟเดคเดตเตเด‚ เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจเดคเตเดฎเดพเด•เตเด•เตเดจเตเดจ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดฟเตฝ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดš เดถเด•เตเดคเดฎเดพเดฏ เดŸเต‚เดณเตเด•เตพ Go เดจเตฝเด•เตเดจเตเดจเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•