แจแแกแ แฃแแแแแก แแแแแแแ แแ tuning แแ แแก แแซแแแแ แ แแแกแขแ แฃแแแแขแ แแแแแแขแแแแกแแแแก แจแแกแ แฃแแแแแก แจแแกแแแแแแกแแแแก แจแแกแแแแฌแแแแแแ.
แจแแกแ แฃแแแแแก แแแแแแแ แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แแ แแแ แแแแก แจแแคแแ แฎแแแแก แจแแกแแแแฌแแแแแแ, แแแชแแแแ แฃแแ แแแแแแแแก แแแแแงแแแแแแ แขแฃแแแแแแก แแฅแกแแแ แแแแแขแแแแก แจแแกแแแแฌแแแแแแ. แแก แกแขแแขแแ แแแแกแแแฆแแ แแแก แแแแแ แแแแแแแแก แจแแกแ แฃแแแแแก แแแแแแแแกแ แแ แ แแแฃแแแ แแแแกแแแแก, แแแแแแแแแ Go แแแแกแแ แแแ แแก แแแแแงแแแแแแ.
Go แแแแกแแแฃแแ แแแแ แแแ แแแ แแฅ, แ แแแแแ แแแก แแฅแแก แแ แแคแแแแ แแแแก แฎแแแกแแฌแงแแแแ pprof
แกแขแแแแแ แขแฃแ แแแแแแแแแแแจแ.
แกแขแ แแขแแแแ
แแแแแ แจแแแฅแแแแ แจแแแแฏแแแแแแแ แกแแ แฉแแแแ แกแขแ แฃแฅแขแฃแ แฃแแ แแแแแแแแกแแแแก. แฉแแแ แจแแแแชแแแแแ แแแแแแแงแแแแ แแแ แแแแฃแแ แแแแแชแแแแแ แแแแแฌแงแแแขแแแแแแก แแแกแแฆแแแแ, แแแชแแแแ แแแแกแ, แ แแ แชแแแแแแแแแ แจแแแแขแแแแ แแแขแฃแแชแแแก แแ แแแแแชแแแแแก แกแแคแฃแซแแแแแ. แแแแกแแแแแก แฉแแแ แแแแก แแแแแแแแแแ:
- แฉแแแ แแแแแกแแแฆแแ แแแ แแแขแแแแแแชแแแก แกแแแฆแแ แแแก (แแแแฎแแแแแแก);
- แฉแแแ แแแแแแแ แแจแแแ แกแแกแขแแแแกแแแแก แขแ แแแแแฅแชแแแก แแแขแแแ แแแแก;
- แแแกแ แฃแแแแ แขแแกแขแก (แแฅแแแแ แแแแแชแแแแแก);
- แแแแแแ แแแแแ;
- แแแแแแแแแแแ - แงแแแแ แแแแฎแแแแ แแแแแแงแแคแแแแแฃแแแ?
- แฉแแแ แแแแแงแแแแ แแแ แแแชแแแแ แฃแแแ, แแแแแแแแ แฐแแแแแแแแก;
- แฉแแแ แแแขแแ แแแ แแฅแกแแแ แแแแแขแก แแ แฐแแแแแแแแก แจแแกแแแแฌแแแแแแ.
แแแ แขแแแ HTTP แกแแ แแแ แแก แแ แฅแแขแแฅแขแฃแ แ
แแ แกแขแแขแแแกแแแแก แฉแแแ แแแแแแแงแแแแแ แแแขแแ แ HTTP แกแแ แแแ แก Golang-แจแ. แแ แกแขแแขแแแแแ แงแแแแ แแแแ แจแแแแซแแแแ แแฎแแแแ
แแแแแแแแแแแฃแแ แแแแแแแชแแ แแ แแก HTTP แกแแ แแแ แ, แ แแแแแแช แแแแแแแแฎแแแก Postgresql-แก แแแแแแฃแแ แแแแฎแแแแแกแแแแก. แแแ แแ แแแแกแ, แแ แกแแแแแก Prometheus, node_exporter แแ Grafana แแแแแแแชแแแแแกแ แแ แกแแกแขแแแแก แแแขแ แแแแก แจแแแ แแแแแแกแ แแ แฉแแแแแแแกแแแแก.
แแแแแ แขแแแแแแกแแแแก, แแแแแแฉแแแ, แ แแ แฐแแ แแแแแขแแแฃแ แ แกแแแแแ แแแแก (แแ แแแแแแแแแแแก แแแแแ แขแแแแแแกแแแแก) แแแแแแฃแแ แกแแ แแแกแ แแ แแแแแชแแแแ แแแแ แแแแแแแแแฃแแแ แแ แแแ:
แแแแแแแแก แแแแกแแแฆแแ แ
แแ แแขแแแแ แฉแแแ แแฌแงแแแขแ แแแแแแก. แ แแก แแแแแแแก แแชแแแแแแ? แ แแแแ แแแแแแแ, แ แแแแก แแ แแก แแแกแ แฃแแแแแก แแ แ? แแ แกแขแแขแแแจแ แฉแแแ แฌแแ แแแแแแแแแ, แ แแ แแแงแแแก แแแแแแขแแแ แแ แฉแแแแ แกแแ แแแกแ แแแฃแจแแแแแก 10 แแแแฎแแแแแก แฌแแแจแ.
ะ
- แจแแงแแแแแแ: แแแแฎแแแแแแแก 99% แฃแแแ แแแกแ แฃแแแแก 60 ms-แแ แแแแแแ แแ แแจแ;
- แฆแแ แแแฃแแแแ: แกแแ แแแกแแ แฃแแแ แแแแฎแแแ แแก แแแแแแแแฃแ แ แแแแฎแ, แ แแช แฉแแแแ แแแ แแ, แแแแแแ แฃแแแ แจแแกแแซแแแแแแแ. แแแแกแแแแแก แฉแแแ แแแฅแกแแแแแฃแ แแ แแแ แแแ แแแแขแแ แฃแแแ แแแแแแแก;
- แกแแแซแแแแ แแก แแแแแแแแ: แแแแแฎแแแก แแแแแแแก แแ แแแแฃแแแแขแแ แแแแก, แแฃ แ แแแแแแ แแแแแแแแแ แแ แกแแญแแ แ แแแแแแแชแแแก แแแกแแจแแแแแ, แแแแแแแ แแแกแจแขแแแแก แคแฃแแฅแชแแแแแ แแแแก แฉแแแแแแ, แแ แ แแแแแแ แแแกแขแแแชแแ แแฅแแแแ แกแแญแแ แ แกแแฌแงแแกแ แแแขแแแ แแแแกแ แแ แฃแแ แฃแแแแแงแแคแแก แแแแฎแแแแแแแก แแแกแแแแแงแแคแแแแแแแ.
แญแแ แแ แ แแแแแแแแ n+1 .
แแแขแแแขแฃแ แแแแ แจแแแซแแแแ แแแแแฎแแแแก แแแขแแแแแแชแแ แแแแแแแแก แแแ แแ, แแแแ แแ แแแแขแแ แฃแแแ แแแแแแ แแจแแแ แแ แฃแแแ แแแแแแแแแแแก. SRE SLO แแ แแชแแกแแก แแแแแงแแแแแแกแแก, แแแแแแแแแแแก แแแแฎแแแแ แแแแแก แแแแฎแแแ แแแแแกแแแ แแ แแแแแแกแแกแแแ, แฌแแ แแแแแแแแแ แแ แแแฃแฅแขแแก แแคแแแแแแแก แแแแ . แฉแแแแ แกแแแกแแฎแฃแ แ แแ แแ แแแแแแแฃแแแแแก แแแแแแแแแ แงแแแแแแแแ แ แแแ แแแแขแ แแแแก แแแ แแจแ แจแแแกแ แฃแแแแก!
แกแแขแแกแขแ แแแ แแแแก แแแงแแแแแ
แกแแขแแกแขแ แแแ แแแแก แแแฎแแแ แแแแ แฉแแแ แจแแแซแแแแ แฉแแแแก แกแแกแขแแแแแ แแแแแแแแ แแแขแแแ แแแแก แแแแแแแกแแแแก. แแแแแแแแกแแแแก, แแแแแ แแ แแแฃแแ แแฅแแแแ แแแแแชแแแแแ แแแ แกแแ แแแกแแก แแฃแจแแแแแก แจแแกแแฎแแ.
แขแ แแแแแฅแชแแแก แแแขแแแ แแแ
แแก แแแ แแแ แแงแแแแแก
$ 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 แแ แ, แ แแแแกแแช แแแแแแแชแแ แแฃแจแแแแก. แแก แกแแจแฃแแแแแแก แแแซแแแแ แแฃแกแขแแ แแแแกแแแฆแแ แแ แกแแ แแ แ แแแแแแ แแ แแชแแกแแ แแก แแ แ แแฎแแ แฏแแแ:
แแก แแแแแชแแแแแ แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แแแแแแแแก แแ แแก, แ แแแ แแแแฆแแ แแแคแแ แแแชแแ แคแฃแญแแ CPU แแ แแแกแ แแ แแ แแกแแญแแ แ แกแแแฃแจแแแแแแก แจแแกแแฎแแ. Go (pprof)-แก แจแแฃแซแแแ แแ แแคแแแแแแก แแแแแ แแ แแแ แแ แแแแ แแแแฃแแแแแแชแแ, แ แแแแ แช แคแแแแแแก แแ แแคแแแแแ, แแแกแขแ แฃแแแแขแแแแก แกแขแแแแแ แขแฃแแ แแแแ แแแแก แแแแแงแแแแแแ. แแแ แแแแแงแแแแแแกแ แแ แแแงแแแแแแก แกแแฎแแแแซแฆแแแแแแแแ แแแแแแแแแแแ แกแขแแขแแแจแ แแแกแแฃแแ แแ.
แจแแกแ แฃแแแแ, แแแแแแ แแแแ, แแแแแแแ.
แแแแแ แแแแแแแแแ แแฅแกแแแ แแแแแขแ. แฉแแแ แจแแแแกแ แฃแแแแ, แแแแแแแแ แแแแแ แแ แแแแแแแแแแแแแ, แกแแแแ แแ แแแแแแแงแแคแแแแแแแ แจแแกแ แฃแแแแแ. แแแแแ แแแแ แฉแแแ แแแแแแแแฃแ แแ แแแแแแ แแแขแแแ แแแแก แแแแจแแแแแแแ แแแกแ แแแแแกแแงแแแแแแแ แแแ แแแแ แแแแแแ แแแแแก แจแแแแแแแแก แแแกแแฆแแแแ. แงแแแแ แแแแแแแแ แแขแแแแ แฉแแแ แแแแแ แแแ แแแขแแแ แแแแก แแแ แแแแฃแแ แกแแแแแ แแแแก แคแแฅแขแแ แแ, แ แแแแแแช แแ แฉแแฃแแแ แแแ แแแแฃแแ แแแ แแแชแแแ. แแแแแแฃแแ แแแขแแแ แแแแก แขแแกแขแแ แแแแก แแแจแแแแ แจแแกแ แฃแแแแฃแแแ แแแแฎแแแแแก แ แแแแแแแแแก แแแ แแฅแขแแ แแแแ: make load-test LOAD_TEST_RATE=X
.
50 แแแแฎแแแแ แฌแแแจแ
แงแฃแ แแแฆแแแ แแแแฅแชแแแ แแแแ แแ แแ แแคแแแก. แแแแ แแแ แชแฎแแแ แแแแฉแแแแแแก, แ แแ แฉแแแแ แแแแแแแชแแ แแแฃแจแแแแแก 50 แแแแฎแแแแแก แฌแแแจแ (แแแก แแแ แแ) แแ แแแแ แแแ แฏแแแแ แแแแฉแแแแแแก แแแแแแฃแแ แแแแฎแแแแแก แฎแแแแ แซแแแแแแแก. แแ แแแ แแแ แแแแขแ แ แแแแฎแแแ แแแ แจแแแฎแแแแ แแ แแแแแแแแแแแแ, แแแ แ แแฃ แแ แ แฉแแแแ แจแแกแ แฃแแแแแก แกแแแฆแแ แแแจแ. แฌแแแแแ แฎแแแ แแ แแคแแแแ HTTP แแแแฎแแแแแก แจแแงแแแแแแ แแฉแแแแแแก SLO-แก 60 ms-แแ. แฎแแแ แแแแฉแแแแแแก, แ แแ แ แแแแแ แแแแก แแแฅแกแแแแแฃแ แแ แแแ แแแชแแแแแแ แแแแแแ แแแ แ.
แแแแแ แจแแแฎแแแแ แฎแแ แฏแแแแก แแฎแแ แแก:
10000 แแแแฎแแแแ แฌแแแจแ / 50 แแแแฎแแแแ แแแแ แกแแ แแแ แแ = 200 แกแแ แแแ แ + 1
แฉแแแ แแแแแ แจแแแแแซแแแ แแแแแฃแแฏแแแแกแแ แแก แแแฉแแแแแแแแ.
500 แแแแฎแแแแ แฌแแแจแ
แฃแคแ แ แกแแแแขแแ แแกแ แ แแ แฎแแแแ แแแจแแ, แ แแแแกแแช แแแขแแแ แแแ แฌแแแจแ 500 แแแแฎแแแแแก แแแแฆแฌแแแก:
แแกแแ, แแแแ แแแ แชแฎแแแ แแ แแคแแแแ แฎแแแแแ, แ แแ แแแแแแแชแแ แแแ แแแแฃแ แแแขแแแ แแแแก แแฌแแ แก. แแฃ แแก แแกแ แแ แแ แแก, แแ แแก แแ แแแแแแ แกแแ แแแ แแ, แ แแแแแแแช แแแแแแแชแแ แแฃแจแแแแก. แแแกแฃแฎแแก แจแแงแแแแแแแก แแ แแคแแแ แแแแแแ แแแแก แแแแ แแแ แฏแแแแ, แ แแแแแแช แแฉแแแแแแก, แ แแ 500 แแแแฎแแแแ แฌแแแจแ แแฌแแแแก แแแกแฃแฎแแก แแแงแแแแแแแก 25-40 ms. 99-แ แแ แแชแแแขแฃแแ แแแแแช แแแ แแแ แฏแแแแ แแแแแ แแ แฉแแฃแ 60ms SLO-แจแ.
แฆแแ แแแฃแแแแแก แแแแแกแแแ แแกแแ:
10000 แแแแฎแแแแ แฌแแแจแ / 500 แแแแฎแแแแ แแแแ แกแแ แแแ แแ = 20 แกแแ แแแ แ + 1
แงแแแแแคแ แแก แแแฃแแฏแแแแกแแแ แแแแแช แจแแแซแแแแ.
1000 แแแแฎแแแแ แฌแแแจแ
แจแแกแแแแจแแแแ แแแจแแแแ! แแแแแแแชแแ แแฉแแแแแแก, แ แแ แแแ แแแฃแจแแแ 1000 แแแแฎแแแแ แฌแแแจแ, แแแแ แแ แจแแงแแแแแแแก แแแแแขแ แแแแ แฆแแ SLO-แ. แแก แฉแแแก แฎแแแจแ p99 แแแแ แแแ แฏแแแแ แแ แแคแแแแ. แแแฃแฎแแแแแแ แแแแกแ, แ แแ p100 แฎแแแ แแแชแแแแแแ แแแฆแแแแ, แ แแแแฃแ แ แจแแคแแ แฎแแแแแ แฃแคแ แ แแแฆแแแแ, แแแแ แ แแแฅแกแแแฃแ 60 ms. แแแแแ แฉแแแฃแฆแ แแแแแแ แแ แแคแแแแ แแแแก, แ แแแ แแแแแ แแแแแ, แ แแก แแแแแแแก แแแแแแแชแแ แกแแแแแแแแแแจแ.
แแ แแคแแแแ แแแ
แแ แแคแแแแ แแแแกแแแแก แฉแแแ แแแงแแแแแ แแแขแแแ แแแแก 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
แแ แแคแแแ แแฉแแแแแแก แกแแ แแ แ แแแแแแก แฎแแ แฏแแแก แแแแแแแชแแ CPU แแ แแก. แกแแฌแงแแกแ แแฆแฌแแ แแแแแแแแ
X แฆแแ แซแ แแ แแก แกแขแแแแก แแ แแคแแแแก แแแแฃแแแชแแ, แแแแแแแแฃแแแ แแแแแแฃแ แแ (แแก แแ แ แแ แแ แแก), Y แฆแแ แซแ แแฉแแแแแแก แแแขแแก แกแแฆแ แแแก, แแฃแแแแแ แแแแแแแก [แแแแแแแ]. แแแแแแฃแแ แแแ แแแฃแแฎแแแ แแ แแก แกแขแแแแก แฉแแ แฉแ. แ แแช แฃแคแ แ แคแแ แแแ แฉแแ แฉแ, แแแ แฃแคแ แ แฎแจแแ แแ แแก แแแงแแคแแแ แกแขแแแแแจแ. แแก, แ แแช แแแแแ แแ แแก, แแฃแจแแแแก CPU-แแ แแ แ แแช แฅแแแแแ แแ แแก แจแแแแแแแแ แแแแแแแขแแแ. แคแแ แแแ, แ แแแแ แช แฌแแกแ, แแ แแคแแ แก แแแจแแแแก, แแแแ แแ แฃแแ แแแแ แจแแแแฎแแแแแ แแ แฉแแแแ แฉแแ แฉแแแแแก แแแคแแ แแแชแแ แแแแกแแแแก.
แแแแแแแ - แฐแแแแแแแ
แแแแแแแ แแขแแแแกแแแแก, แฉแแแ แงแฃแ แแแฆแแแแก แแแแแแแฎแแแแแแ CPU-แก แแแแแ แแฃแแ แแ แแแก แแแแแแแ. แฉแแแ แแแแซแแแแแ แฃแกแแ แแแแแ แฎแแ แฏแแแก แฃแแแแแก แฌแงแแ แแแแก แแ แแแแแจแแ แแแ แแแ. แแแแก แแแแแแแแกแฌแแแแแแ, แ แแ แแ แแคแแแแ แแแ แซแแแแแ แแฃแกแขแแ แชแฎแแแงแแคแก, แแฃ แกแแ แฎแแ แฏแแแก แแแแแแแชแแ แแ แแชแแกแแ แแก แแ แแก, แจแแแซแแแแ แ แแแแแแฏแแ แแ แแแแแฌแแแ แแแแก แแแแแแแแ, แแกแแแ แแแแญแแ แแแแแ แแแแแแแชแแแก แฌแงแแ แแก แแแแแก แจแแชแแแ, แขแแกแขแแแแก แฎแแแแฎแแ แแแจแแแแ แแ แแแแก แแแแแฎแแ, แ แแ แจแแกแ แฃแแแแ แฃแแฎแแแแแแแ แแแแแแก.
แแ แแแแแ แแ แแแแก แ แแแแแแแแแชแแแแแก แจแแแแแ, แฉแแแ แฌแแแแแแแฎแแแ แกแฅแแแแก แแแแแแแ แฅแแแแแแแ. แแแแแแฃแแ แฎแแแ แแฉแแแแแแก แกแขแแแแก แฉแแ แฉแแก (แคแฃแแฅแชแแแก แแแแแซแแฎแแแ). แแแ แแแแ แกแขแ แแฅแแแ แแ แแก แแ แแแ แแแแจแ แจแแกแแแแก แฌแแ แขแแแ, แงแแแแ แกแฎแแ แแแ แแก แแจแแแแแ (แกแฎแแ แกแแขแงแแแแแ แ แแ แแแฅแแแ, แงแแแแ แกแฎแแ แแแ แก แแฅแแแแ แแก แแแแแก แกแขแแแแ). แจแแแแแแ แฎแแแ แฃแแแ แแแแกแฎแแแแแแฃแแแ:
แแฃ แแฃแ แกแแ แก แแแแแแฎแแแแ แแ แแคแแแแ แคแฃแแฅแชแแแก แกแแฎแแแก, แแแแแฉแแแแแ แแแแแแแ แแ แ, แ แแแแแแช แแงแ แแแกแขแแแ แแแแแ แแแแก แแ แแก. HTTPServe แคแฃแแฅแชแแ แแงแ แแ แแแก 65%-แจแ, แกแฎแแ แแแจแแแแแก แคแฃแแฅแชแแแแ runtime.mcall
, mstart
ะธ gc
, แแแ แฉแแแแแ แแ แ แแแกแญแแ แแ. แกแแฎแแแแกแ แคแแฅแขแ: แแแแแแแ แแ แแแก 5% แแฎแแ แฏแแแ DNS แจแแแแแฎแแแแแ:
แแแกแแแแ แแแแ, แ แแแแแแกแแช แแ แแแ แแแ แแซแแแก, แแแฃแแแแแก Postgresql-แก. แฒแแแแแแแแ FindByAge
:
แกแแแแขแแ แแกแแ, แ แแ แแ แแแ แแแ แแฉแแแแแแก, แ แแ, แแ แแแชแแแจแ, แแ แกแแแแแก แกแแแ แซแแ แแแแแ แฌแงแแ แ, แ แแแแแแช แแแแขแแแก แจแแคแแ แฎแแแแแก: แแแแจแแ แแแแก แแแฎแกแแ แแ แแแฎแฃแ แแ, แแแแแชแแแแ แแแแฎแแแแ แแ แแแแแชแแแแ แแแแแกแแแ แแแแแแจแแ แแแ. แแ แแคแแแ แแฉแแแแแแก, แ แแ DNS แแแแฎแแแแแแ, แแแแจแแ แแแแก แแแฎแกแแ แแ แแแฎแฃแ แแ แแแแแแแก แแแแแแแ แจแแกแ แฃแแแแแก แแ แแแก แแแแฎแแแแแแ 13%-แก.
แฐแแแแแแแ: แแแแ แแแแแแแแก แแแแแงแแแแแแ แแแแจแแ แแแแก แฎแแแแฎแแ แแแแแงแแแแแแ แฃแแแ แจแแแแชแแ แแก แแ แแ HTTP แแแแฎแแแแแก แแ แ, แ แแช แฃแคแ แ แแแฆแแแ แแแแขแแ แฃแแแ แแแแแแแก แแ แแแแแแ แจแแงแแแแแแแก แกแแจแฃแแแแแแก แแซแแแแ.
แแแแแแแชแแแก แแแงแแแแแ - แแฅแกแแแ แแแแแขแ
แฉแแแ แแแแฎแแแแ แฌแงแแ แแก แแแแก, แแชแแแแแแ แฌแแแจแแแแ แแแแจแแ แ Postgresql-แแแ แงแแแแแ แแแแฎแแแแแกแแแแก. แแแ แแแแ แแแ แแแแขแ แแ แแก แแแแแงแแแแแ
db, err := sql.Open("postgres", dbConnectionString)
db.SetMaxOpenConns(8)
if err != nil {
return nil, err
}
แจแแกแ แฃแแแแ, แแแแแแ แแแแ, แแแแแแแ
แขแแกแขแแก แแแแแขแแแ แแแแก แจแแแแแ 1000 แแแแฎแแแแแ แฌแแแจแ, แชแฎแแแแ, แ แแ p99-แแก แจแแงแแแแแแแก แแแแแแแ แแแ แแแแฃแ แแ แแแแ แฃแแแ SLO 60ms!
แ แ แฆแแ แก?
10000 แแแแฎแแแแ แฌแแแจแ / 1000 แแแแฎแแแแ แแแแ แกแแ แแแ แแ = 10 แกแแ แแแ แ + 1
แแแแแ แแแแแแแแแ แแก แแแแแ แฃแแแแแกแ!
2000 แแแแฎแแแแ แฌแแแจแ
แแแขแแแ แแแแก แแแแ แแแแแแ แแแแฉแแแแแแก แแแแแแก, แแแแ แแแ แชแฎแแแ แแ แแคแแแ แแฉแแแแแแก, แ แแ แแแแแแแชแแ แแฎแแ แฎแแแก แฌแแแจแ 2000 แแแแฎแแแแแก แแแแฃแจแแแแแแก, p100 แแ แแก 60ms-แแ แแแแแแ, p99 แแแแแงแแคแแแแแก SLO-แก.
แฆแแ แแแฃแแแแแก แแแแแกแแแ แแกแแ:
10000 แแแแฎแแแแ แฌแแแจแ / 2000 แแแแฎแแแแ แแแแ แกแแ แแแ แแ = 5 แกแแ แแแ แ + 1
3000 แแแแฎแแแแ แฌแแแจแ
แแฅ แแแแแแแชแแแก แจแแฃแซแแแ 3000 แแแแฎแแแแแก แแแแฃแจแแแแแ p99 แจแแงแแแแแแแ 60 ms-แแ แแแแแแแ. SLO แแ แแ แฆแแแแ แแ แฆแแ แแแฃแแแแ แแแแฆแแแ แจแแแแแแแแแ แแ:
10000 แแแแฎแแแแ แฌแแแจแ / 3000 แแแแฎแแแแแแ แกแแ แแแ แแ = 4 แกแแ แแแ แ + 1 (แแแขแแ แแ แแแแแ แแแ, แแแแฎแ. แแแแ แแแแแแ)
แแแแ แแชแแแแ แแแแแแแแก แแแแแ แแ แแ แ แแฃแแแ.
แแแแแแแ - แฐแแแแแแแ
แฉแแแ แแแแ แแแแแ แแ แแแฉแแแแแแ แแแแแแแชแแแก แแแแแ แแแแก แจแแแแแแแก แฌแแแจแ 3000 แแแแฎแแแแแ:
แแ แแแก แฏแแ แแแแแ 6% แแฎแแ แฏแแแ แแแแจแแ แแแแก แแแแงแแ แแแแแ. แแฃแแแก แแแงแแแแแแ แแแแฃแแฏแแแแกแ แจแแกแ แฃแแแแ, แแแแ แแ แแฅแแแ แแแแแช แฎแแแแแ, แ แแ แแแแแแแชแแ แแแ แซแแแแแก แแฃแจแแแแแก แแแแแชแแแแ แแแแแกแแแ แแฎแแแ แแแแจแแ แแแแก แจแแฅแแแแแ.
แฐแแแแแแแ: แแแแจแแ แแแ, แแฃแแแก แแ แกแแแแแแก แแแฃแฎแแแแแแ, แแแแแช แแจแแแแ แแ แแแฌแแแแแแแแ, แแแแขแแ แแแแแแแชแแแก แกแญแแ แแแแ แแแแ แแแแแขแแแ แแแ. แแแแแแแแแ แแแแจแแ แแแแก แ แแแแแแแแแก แแแงแแแแแ แแฃแแแก แแแแแแ แฃแแแ แแแแแแฎแแแ แแก แแแขแแแขแฃแ แแแแก แจแแแชแแ แแแแจแ, แแแแแแแชแแแก แแแแ แแแแจแแ แแก แจแแฅแแแแแ แแแฎแแ แฏแฃแแ แแ แแแก แจแแแชแแ แแแแ..
แแแแแแแชแแแก แแแงแแแแแ - แแฅแกแแแ แแแแแขแ
แแแกแขแแแแชแแแก แชแแแแแแก
db, err := sql.Open("postgres", dbConnectionString)
db.SetMaxOpenConns(8)
db.SetMaxIdleConns(8)
if err != nil {
return nil, err
}
แจแแกแ แฃแแแแ, แแแแแแ แแแแ, แแแแแแแ
3000 แแแแฎแแแแ แฌแแแจแ
p99 แแ แแก 60ms-แแ แแแแแแแ, แกแแแ แซแแแแแแ แแแแแแแ p100!
แคแแแแแแก แแ แแคแแแแก แจแแแแฌแแแแ แแฉแแแแแแก, แ แแ แแแแจแแ แ แแฆแแ แแ แแก แจแแกแแแฉแแแแ! แแแแแ แจแแแแแแฌแแแ แฃแคแ แ แแแขแแแฃแ แแ pg(*conn).query
- แฉแแแ แแกแแแ แแแ แแแแฉแแแแ แแฅ แแแแงแแ แแแฃแ แแแแจแแ แก.
แแแกแแแแ
แจแแกแ แฃแแแแแก แแแแแแแ แแแแแแฌแงแแแขแแ แแแแก แแแกแแแแแแ, แ แแ แแแแฎแแแ แแแแแก แแแแแแแแแแ แแ แแ แแคแฃแแฅแชแแฃแ แ แแแแฎแแแแแแ แแแแแแงแแคแแแแแฃแแแ. แแแแแแแ แแแแแแ แแแแแแแก แแแแฎแแแ แแแแแแ แแแแแแแแแแแแ แจแแแแ แแแแ แแแแแฎแแแ แแแแ แแแแกแแแฆแแ แแ แ แ แแ แแก แแแกแแฆแแแ แแ แ แ แแ แ. Go แแแแแแแแแ แกแขแแแแแ แขแฃแ แแแแแแแแแแแจแ แฉแแจแแแแแฃแ แแซแแแแ แแแกแขแ แฃแแแแขแแแก, แ แแแแแแแช แแแแแแแก แแแ แขแแแก แแ แฎแแแแแกแแฌแแแแแก แฎแแแก.
แฌแงแแ แ: www.habr.com