āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻŦāĻ āĻāĻŋāĻāĻ¨āĻŋāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻ¸āĻŽā§āĻŽāĻ¤āĻŋ āĻ¯āĻžāĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻļāĻā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§ āĻšāĻžāĻ¤āĻŋāĻ¯āĻŧāĻžāĻ°āĨ¤
āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻŋāĻāĻ¨āĻŋāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻā§āĻ˛āĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŦā§āĻā§āĻāĻžāĻ¨āĻŋāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§ āĻŦāĻžāĻ§āĻžāĻā§āĻ˛āĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻāĻŋ Go āĻāĻ¯āĻŧā§āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻŦāĻ āĻāĻŋāĻāĻ¨āĻŋāĻāĻ¯āĻŧā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°ā§ā§ˇ
Go āĻāĻāĻžāĻ¨ā§ āĻŦāĻŋāĻļā§āĻˇāĻāĻžāĻŦā§ āĻāĻžāĻ˛ā§ āĻāĻžāĻ°āĻŖ āĻāĻ¤ā§ āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛āĻŋāĻ āĻā§āĻ˛ āĻ°āĻ¯āĻŧā§āĻā§ pprof
āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ¤ā§āĨ¤
āĻā§āĻļāĻ˛
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻ āĻžāĻŽā§āĻāĻ¤ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°āĻžāĻāĻļ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤ āĻāĻŽāĻ°āĻž āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻĻā§āĻˇā§āĻāĻŋ āĻŦāĻž āĻ āĻ¨ā§āĻŽāĻžāĻ¨ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§āĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋāĻā§ āĻĄā§āĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŦāĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻāĻ°āĻŦ:
- āĻāĻŽāĻ°āĻž āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāĻ¨ āĻ¸ā§āĻŽāĻžāĻ¨āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻŋ (āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž);
- āĻāĻŽāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ˛ā§āĻ¨āĻĻā§āĻ¨ā§āĻ° āĻ˛ā§āĻĄ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻŋ;
- āĻāĻŽāĻ°āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻ¸āĻā§āĻāĻžāĻ˛āĻ¨ (āĻĄā§āĻāĻž āĻ¤ā§āĻ°āĻŋ);
- āĻāĻŽāĻ°āĻž āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ āĻāĻ°āĻŋ;
- āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻŋ - āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻĒā§āĻ°āĻŖ āĻšāĻ¯āĻŧ?
- āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻŦā§āĻā§āĻāĻžāĻ¨āĻŋāĻāĻāĻžāĻŦā§ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻŋ, āĻāĻāĻāĻŋ āĻšāĻžāĻāĻĒā§āĻĨāĻŋāĻ¸āĻŋāĻ¸ āĻāĻ°āĻŋ;
- āĻāĻŽāĻ°āĻž āĻāĻ āĻ āĻ¨ā§āĻŽāĻžāĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻ¸āĻā§āĻāĻžāĻ˛āĻ¨.
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ HTTP āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻā§āĻ˛āĻ-āĻ āĻāĻāĻāĻŋ āĻā§āĻ HTTP āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦāĨ¤ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻĨā§āĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻĄ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻžāĻ¨āĻāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻā§āĻā§ āĻāĻāĻāĻŋ HTTP āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻāĻ¨ā§āĻ¯ Postgresql āĻĒā§āĻ˛ āĻāĻ°ā§āĨ¤ āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻŦāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ¸ āĻ¸āĻāĻā§āĻ°āĻš āĻ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻāĻ¸, āĻ¨ā§āĻĄ_āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻā§āĻ°āĻžāĻĢāĻžāĻ¨āĻž āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻ¸āĻšāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻŋ āĻ¯ā§ āĻ āĻ¨ā§āĻā§āĻŽāĻŋāĻ āĻ¸ā§āĻā§āĻ˛āĻŋāĻ (āĻāĻŦāĻ āĻāĻŖāĻ¨āĻž āĻ¸āĻ°āĻ˛ā§āĻāĻ°āĻŖ) āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻāĻ¸āĻžāĻĨā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§:
āĻ˛āĻā§āĻˇā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻž
āĻāĻ āĻ§āĻžāĻĒā§, āĻāĻŽāĻ°āĻž āĻ˛āĻā§āĻˇā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻāĻŋ? āĻāĻāĻž āĻļā§āĻˇ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŽāĻ°āĻž āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ¨āĻŋ? āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻāĻŽāĻ°āĻž āĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°āĻŦ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻā§ āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 10 āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻŦā§āĨ¤
Đ
- āĻ˛ā§āĻā§āĻ¨ā§āĻ¸āĻŋ: 99% āĻ āĻ¨ā§āĻ°ā§āĻ§ 60ms āĻāĻ° āĻāĻŽ āĻ¸āĻŽāĻ¯āĻŧā§ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤;
- āĻāĻ°āĻ: āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ āĻ°ā§āĻĨ āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻŽāĻ¨ā§ āĻāĻ°āĻŋ āĻ¯ā§āĻā§āĻ¤āĻŋāĻ¸āĻā§āĻāĻ¤āĻāĻžāĻŦā§ āĻ¸āĻŽā§āĻāĻŦāĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻĨā§āĻ°ā§āĻĒā§āĻ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ āĻāĻ°āĻŋ;
- āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨āĻŋāĻ: āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻ¸ā§āĻā§āĻ˛āĻŋāĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž āĻ¸āĻš āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻāĻ¤āĻā§āĻ˛āĻŋ āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§ āĻāĻŦāĻ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻ˛ā§āĻĄ āĻāĻŦāĻ āĻŦāĻŋāĻ§āĻžāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŖ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¤āĻā§āĻ˛āĻŋ āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§ āĻ¤āĻž āĻŦā§āĻāĻž āĻāĻŦāĻ āĻ¨āĻĨāĻŋāĻā§āĻā§āĻ¤ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨
āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž 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 āĻ¸āĻŽāĻ¯āĻŧ āĻā§āĻĨāĻžāĻ¯āĻŧ āĻ¯āĻžāĻā§āĻā§āĨ¤ āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻ āĻŋāĻ āĻā§āĻĨāĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ¤āĻāĻž āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°ā§ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ:
āĻāĻ āĻĄā§āĻāĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻˇā§āĻ CPU āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŦāĻ āĻ¸āĻā§āĻāĻžāĻ˛āĻŋāĻ¤ āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻžāĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻĻā§āĻˇā§āĻāĻŋ āĻĒā§āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ Go (pprof) āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻŽāĻžāĻ¨ āĻ¸ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻļāĻŋāĻāĻž āĻā§āĻ°āĻžāĻĢ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻŽāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻĒāĻ°ā§ āĻ¤āĻžāĻĻā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻŦāĻ āĻ¸ā§āĻāĻāĻĒ āĻāĻžāĻāĻĄ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤
āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻš, āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ, āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĨ¤
āĻāĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻ¯āĻžāĻ. āĻāĻŽāĻ°āĻž āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ā§ āĻ¸āĻ¨ā§āĻ¤ā§āĻˇā§āĻ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻŽāĻ°āĻž āĻĒāĻžāĻ°āĻĢāĻ°ā§āĻŽ āĻāĻ°āĻŦ, āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ āĻāĻ°āĻŦ āĻāĻŦāĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻŦāĨ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖā§āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ¤ā§ āĻāĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻāĻžāĻ°ā§ āĻāĻŽ āĻ˛ā§āĻĄ āĻŽāĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ§āĻžāĻĒā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸ā§āĻā§āĻ˛āĻŋāĻ āĻĢā§āĻ¯āĻžāĻā§āĻāĻ° āĻĻāĻŋāĻ¯āĻŧā§ āĻ˛ā§āĻĄ āĻŦāĻžāĻĄāĻŧāĻžāĻŦ, āĻ¯āĻž āĻāĻŋāĻā§ āĻāĻŋāĻ¨ā§āĻ¨āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻŦā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ˛ā§āĻĄ āĻā§āĻ¸ā§āĻāĻŋāĻ āĻ°āĻžāĻ¨ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻāĻ°āĻž āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻā§āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ: make load-test LOAD_TEST_RATE=X
.
āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 50āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§
āĻāĻĒāĻ°ā§āĻ° āĻĻā§āĻāĻŋ āĻā§āĻ°āĻžāĻĢā§ āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻĻāĻŋāĻ¨āĨ¤ āĻāĻĒāĻ°ā§āĻ° āĻŦāĻžāĻŽā§ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 50āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°ā§ (āĻāĻāĻŋ āĻŽāĻ¨ā§ āĻāĻ°ā§) āĻāĻŦāĻ āĻāĻĒāĻ°ā§āĻ° āĻĄāĻžāĻ¨āĻĻāĻŋāĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧāĻāĻžāĻ˛ āĻĻā§āĻāĻžāĻ¯āĻŧāĨ¤ āĻāĻāĻ¯āĻŧ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻĻā§āĻāĻ¤ā§ āĻāĻŦāĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°ā§ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻ¸ā§āĻŽāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻŋ āĻāĻŋ āĻ¨āĻžāĨ¤ āĻā§āĻ°āĻžāĻĢā§ āĻ˛āĻžāĻ˛ āĻ°ā§āĻāĻž HTTP āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻ˛ā§āĻā§āĻ¨ā§āĻ¸āĻŋ 60ms āĻ SLO āĻĻā§āĻāĻžāĻ¯āĻŧāĨ¤ āĻ˛āĻžāĻāĻ¨āĻāĻŋ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻ¨ā§āĻā§ āĻāĻāĻŋāĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻ°āĻā§āĻ° āĻĻāĻŋāĻāĻāĻŋ āĻĻā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ:
āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 10000 āĻ āĻ¨ā§āĻ°ā§āĻ§ / āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋ 50āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ = 200 āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° + 1
āĻāĻŽāĻ°āĻž āĻāĻāĻ¨āĻ āĻāĻ āĻĒāĻ°āĻŋāĻ¸āĻāĻā§āĻ¯āĻžāĻ¨ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨.
āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 500āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§
āĻ˛ā§āĻĄ āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 500āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§ āĻĒā§āĻāĻāĻžāĻ˛ā§ āĻāĻ°āĻ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻāĻŋāĻ¨āĻŋāĻ¸āĻā§āĻ˛āĻŋ āĻāĻāĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°ā§:
āĻāĻŦāĻžāĻ°, āĻāĻĒāĻ°ā§āĻ° āĻŦāĻžāĻŽ āĻā§āĻ°āĻžāĻĢā§ āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻā§āĻ¨ āĻ¯ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻ˛ā§āĻĄ āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°āĻā§āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻ¯ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻāĻ˛āĻā§ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ˛ā§āĻā§āĻ¨ā§āĻ¸āĻŋ āĻā§āĻ°āĻžāĻĢāĻāĻŋ āĻāĻĒāĻ°ā§āĻ° āĻĄāĻžāĻ¨āĻĻāĻŋāĻā§ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤, āĻāĻāĻŋ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§ āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 500āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻĢāĻ˛ā§ 25-40ms āĻāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻŋāĻ˛āĻŽā§āĻŦāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§āĨ¤ 99āĻ¤āĻŽ āĻĒāĻžāĻ°ā§āĻ¸ā§āĻ¨ā§āĻāĻžāĻāĻ˛ āĻāĻāĻ¨āĻ āĻāĻĒāĻ°ā§ āĻŦā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž 60ms SLO-āĻ¤ā§ āĻ¸ā§āĻ¨ā§āĻĻāĻ°āĻāĻžāĻŦā§ āĻĢāĻŋāĻ āĻāĻ°ā§āĨ¤
āĻāĻ°āĻā§āĻ° āĻĻāĻŋāĻ āĻĨā§āĻā§:
āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 10000 āĻ āĻ¨ā§āĻ°ā§āĻ§ / āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋ 500āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ = 20 āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° + 1
āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻāĻ¨āĻ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 1000āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§
āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻ˛āĻā§āĻ! āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§ āĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 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
āĻā§āĻ°āĻžāĻĢāĻāĻŋ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻā§āĻĨāĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ¤ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ CPU āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°ā§āĨ¤ āĻĨā§āĻā§ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻĨā§āĻā§
X āĻ āĻā§āĻˇ āĻšāĻ˛ āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛ āĻāĻ¨āĻ¸āĻāĻā§āĻ¯āĻž, āĻŦāĻ°ā§āĻŖāĻžāĻ¨ā§āĻā§āĻ°āĻŽāĻŋāĻāĻāĻžāĻŦā§ āĻ¸āĻžāĻāĻžāĻ¨ā§ (āĻāĻāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻ¯āĻŧ), Y āĻ āĻā§āĻˇ āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻāĻā§āĻ°āĻ¤āĻž āĻĻā§āĻāĻžāĻ¯āĻŧ, [āĻļā§āĻ°ā§āĻˇā§] āĻļā§āĻ¨ā§āĻ¯ āĻĨā§āĻā§ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻ¯āĻŧāĻ¤āĻā§āĻˇā§āĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻĢā§āĻ°ā§āĻŽāĨ¤ āĻāĻāĻĄāĻŧāĻž āĻĢā§āĻ°ā§āĻŽ, āĻāĻ°ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ āĻāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧ. āĻāĻĒāĻ°ā§ āĻ¯āĻž āĻāĻā§ āĻ¤āĻž āĻ¸āĻŋāĻĒāĻŋāĻāĻāĻ¤ā§ āĻāĻ˛ā§ āĻāĻŦāĻ āĻ¨āĻŋāĻā§ āĻ¯āĻž āĻāĻā§ āĻ¤āĻž āĻāĻžāĻāĻ˛ā§āĻĄ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻāĨ¤ āĻ°āĻāĻā§āĻ˛āĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻŋāĻā§ āĻŦā§āĻāĻžāĻ¯āĻŧ āĻ¨āĻž, āĻ¤āĻŦā§ āĻĢā§āĻ°ā§āĻŽā§āĻ° āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ˛ā§āĻŽā§āĻ˛ā§āĻāĻžāĻŦā§ āĻŦā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤
āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ - āĻ āĻ¨ā§āĻŽāĻžāĻ¨
āĻāĻŋāĻāĻ¨āĻŋāĻāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻ¨āĻˇā§āĻ CPU āĻ¸āĻŽāĻ¯āĻŧ āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻžāĻ° āĻāĻĒāĻ° āĻĢā§āĻāĻžāĻ¸ āĻāĻ°āĻŦāĨ¤ āĻāĻŽāĻ°āĻž āĻ āĻā§āĻā§ āĻāĻ°āĻā§āĻ° āĻŦā§āĻšāĻ¤ā§āĻ¤āĻŽ āĻāĻ¤ā§āĻ¸āĻā§āĻ˛āĻŋ āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻŦ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§ āĻĢā§āĻ˛āĻŦāĨ¤ āĻ āĻŋāĻ āĻāĻā§, āĻ¯ā§ āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛āĻŋāĻāĻāĻŋ āĻā§āĻŦ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°ā§ āĻ¯ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻ¤āĻžāĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ°ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ āĻŋāĻ āĻā§āĻĨāĻžāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°āĻā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻŋ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻŦāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻĻā§āĻāĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻ˛āĻā§āĻˇā§āĻ¯ā§āĻ° āĻāĻžāĻā§ āĻĒā§āĻāĻā§āĻā§āĨ¤
āĻŦā§āĻ°ā§āĻ¨ā§āĻĄāĻ¨ āĻā§āĻ°ā§āĻā§āĻ° āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻ āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻžāĻ°ā§āĻāĻāĻŋ āĻāĻĒāĻ°ā§ āĻĨā§āĻā§ āĻ¨ā§āĻā§ āĻĒāĻĄāĻŧāĻŦāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ˛āĻžāĻāĻ¨ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻĢā§āĻ°ā§āĻŽ (āĻĢāĻžāĻāĻļāĻ¨ āĻāĻ˛) āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°ā§āĨ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻ˛āĻžāĻāĻ¨ āĻšāĻ˛ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻĒā§āĻ°āĻŦā§āĻļ āĻŦāĻŋāĻ¨ā§āĻĻā§, āĻ āĻ¨ā§āĻ¯ āĻ¸āĻŦ āĻāĻ˛ā§āĻ° āĻŽā§āĻ˛ (āĻ āĻ¨ā§āĻ¯ āĻāĻĨāĻžāĻ¯āĻŧ, āĻ āĻ¨ā§āĻ¯ āĻ¸āĻŦ āĻāĻ˛ā§āĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻā§ āĻāĻāĻŋ āĻĨāĻžāĻāĻŦā§)āĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ˛āĻžāĻāĻ¨ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻāĻŋāĻ¨ā§āĻ¨:
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻā§āĻ°āĻžāĻĢā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻ¨āĻžāĻŽā§āĻ° āĻāĻĒāĻ° āĻāĻžāĻ°ā§āĻ¸āĻžāĻ°āĻāĻŋ āĻā§āĻ°āĻžāĻ¨, āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻāĻ¯āĻŧā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻā§ āĻĨāĻžāĻāĻž āĻŽā§āĻ āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻŦā§āĨ¤ HTTPServe āĻĢāĻžāĻāĻļāĻ¨ āĻāĻŋāĻ˛ 65% āĻ¸āĻŽāĻ¯āĻŧ, āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽ āĻĢāĻžāĻāĻļāĻ¨ runtime.mcall
, mstart
и gc
, āĻŦāĻžāĻāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻā§āĻ°āĻšāĻŖ. āĻŽāĻāĻžāĻ° āĻāĻāĻ¨āĻž: āĻŽā§āĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° 5% DNS āĻĒā§āĻ°āĻļā§āĻ¨ā§ āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°āĻž āĻšāĻ¯āĻŧ:
āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻāĻŋ āĻ¯ā§ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻā§āĻ˛āĻŋ āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°ā§ āĻ¤āĻž Postgresql-āĻāĻ° āĻ
āĻ¨ā§āĻ¤āĻ°ā§āĻāĻ¤āĨ¤ āĻā§āĻ˛āĻŋāĻ āĻāĻ°ā§āĻ¨ FindByAge
:
āĻŽāĻāĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻšāĻ˛, āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻāĻŋ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§, āĻ¨ā§āĻ¤āĻŋāĻāĻ¤āĻāĻžāĻŦā§, āĻ¤āĻŋāĻ¨āĻāĻŋ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻ¤ā§āĻ¸ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻŦāĻŋāĻ˛āĻŽā§āĻŦ āĻ¯ā§āĻ āĻāĻ°ā§: āĻ¸āĻāĻ¯ā§āĻ āĻā§āĻ˛āĻž āĻāĻŦāĻ āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻž, āĻĄā§āĻāĻž āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°āĻž āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻžāĨ¤ āĻā§āĻ°āĻžāĻĢāĻāĻŋ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§ āĻĄāĻŋāĻāĻ¨āĻāĻ¸ āĻ āĻ¨ā§āĻ°ā§āĻ§, āĻā§āĻ˛āĻž āĻāĻŦāĻ āĻŦāĻ¨ā§āĻ§ āĻ¸āĻāĻ¯ā§āĻāĻā§āĻ˛āĻŋ āĻŽā§āĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻĒā§āĻ°āĻžāĻ¯āĻŧ 13% āĻ¸āĻŽāĻ¯āĻŧ āĻ¨ā§āĻ¯āĻŧāĨ¤
āĻ āĻ¨ā§āĻŽāĻžāĻ¨: āĻĒā§āĻ˛āĻŋāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻāĻ¯ā§āĻāĻā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻāĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻĢāĻ˛ā§ āĻāĻāĻāĻŋ āĻāĻāĻ HTTP āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻšā§āĻ°āĻžāĻ¸ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤, āĻ¯āĻž āĻāĻā§āĻāĻ¤āĻ° āĻĨā§āĻ°ā§āĻĒā§āĻ āĻāĻŦāĻ āĻāĻŽ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ.
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸ā§āĻ āĻāĻĒ - āĻĒāĻ°ā§āĻā§āĻˇāĻž
āĻāĻŽāĻ°āĻž āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻŋ, āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻāĻ¨ā§āĻ¯ Postgresql-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻ¸āĻ°āĻžāĻ¨ā§āĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨āĨ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ
db, err := sql.Open("postgres", dbConnectionString)
db.SetMaxOpenConns(8)
if err != nil {
return nil, err
}
āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻš, āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ, āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ
āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 1000 āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻāĻž āĻ¸ā§āĻĒāĻˇā§āĻ āĻ¯ā§ p99-āĻāĻ° āĻ˛ā§āĻā§āĻ¨ā§āĻ¸āĻŋ āĻ˛ā§āĻā§āĻ˛ 60ms āĻāĻ° SLO āĻ¸āĻš āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§āĻā§!
āĻāĻ°āĻ āĻāĻŋ?
āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 10000 āĻ āĻ¨ā§āĻ°ā§āĻ§ / āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋ 1000āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ = 10 āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° + 1
āĻāĻ° āĻāĻ°āĻ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻ¯āĻžāĻ!
āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 2000āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§
āĻ˛ā§āĻĄ āĻĻā§āĻŦāĻŋāĻā§āĻŖ āĻāĻ°āĻž āĻāĻāĻ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻĻā§āĻāĻžāĻ¯āĻŧ, āĻāĻĒāĻ°ā§āĻ° āĻŦāĻžāĻŽ āĻā§āĻ°āĻžāĻĢāĻāĻŋ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 2000āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻ¤ā§ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°ā§, p100 60ms āĻāĻ° āĻā§āĻ¯āĻŧā§ āĻāĻŽ, p99 SLO-āĻā§ āĻ¸āĻ¨ā§āĻ¤ā§āĻˇā§āĻ āĻāĻ°ā§āĨ¤
āĻāĻ°āĻā§āĻ° āĻĻāĻŋāĻ āĻĨā§āĻā§:
āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 10000 āĻ āĻ¨ā§āĻ°ā§āĻ§ / āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋ 2000āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ = 5 āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° + 1
āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ 3000āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§
āĻāĻāĻžāĻ¨ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ 3000ms āĻāĻ° āĻāĻŽ p99 āĻ˛ā§āĻā§āĻ¨ā§āĻ¸āĻŋ āĻ¸āĻš 60āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ 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 āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯āĻāĻžāĻŦā§ āĻāĻŽ p60 āĻ¸āĻš 100ms āĻāĻ° āĻāĻŽ!
āĻļāĻŋāĻāĻž āĻā§āĻ°āĻžāĻĢ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§ āĻ¸āĻāĻ¯ā§āĻāĻāĻŋ āĻāĻ° āĻ˛āĻā§āĻˇāĻŖā§āĻ¯āĻŧ āĻ¨āĻ¯āĻŧ! āĻāĻ° āĻāĻ°ā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ pg(*conn).query
â āĻāĻŽāĻ°āĻž āĻāĻāĻžāĻ¨ā§ āĻ¸āĻāĻ¯ā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻŋ āĻ¨āĻžāĨ¤
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻā§āĻ°āĻžāĻšāĻā§āĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻž āĻāĻŦāĻ āĻ -āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻĒā§āĻ°āĻŖ āĻšāĻā§āĻā§ āĻ¤āĻž āĻŦā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĨ¤ āĻā§āĻ°āĻžāĻšāĻā§āĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖā§āĻ° āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°ā§ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻā§āĻ¨āĻāĻŋ āĻā§āĻ°āĻšāĻŖāĻ¯ā§āĻā§āĻ¯ āĻāĻŦāĻ āĻā§āĻ¨āĻāĻŋ āĻ¨āĻ¯āĻŧ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ Go āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ¤ā§ āĻ¤ā§āĻ°āĻŋ āĻļāĻā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§ āĻā§āĻ˛ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°ā§ āĻ¯āĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĻā§ āĻ¸āĻšāĻ āĻāĻŦāĻ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸āĻ¯ā§āĻā§āĻ¯ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§āĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com