рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!
рдореИрдВ рдПрдХ рдЧреЗрдорд┐рдВрдЧ рдХрдВрдкрдиреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдСрдирд▓рд╛рдЗрди рдЧреЗрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╣рдорд╛рд░реЗ рд╕рднреА рдЦреЗрд▓реЛрдВ рдХреЛ рдХрдИ "рдмрд╛рдЬрд╛рд░реЛрдВ" (рдПрдХ "рдмрд╛рдЬрд╛рд░" рдкреНрд░рддрд┐ рджреЗрд╢) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ "рдмрд╛рдЬрд╛рд░" рдореЗрдВ рдПрдХ рджрд░реНрдЬрди рджреБрдирд┐рдпрд╛ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмреАрдЪ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдХрднреА-рдХрднреА рд╡реЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ)ред рдкреНрд░рддреНрдпреЗрдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╡реЗрдм / рдРрдк рд╕рд░реНрд╡рд░ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд▓реЛрдб рдХреЛ рджреБрдирд┐рдпрд╛ рднрд░ рдореЗрдВ / рд╕рд░реНрд╡рд░реЛрдВ рдореЗрдВ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдЕрдзрд┐рдХрддрдо 6K-8K рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ (рдпрд╣ рдЕрдзрд┐рдХрддрдо рд╣реИ, рдЕрдзрд┐рдХрддрд░ рдХрдИ рдмрд╛рд░ рдХрдо) рдФрд░ 200-300 рдЕрдиреБрд░реЛрдз рдкреНрд░рддрд┐ рджреБрдирд┐рдпрд╛ рдкреНрд░рддрд┐ рдкреНрд░рд╛рдЗрдо рдЯрд╛рдЗрдо рдорд┐рд▓рддрд╛ рд╣реИред
рдмрд╛рдЬрд╛рд░реЛрдВ рдФрд░ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╕рд╛рде рдРрд╕реА рд╕рдВрд░рдЪрдирд╛ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╣реЛ рд░рд╣реА рд╣реИ, рдЦрд┐рд▓рд╛рдбрд╝реА рдХреБрдЫ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдкрд┐рдЫрд▓реЗ рдЦреЗрд▓реЛрдВ рдореЗрдВ, рд╣рдо рд▓реЛрдЧреЛрдВ рдХреЛ рджреЗрд╢ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ / рджреЛ рдмрд╛рдЬрд╛рд░реЛрдВ (рдЕрдореЗрд░рд┐рдХрд╛ рдФрд░ рдпреВрд░реЛрдк) рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдХрдИ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рдеред рдЕрдЧрд▓рд╛ рдХрджрдо рдирдИ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рд╛рде рдЦреЗрд▓реЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдФрд░
рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╣реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рднреА рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдПрдХреАрдХрд░рдг рдХрд╛ рд╣реЛрдЧрд╛ред
рдЖрдЬ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рд╕реА рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдореБрдЭреЗ рдХреИрд╕реЗ рдЪреЗрдХ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдСрдирд▓рд╛рдЗрди рдЧреЗрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ (рдЕрдЧрд░ рдпрд╣ 50-200 рд╣рдЬрд╛рд░ рдпреВрдЬрд░реНрд╕ рд╣реИрдВ рддреЛ) рдирдП рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдЕрдЧрд▓рд╛ рдЧреЗрдо рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП "рднреЗрдЬреЗрдВ"ред рдкреВрд░реА рдкреНрд░рдгрд╛рд▓реА, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ (
PostgreSQL 11 ) рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рднрд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░, рдЕрдЧрд░ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЕрдзрд┐рдХрддрдо рдХрд╣рд╛рдВ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрддрд╛рдКрдВрдЧрд╛ рдЬреЛ рдЗрддрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ред
рдкрд╣рдЪрд╛рди
рдЕрддреАрдд рдореЗрдВ,
InnoGames GmbH рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЧреЗрдо рдЯреАрдо рдиреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд╡рд╛рджреЛрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрдХреНрд╕рд░ рдЕрдкрдиреЗ рд╕реНрд╡рд╛рдж рдФрд░ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЗрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рднреБрдЧрддрд╛рди рдХреЗ рд▓рд┐рдП рдХрдИ рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ, рдЬреЛ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди, рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рднреЗрдЬрддреЗ рд╣реИрдВред рдЗрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЕрдкрдиреЗ рдЕрдиреВрдареЗ рдЗрдВрдЯрд░рдлреЗрд╕ рднреА рдмрдирд╛рдП рдЬреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдЧреЗрдорд┐рдВрдЧ рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рдмрд╣реБрдд
рдкреИрд╕рд╛ рд╣реИ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдмрд╣реБрдд рд╕рд╛рд░реА рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ред рдпрд╣рд╛рдВ рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдбреЙрд▓рд░ рдФрд░ рдКрдкрд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рднреА рдЦреЗрд▓ рдХрдВрдкрдирд┐рдпрд╛рдВ рдмрд╣реБрдд рдмрд╛рд░ "рдмрдВрдж" рдЦреЗрд▓ рдмрдВрдж рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЪрд░рдг рдореЗрдВ рднреА рдХрд░рддреА рд╣реИрдВ, рдЕрдЧрд░ рд╡реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рдЕрдЧрд▓реЗ рдкрд╣рд┐рдпреЗ рдХреЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдкрд░ рд╕рдордп рдЦреЛрдирд╛ рд▓рд╛рднрд╣реАрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдПрдХреАрдХреГрдд рдордВрдЪ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рднреА рдмрд╛рд╣рд░реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди, рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рд╕рднреА рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдКрдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЦреЗрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЦреЗрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рд╡рд┐рдХрд╛рд╕ рдкрд░ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░рдирд╛ рд╣реИред
рдЗрд╕ рдордВрдЪ рдХреЛ
GameStarter рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:

рддреЛ, рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╕рднреА рднрд╡рд┐рд╖реНрдп рдХреЗ рдЗрдирдУрдЧреЗрдореНрд╕ рдЧреЗрдо рдЗрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИрдВ - рдорд╛рд╕реНрдЯрд░ рдФрд░ рдЧреЗрдо (рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ 11)ред рдорд╛рд╕реНрдЯрд░ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ (рд▓реЙрдЧрд┐рди, рдкрд╛рд╕рд╡рд░реНрдб рдЖрджрд┐) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ, рдХреЗрд╡рд▓ рдЦреЗрд▓ рдореЗрдВ рд▓реЙрдЧрд┐рди / рдкрдВрдЬреАрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реИред рдЦреЗрд▓ - рдЦреЗрд▓ рдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕, рдЬрд╣рд╛рдВ, рддрджрдиреБрд╕рд╛рд░, рд╕рднреА рдЧреЗрдо рдбреЗрдЯрд╛ рдФрд░ рдЗрдХрд╛рдЗрдпрд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЦреЗрд▓ рдХрд╛ рдореВрд▓ рд╣реИ, рдЬрд╣рд╛рдВ рдкреВрд░рд╛ рднрд╛рд░ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкреВрд░реА рд╕рдВрд░рдЪрдирд╛ рд╣рдорд╛рд░реЗ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЦреЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрддрдо рдСрдирд▓рд╛рдЗрди рдХреЗ рдмрд░рд╛рдмрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдРрд╕реА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреА рд╣реИред
рдХрд╛рд░реНрдп
рдХрд╛рд░реНрдп рд╕реНрд╡рдпрдВ рдпрд╣ рдерд╛: рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ (PostgreSQL 11), рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рд╕рднреА рд▓реЛрдб рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдЧреЗрдо рдореЗрдВ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдкреВрд░реЗ PowerEdge M630 рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░ (HV) рд╣реИрдВред
рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рд╕рдордп рдХрд╛рд░реНрдп
рдХреЗрд╡рд▓ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ , рдореМрдЬреВрджрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЛрдВ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдмрдирд╛рдпрд╛ рдерд╛ред
рдореИрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рддреБрд░рдВрдд рдХрд╣реВрдВрдЧрд╛, рдФрд░ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдиреЗ рдЦреБрдж рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдпрд╛, рдПрдХ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ред рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдЧреЗрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЪрд░рдг рдореЗрдВ рдереА рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЦреЗрд▓ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдиреБрд░реЛрдз рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рд▓реЛрдб рд╕реНрд╡рдпрдВ рд╣реА рдХрд╛рдлреА рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдкреНрд░рдХреГрддрд┐ рдмрджрд▓ рд╕рдХрддреА рд╣реИред рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рддреНрдпреЗрдХ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╣рдЬрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рд╕рд╛рде рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЗрд╕ рдЪрд░рдг рдореЗрдВ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдмрди рдЧрдпрд╛ рд╣реИред
рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓
рдХрд┐рд╕реА рднреА рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдХреА рддрд░рд╣, рдпрд╣ рд╕рднреА рдПрдХ рд▓реЛрдб рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдп CCU60 (CCU рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ 60 рдорд┐рдирдЯ) рдХреЛ
250,000 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдЖрднрд╛рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ (VU) рдХреА рд╕рдВрдЦреНрдпрд╛ CCU60 рд╕реЗ рдХрдо рд╣реИ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХреЛрдВ рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рджреЛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд░рд╛рдЙрдВрдб рдЕрдк рдФрд░
150,000 рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА VU рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдПрдХ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдЧреЗрдо рд╕реЗ рд▓реА рдЧрдИ рдереА:

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рд▓реЛрдб
150,000 VU рдкрд░ ~
20,000 рдЕрдиреБрд░реЛрдз / s рд╣реИ ред
рд╕рдВрд░рдЪрдирд╛
"рд╕реНрдЯреИрдВрдб" рдХреЗ рд▓рдХреНрд╖рдг
рдкрд┐рдЫрд▓реЗ
рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓реЛрдб рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереАред рдЖрдЧреЗ, рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдереЛрдбрд╝рд╛ рджреЛрд╣рд░рд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдКрдВрдЧрд╛ред

рдЖрд░реЗрдЦ рдореЗрдВ, рдиреАрд▓реЗ рд╡рд░реНрдЧ рд╣рдорд╛рд░реЗ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ (рдПрдЪрд╡реА) рд╣реИрдВ, рдПрдХ рдХреНрд▓рд╛рдЙрдб рдЬрд┐рд╕рдореЗрдВ рдХрдИ рд╕рд░реНрд╡рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдбреЗрд▓ рдПрдо 620 - рдПрдо 640)ред рдкреНрд░рддреНрдпреЗрдХ рдПрдЪрд╡реА рдкрд░, рдПрдХ рджрд░реНрдЬрди рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди (рд╡реАрдПрдо) рдХреЗрд╡реАрдПрдо (рд╡реЗрдм тАЛтАЛ/ рдРрдк рдФрд░ рдорд┐рдХреНрд╕ рдореЗрдВ рдбреАрдмреА) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рднреА рдирдП рд╡реАрдПрдо рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп, рдПрдХ рдЙрдкрдпреБрдХреНрдд рдПрдЪрд╡реА рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрддреБрд▓рди рдФрд░ рдЦреЛрдЬ рд╣реЛрддреА рд╣реИ рдФрд░ рдпрд╣ рд╢реБрд░реВ рдореЗрдВ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╣реЛрдЧрд╛ред
рдбреЗрдЯрд╛рдмреЗрд╕ (рдЧреЗрдо DB):
рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ db1 рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ M630 рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЕрд▓рдЧ HV
targer_hypervisor рдЖрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ред
Targer_hypervisor рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ:
рдбреЗрд▓ M_630
рдореЙрдбрд▓ рдХрд╛ рдирд╛рдо: Intel┬о Xeon┬о CPU E5-2680 v3 @ 2.50GHz
рд╕реАрдкреАрдпреВ (s): 48
рдкреНрд░рддрд┐ рдХреЛрд░ рдзрд╛рдЧрд╛ (рдУрдВ): 2
рдХреЛрд░ (рдПрд╕) рдкреНрд░рддрд┐ рд╕реЙрдХреЗрдЯ: 12
рд╕реЙрдХреЗрдЯ (рдУрдВ): 2
рд░реИрдо: 128 рдЬреАрдмреА
рдбреЗрдмрд┐рдпрди рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ 9 (рдЦрд┐рдВрдЪрд╛рд╡)
4.9.0-8-amd64 # 1 рдПрд╕рдПрдордкреА рдбреЗрдмрд┐рдпрди 4.9.130-2 (2018-10-27)
рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВрдбреЗрдмрд┐рдпрди рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ 9 (рдЦрд┐рдВрдЪрд╛рд╡)
4.9.0-8-amd64 # 1 рдПрд╕рдПрдордкреА рдбреЗрдмрд┐рдпрди 4.9.130-2 (2018-10-27)
lscpu
рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░: x86_64
CPU рдСрдк-рдореЛрдб (s): 32-рдмрд┐рдЯ, 64-рдмрд┐рдЯ
рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░: рд▓рд┐рдЯрд┐рд▓ рдПрдВрдбрд┐рдпрди
рд╕реАрдкреАрдпреВ (s): 48
рдСрди-рд▓рд╛рдЗрди рд╕реАрдкреАрдпреВ (рдПрд╕) рд╕реВрдЪреА: 0-47
рдкреНрд░рддрд┐ рдХреЛрд░ рдзрд╛рдЧрд╛ (рдУрдВ): 2
рдХреЛрд░ (рдПрд╕) рдкреНрд░рддрд┐ рд╕реЙрдХреЗрдЯ: 12
рд╕реЙрдХреЗрдЯ (рдУрдВ): 2
NUMA рдиреЛрдб (рдУрдВ): 2
рд╡рд┐рдХреНрд░реЗрддрд╛ ID: рдЬреЗрдиреБрдЗрдирдЗрдВрдЯреЗрд▓
рд╕реАрдкреАрдпреВ рдкрд░рд┐рд╡рд╛рд░: 6
рдореЙрдбрд▓: 63
рдореЙрдбрд▓ рдХрд╛ рдирд╛рдо: Intel┬о Xeon┬о CPU E5-2680 v3 @ 2.50GHz
рдХрджрдо: реи
рд╕реАрдкреАрдпреВ рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ: 1309.356
рд╕реАрдкреАрдпреВ рдЕрдзрд┐рдХрддрдо рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ: 3300.0000
рд╕реАрдкреАрдпреВ рдорд┐рдирдЯ рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ: 1200.0000
BogoMIPS: 4988.42
рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди: рд╡реАрдЯреА-рдПрдХреНрд╕
L1d рдХреИрд╢: 32K
L1i рдХреИрд╢: 32K
L2 рдХреИрд╢: 256K
L3 рдХреИрд╢: 30720K
NUMA рдиреЛрдб0 рд╕реАрдкреАрдпреВ (рдУрдВ): 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,36,36,38,40,42 , 44.46
NUMA рдиреЛрдб 1 CPU (s): 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43 , 45.47 рд╣реИ
рдЭрдВрдбреЗ: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse2 ss2s ht tm pbe syscall nx pdpe1gb rdtscpm рд▓рдЧрд╛рддрд╛рд░ qtmmopopopopopopopopopopop/live&hl=hi рдирд┐рд░рдВрддрд░ qtmmop рдПрд╕рдПрдордПрдХреНрд╕ рд╕реНрдерд╛ TM2 SSSE3 sdbg FMA cx16 xtpr PDCM pcid рдбреАрд╕реАрдП sse4_1 sse4_2 x2apic MOVBE popcnt tsc_deadline_timer рдПрдИрдПрд╕ xsave AVX f16c rdrand lahf_lm рдПрдмреАрдПрдо рдИрдкреАрдмреА invpcid_single ssbd ibrs ibpb stibp рдХреИрд╕рд░ tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust BMI1 AVX2 smep bmi2 erms invpcid CQM xsaveopt cqm_llc cqm_occup_llc dtherm рдЗрдбрд╝рд╛ arat pln pts flush_l1d
/ usr / bin / qemu-system-x86_64 --version
QEMU рдПрдореБрд▓реЗрдЯрд░ рд╕рдВрд╕реНрдХрд░рдг 2.8.1 (рдбреЗрдмрд┐рдпрди 1: 2.8 + dfsg-6 + deb9u5)
рдХреЙрдкреАрд░рд╛рдЗрдЯ ┬й 2003-2016 рдлреЗрдмреНрд░рд┐рд╕ рдмреЗрд▓рд╛рд░реНрдб рдФрд░ рдХреНрдпреВрдИрдПрдордпреВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕
Db1 рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ:
рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░: x86_64
рд╕реАрдкреАрдпреВ (s): 48
рд░реИрдо: 64 рдЬреАрдмреА
4.9.0-8-amd64 # 1 рдПрд╕рдПрдордкреА рдбреЗрдмрд┐рдпрди 4.9.144-3.1 (2019-02-19) x86_64_U / рд▓рд┐рдирдХреНрд╕
рдбреЗрдмрд┐рдпрди рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ 9 (рдЦрд┐рдВрдЪрд╛рд╡)
psql (PostgreSQL) 11.2 (рдбреЗрдмрд┐рдпрди 11.2-1.pgdg90 + 1)
рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд╕рд╛рде PostgreSQL рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиseq_page_cost = 1.0
random_page_cost = 1.1 # рд╣рдорд╛рд░реЗ рдкрд╛рд╕ SSD рд╣реИ
'/etc/postgresql/11/main/extension.conf' рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
log_line_prefix = '% t [% p-% l]% q% u @% h'
log_checkpoint = рдкрд░
log_lock_waits = рдкрд░
log_statement = ddl
log_min_duration_statement = 100
log_temp_files = 0
autovacuum_max_workers = 5
autovacuum_naptime = 10s
autovacuum_vacuum_cost_delay = 20ms
рд╡реИрдХреНрдпреВрдо_рдХреЛрд╕реНрдЯ_рд▓рд┐рдорд┐рдЯ = 2000
рдореЗрдиреНрдЯреЗрдиреЗрдВрд╕_рд╡рд░реНрдХ_рдореЗрдо = 128 рдПрдордмреА
synous_commit = рдмрдВрдж
checkpoint_timeout = 30 рдорд┐рдирдЯ
рд╕реБрди_рджрд╛рджрд░реА = '*'
рд╡рд░реНрдХ_рдо = 32 рдПрдордмреА
effective_cache_size = 26214MB # 50% рдЙрдкрд▓рдмреНрдз рдореЗрдореЛрд░реА
share_buffers = 16384MB # 25% рдЙрдкрд▓рдмреНрдз рдореЗрдореЛрд░реА
max_wal_size = 15GB
min_wal_size = 80MB
wal_level = hot_standby
max_wal_senders = 10
wal_compression = рдкрд░
рд╕рдВрдЧреНрд░рд╣_рдореЛрдб = рдкрд░
рдЖрд░реНрдХрд╛рдЗрд╡_рдХрдорд╛рдВрдб = '/ рдмрд┐рди / рд╕рдЪ'
рд╕рдВрдЧреНрд░рд╣_ рд╕рдордп = рез_режреж
hot_standby = on
wal_log_hints = рдкрд░
hot_standby_feedback = рдкрд░
hot_standby_feedback рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреВрдХ, рд╣рдордиреЗ рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдПрдХ рд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдореИрдВ рдмрд╛рдж рдореЗрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХреНрдпреЛрдВред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдореБрдЦреНрдп рд╕рдХреНрд░рд┐рдп рдЯреЗрдмрд▓ (рдирд┐рд░реНрдорд╛рдг, рдЙрддреНрдкрд╛рджрди, game_entity, рдмрд┐рд▓реНрдбрд┐рдВрдЧ, core_inventory_player_resource, рдЙрддреНрддрд░рдЬреАрд╡реА) рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ (рд▓рдЧрднрдЧ 80GB) рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рдЖрдмрд╛рдж рд╣реИрдВред
рдкреНрд░рддрд┐рдХреГрддрд┐:
SELECT * FROM pg_stat_replication; pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | backend_xmin | state | sent_lsn | write_lsn | flush_lsn | replay_lsn | write_lag | flush_lag | replay_lag | sync_priority | sync_state -----+----------+---------+---------------------+--------------+---------------------+-------------+-------------------------------+--------------+-----------+------------+------------+------------+------------+-----------------+-----------------+-----------------+---------------+------------ 759 | 17035 | repmgr | xl1db2 | xxxx | xl1db2 | 51142 | 2019-01-27 08:56:44.581758+00 | | streaming | 18/424A9F0 | 18/424A9F0 | 18/424A9F0 | 18/424A9F0 | 00:00:00.000393 | 00:00:00.001159 | 00:00:00.001313 | 0 | async 977 | 17035 | repmgr | xl1db3 |xxxxx | xl1db3 | 42888 | 2019-01-27 08:57:03.232969+00 | | streaming | 18/424A9F0 | 18/424A9F0 | 18/424A9F0 | 18/424A9F0 | 00:00:00.000373 | 00:00:00.000798 | 00:00:00.000919 | 0 | async
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░
рдлрд┐рд░, рд╡рд┐рднрд┐рдиреНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдЙрддреНрдкрд╛рджрдХ HV (prod_hypervisers) рдкрд░, 15 рдРрдк рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП: 8 рдХреЛрд░, 4 рдЬреАрдмреАред рдореБрдЦреНрдп рдмрд╛рдд рдЬреЛ рдпрд╣ рдХрд╣реА рдЬрд╛ рд╕рдХрддреА рд╣реИ: рдУрдкрдирдЬрдбрдХ 11.0.1 2018-10-16, рд╡рд╕рдВрдд, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
рд╣рд┐рдХрд╛рд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рддрдЪреАрдд (hikari.maximum-pool-size: 50)
рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг
рдкреВрд░реЗ рд▓реЛрдб рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░
admin.loadtest рдФрд░ рдХрдИ
рдЬрдирд░реЗрдЯрд░ N.loadtest рд╕рд░реНрд╡рд░ рд╣реЛрддреЗ рд╣реИрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд╣рд╛рдВ 14 рдереЗ)ред
рдЬрдирд░реЗрдЯрд░N.loadtest - "рдирдВрдЧреЗ" рд╡реАрдПрдо рдбреЗрдмрд┐рдпрди рд▓рд┐рдирдХреНрд╕ 9, рд╕реНрдерд╛рдкрд┐рдд рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде 8. 32 рдХрд░реНрдиреЗрд▓ / 32 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯред рд╡реЗ рдЧреИрд░-рдЙрддреНрдкрд╛рджрдХ рдПрдЪрд╡реА рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ рддрд╛рдХрд┐ рдЧрд▓рддреА рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реАрдПрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рд░ рди рд╕рдХреЗрдВред
admin.loadtest - рдбреЗрдмрд┐рдпрди рд▓рд┐рдирдХреНрд╕ 9
рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди , 16 рдХреЛрд░ / 16 рдЧрд┐рдЧреНрд╕, рдпрд╣ рдЬреЗрдирдХреАрдВрд╕, рдЬреЗрдПрд▓рдЯреАрд╕реА рдФрд░ рдЕрдиреНрдп рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╣рддреНрд╡рд╣реАрди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЪрд▓рд╛рддрд╛ рд╣реИред
рдЬреЗрдПрд▓рдЯреАрд╕реА -
рдЬреЗрдореАрдЯрд░ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдХреЗрдВрджреНрд░ ред Py / Django рдореЗрдВ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдЬреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг, рд╕рд╛рде рд╣реА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреА рд╣реИред
рдЯреЗрд╕реНрдЯ рд▓реЙрдиреНрдЪ рдпреЛрдЬрдирд╛

рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
- рдкрд░реАрдХреНрд╖рдг рдЬреЗрдирдХрд┐рдВрд╕ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХ рдиреМрдХрд░реА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдлрд┐рд░ рдЖрдкрдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдкрд░реАрдХреНрд╖рдг рдкреИрд░рд╛рдореАрдЯрд░ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдкрд░реАрдХреНрд╖рд╛ - рдкрд░реАрдХреНрд╖рд╛ рдХреА рдЕрд╡рдзрд┐
- RAMPUP - "рд╡рд╛рд░реНрдо-рдЕрдк" рд╕рдордп
- THREAD_COUNT_TOTAL - рд╡рд░реНрдЪреБрдЕрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ (VU) рдпрд╛ рдереНрд░реЗрдбреНрд╕ рдХреА рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдЦреНрдпрд╛
- TARGET_RESPONSE_TIME рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдЗрд╕рдХреА рдорджрдж рд╕реЗ рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддрджрдиреБрд╕рд╛рд░ рдкрд░реАрдХреНрд╖рдг рд▓реЛрдб рдХреЛ рдЙрд╕ рд╕реНрддрд░ рдкрд░ рд░рдЦреЗрдЧрд╛ рдЬрд┐рд╕ рдкрд░ рд╕рдВрдкреВрд░реНрдг рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред
- рд▓рд╛рдВрдЪ
- рдЬреЗрдирдХрд┐рдиреНрд╕ Gitlab рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЬрдирд╛ рдХреЛ рдХреНрд▓реЛрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ JLTC рдХреЛ рднреЗрдЬрддрд╛ рд╣реИред
- рдЬреЗрдПрд▓рдЯреАрд╕реА рдПрдХ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реАрдПрд╕рд╡реА рд╕рд░рд▓ рд▓реЗрдЦрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ)ред
- JLTC рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдЦреНрдпрд╛ (VREAD_COUNT_TOTAL) рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП Jmeter рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред
- JLTC рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдбрд░рдЧреЗрдВрдиреЗрдЯрд░ рдПрди рдЬрдирд░реЗрдЯрд░ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЬреЗрдореАрдЯрд░ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди,
JMeter- рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ CSV рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдФрд░ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдПрдХ
рдкрд╛рдЧрд▓ рдЧрддрд┐ рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ -
рдбреЗрдорди рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛
рдЧрдпрд╛ рдерд╛ (рдПрдХ рдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ), рдЬреЛ рдЗрд╕реЗ
"рдордХреНрдЦреА рдкрд░" рдмрдирд╛рддрд╛ рд╣реИред
рдЯреЗрд╕реНрдЯ рдкреНрд▓рд╛рди
рдЖрдк
рдпрд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЬрдирд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ
рд╣реИрдВ ред
рдкрдВрдЬреАрдХрд░рдг / рд▓реЙрдЧрд┐рди рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдХрдИ
рдереНрд░реВрдкреБрдЯ рдирд┐рдпрдВрддреНрд░рдХ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЧреЗрдо рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реВрдкреБрдЯ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ, рдПрдХ
рдореЙрдбреНрдпреВрд▓ рдирд┐рдпрдВрддреНрд░рдХ рд╣реЛрддрд╛ рд╣реИ , рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рд╣рдордиреЗ рдЧреНрд░реВрд╡реА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рд╣рдорд╛рд░реЗ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдЯреНрд░рд┐рдХреНрд╕ рдЦреЛрдЬреЗ (рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛):
VU / рдереНрд░реЗрдбреНрд╕
рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ Jenkins рдореЗрдВ рдиреМрдХрд░реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╕рдордп THREAD_COUNT_TOTAL рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ VU рдХреА рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рддрд░рд╣ Jmeter рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде VU рдХреА рдЕрдВрддрд┐рдо рд╕рдВрдЦреНрдпрд╛ рд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдВред рдпрд╣ рднрд╛рдЧ
рдирд┐рдпрдВрддреНрд░рдХ / рдкреНрд░рд╛рд╡рдзрд╛рди рдирд╛рдордХ рднрд╛рдЧ рдореЗрдВ JLTC рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рд╣рдо VU рдереНрд░реЗрдбреНрд╕_num рдХреА рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЛ 200-300 рдереНрд░реЗрдб рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдкрд░реНрдпрд╛рдкреНрдд рдЖрдХрд╛рд░ -Xmsm -Xmxm рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдо рдПрдХ рдЬреЗрдореАрдЯрд░-рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдореЗрдореЛрд░реА рд╡реИрд▓реНрдпреВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВ рдЖрд╡рд╢реНрдпрдХ-memory -for_jri (JRI - рдореИрдВ Jmeter- рд╕рд░реНрд╡рд░ рдХреЗ рдмрдЬрд╛рдп Jmeter рджреВрд░рд╕реНрде рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ)ред
- рдереНрд░реЗрдбреНрд╕_рдирдо рдФрд░ рдЖрд╡рд╢реНрдпрдХ_рдореЗрдореЛрд░реА_рдлреЛрд░реНрд╕реНрд░реА рд╕реЗ рд╣рдо рдЬреЗрдореАрдЯрд░-рд╕рд░реНрд╡рд░ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛: рд▓рдХреНрд╖реНрдп_рдорд╛рдЙрдВрдЯ_рдЬрдбрд╝реА рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдореЗрдореЛрд░реА рдХрд╛ рдХреБрд▓ рдореВрд▓реНрдп рдкрд╛рддреЗ рд╣реИрдВ : рдЖрд╡рд╢реНрдпрдХ_рдорд┐рдореЛрд░реА_рдЯреЛрдЯрд▓ ред
- рд╣рдо рд╕рднреА loadgeneratorN рдЬрдирд░реЗрдЯрд░ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╕реЙрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдореЗрдореЛрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЬреЗрдореАрдЯрд░-рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рддрдХ рдЪрд╛рд▓реВ_рдорд╛рдЙрдВрдЯ_рдЬрд╛рд░реА рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЯрд╛рд░рдЧреЗрдЯ_рдорд╛рдЙрдВрдЯ_рдЬрд╛рд░реА рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ ред
- (рдпрджрд┐ рдЬрдирд░реЗрдЯрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдХреБрд▓ рдореЗрдореЛрд░реА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреВрд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЬреЛрдбрд╝реЗрдВ)
- рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЬрдирд░реЗрдЯрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдиреЗрдЯрд╕реНрдЯреИрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╣рдо рд╕рднреА рд╡реНрдпрд╕реНрдд рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ (рдЬреЛ рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реИрдВ) рдкрд░ рдЬрдореАрдЯрд░-рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ:
netstat_cmd= 'netstat -tulpn | grep LISTEN' stdin, stdout, stderr = ssh.exec_command(cmd1) used_ports = [] netstat_output = str(stdout.readlines()) ports = re.findall('\d+\.\d+\.\d+\.\d+\:(\d+)', netstat_output) ports_ipv6 = re.findall('\:\:\:(\d+)', netstat_output) p.wait() for port in ports: used_ports.append(int(port)) for port in ports_ipv6: used_ports.append(int(port)) ssh.close() for i in range(1, possible_jris_on_host + 1): port = int(random.randint(10000, 20000)) while port in used_ports: port = int(random.randint(10000, 20000))
- рд╣рдо рд╕рднреА рдЪрд▓ рд░рд╣реЗ рдЬреЗрдореАрдЯрд░-рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдкрддреЗ рдХреЗ рдкрддреЗ рдкрд░ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ: рдкреЛрд░реНрдЯ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯрд░ 13: 15576, рдЬрдирд░реЗрдЯрд░ 9: 14015, рдЬрдирд░реЗрдЯрд░ 11: 19152, рдЬрдирд░реЗрдЯрд░ 14: 12125, рдЬрдирд░реЗрдЯрд░ 2: 17602
- рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдкрд░рд┐рдгрд╛рдореА рд╕реВрдЪреА рдФрд░ рдереНрд░реЗрдб_рдкрд░_рд╣реЙрд╕реНрдЯ JMeter-рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ:
REMOTE_TESTING_FLAG=" -R $REMOTE_HOSTS_STRING" java -jar -Xms7g -Xmx7g -Xss228k $JMETER_DIR/bin/ApacheJMeter.jar -Jserver.rmi.ssl.disable=true -n -t $TEST_PLAN -j $WORKSPACE/loadtest.log -GTHREAD_COUNT=$THREADS_PER_HOST $OTHER_VARS $REMOTE_TESTING_FLAG -Jjmeter.save.saveservice.default_delimiter=,
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд░реАрдХреНрд╖рдг 300 Jmeter рд╕рд░реНрд╡рд░, 500 рдзрд╛рдЧреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗ рдПрдХ рд╕рд╛рде рд╣реБрдЖ, рдЬрд╛рд╡рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ Jmeter рд╕рд░реНрд╡рд░ рдХрд╛ рд▓реЙрдиреНрдЪ рдкреНрд░рд╛рд░реВрдк рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛:
nohup java -server -Xms1200m -Xmx1200m -Xss228k -XX:+DisableExplicitGC -XX:+CMSClassUnloadingEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -Djava.net.preferIPv6Addresses=true -Djava.net.preferIPv4Stack=false -jar "/tmp/jmeter-JwKse5nY/bin/ApacheJMeter.jar" -Jserver.rmi.ssl.disable=true "-Djava.rmi.server.hostname=generator12.loadtest.ig.local" -Duser.dir=/tmp/jmeter-JwKse5nY/bin/ -Dserver_port=13114 -s -Jpoll=49 > /dev/null 2>&1
50ms
рдХрд╛рд░реНрдп рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдмрдЬрд╛рдп рдЗрд╕реЗ рдУрд╡рд░рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдФрд░ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВред рдЗрддрдиреЗ рд╕рд╛рд░реЗ Jmeter рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрддрд░ рдкрд░ рд▓реЛрдб рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдирд╣реАрдВ рдорд╛рд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ
TARGET_RESPONSE_TIME рдкреИрд░рд╛рдореАрдЯрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╣рдо рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рдереЗ рдХрд┐
50ms рдЗрд╖реНрдЯрддрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
JMeter рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯрд╛рдЗрдорд░ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдереНрд░реВрдкреБрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕реЗ рдХрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди
JSR223- рдЯрд╛рдЗрдорд░ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк
рд╡рд░реНрддрдорд╛рди рд╕рд┐рд╕реНрдЯрдо
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВред рдЯрд╛рдЗрдорд░ рд╣реА рдореБрдЦреНрдп
рд╡реНрдпрд╡рд╣рд╛рд░ рдмреНрд▓реЙрдХ рдореЗрдВ рд╣реИ:

рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг (рдбреЗрдореЙрди)
рдЧреНрд░рд╛рдлрд╛рдирд╛ рдореЗрдВ рдЧреНрд░рд╛рдл рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХрддреНрд░рд┐рдд рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╣реЛрдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ JLTC рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛ рд╕рдХреЗред
рдРрд╕рд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 16k-20k рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ 4 рдШрдВрдЯреЗ рдореЗрдВ рдпрд╣ рд╕реМ рдЬреАрдмреА рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреА CSV рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдиреМрдХрд░реА рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдЬрд░реВрд░реА рдерд╛ рдЬреЛ рд╣рд░ рдорд┐рдирдЯ рдбреЗрдЯрд╛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рдореБрдЦреНрдп рдлрд╛рдЗрд▓ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИред

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рд╣рдо рдбреЗрдЯрд╛ рдХреЛ CSV рдлрд╝рд╛рдЗрд▓ result.jtl рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ jmeter-client рджреНрд╡рд╛рд░рд╛ рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕реЗ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ (рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЦрд╛рд▓реА рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдорд╛рди рдЖрдХрд╛рд░ рдХреА рд╕рдорд╛рди FD рд╣реЛрдЧреА):
with open(jmeter_results_file, 'r+') as f: rows = f.readlines() f.seek(0) f.truncate(0) f.writelines(rows[-1])
- рд╣рдо рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ temp_result.jtl рдкрд░ рд░реАрдб рдбреЗрдЯрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
rows_num = len(rows) open(temp_result_filename, 'w').writelines(rows[0:rows_num])
- рд╣рдордиреЗ рдлрд╝рд╛рдЗрд▓ temp_result.jtl рдкрдврд╝реАред рд╣рдо "рдорд┐рдирдЯреЛрдВ" рдореЗрдВ рдкрдврд╝рд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
for r in f.readlines(): row = r.split(',') if len(row[0]) == 13: ts_c = int(row[0]) dt_c = datetime.datetime.fromtimestamp(ts_c/1000) minutes_data.setdefault(dt_c.strftime('%Y_%m_%d_%H_%M'), []).append(r)
- рдорд┐рдирдЯ_рдбрд╛рдЯрд╛ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдорд┐рдирдЯ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ the_parse / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред (рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдорд┐рдирдЯ рдореЗрдВ рдЕрдкрдиреА рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рд╣реЛрддреА рд╣реИ, рдлрд┐рд░ рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдпрд╣ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦреЗрдЧрд╛ рдХрд┐ рдбреЗрдЯрд╛ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдЖрдпрд╛ рд╣реИ):
for key, value in minutes_data.iteritems():
- рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ, рд╣рдо in_parse рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рдПрдХ рдорд┐рдирдЯ рдХреЗ рднреАрддрд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдПрдХрддреНрд░реАрдХрд░рдг рдФрд░ JLTC рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИ:
for filename in os.listdir(temp_to_parse_path): data_file = os.path.join(temp_to_parse_path, filename) file_mod_time = os.stat(data_file).st_mtime last_time = (time.time() - file_mod_time) if last_time > 60: logger.info('[DAEMON] File {} was not modified since 1min, adding to parse list.'.format(data_file)) files_to_parse.append(data_file)
- рдпрджрд┐ рдРрд╕реА рдлрд╛рдЗрд▓реЗрдВ (рдПрдХ рдпрд╛ рдХрдИ) рд╣реИрдВ, рддреЛ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкрд╛рд░реНрд╕_рдПрд╕рд╕реАрд╡реА_рдбреЗрдЯрд╛ рдлрд╝рдВрдХреНрд╢рди (рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓) рдореЗрдВ рдкрд╛рд░реНрд╕ рднреЗрдЬрддреЗ рд╣реИрдВ:
for f in files_to_parse: logger.info('[DAEMON THREAD] Parse {}.'.format(f)) t = threading.Thread( target=parse_csv_data, args=( f, jmeter_results_file_fields, test, data_resolution)) t.start() threads.append(t) for t in threads: t.join()
рдбреЗрдореЙрди рд╣реА cron.d рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рд╣рд░ рдорд┐рдирдЯ:
рдбреЗрдорди рд╣рд░ рдорд┐рдирдЯ cron.d.d рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:
* * * * * root sleep 21 && /usr/bin/python /var/lib/jltc/manage.py daemon
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣
рдордХреНрдЦреА рдкрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдордВрдЬреВрд░реА рджреЗ рджреА рд╣реИред
рдкрд░рд┐рдгрд╛рдо
рдРрдк
рд╣рдорд╛рд░реЗ 150,000 рдЖрднрд╛рд╕реА рдЦрд┐рд▓рд╛рдбрд╝реА:

рдкрд░реАрдХреНрд╖рдг 50ms рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХреЛ "рдореИрдЪ" рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓реЛрдб рдЦреБрдж 16k-18k рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмреАрдЪ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдХреВрджрддрд╛ рд╣реИ:

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рд▓реЛрдб (15 рдРрдк)ред рджреЛ рд╕рд░реНрд╡рд░ "рдЕрдирд▓рдХреА" рд╣реИрдВ рдЬреЛ M620 рдХреЗ рдзреАрдореЗ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ:

рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп (рдРрдк рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП):

рдбрд╛рдЯрд╛рдмреЗрд╕
Db1 (VM) рдкрд░ CPU рдЙрдкрдпреЛрдЧ:

рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдкрд░ CPU рдЙрдкрдпреЛрдЧ:

рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ рд▓реЛрдб рдХрдо рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ 48 рдЕрд╕рд▓реА рдХреЛрд░ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдкрд░ 24
рд╣рд╛рдЗрдкрд░рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛрд░ рд╣реИрдВред
рдЕрдзрд┐рдХрддрдо ~ 250K рдХреНрд╡реЗрд░реАрдЬрд╝ / s рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ (83% рдЪрдпрди, 3% - рдЖрд╡реЗрд╖рдг, 11.6% - рдЕрдкрдбреЗрдЯ (90% HOT), 1.6% рдбрд┐рд▓реАрдЯ) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

рдСрдЯреЛрд╡реИрдХреНрдпреБрдо_рд╡реИрдХреНрдпреВрдо_рд╕реЗрд▓реЗ_рдлреИрдХреНрдЯрд░ = 0.2 рдХреЗ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗ рд╕рд╛рде, рдореГрдд рдЯреНрдпреВрдкрд▓реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдмрдврд╝реА (рддрд╛рд▓рд┐рдХрд╛ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде), рдЬрд┐рд╕рд╕реЗ рдХрдИ рдмрд╛рд░ рд╢реЙрд░реНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЬрд┐рд╕рдиреЗ рдкреВрд░реЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдХрдИ рдмрд╛рд░ рдмрд░реНрдмрд╛рдж рдХрд░ рджрд┐рдпрд╛ред рдореБрдЭреЗ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ autovacuum_vacuum_scale_factor рдкрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдХреБрдЫ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡реГрджреНрдзрд┐ "рд╡рд╢ рдореЗрдВ" рдХрд░рдирд╛ рдкрдбрд╝рд╛:
рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ ... рд╕реЗрдЯ (рдСрдЯреЛрд╡реИрдХреЛрдо_рд╡реИрдХреНрдпреВрдо_рд╕реЗрд▓реЗ_рдлреИрдХреНрдЯрд░ = ...)ALTER TABLE рдирд┐рд░реНрдорд╛рдг SET (autovacuum_vacuum_scale_factor = 0.10);
рд╡реИрдХрд▓реНрдкрд┐рдХ рдЯреЗрдмрд▓ рдЙрддреНрдкрд╛рджрди SET (autovacuum_vacuum_scale_factor = 0.01);
ALTER TABLE game_entity SET (autovacuum_vacuum_scale_factor = 0.01);
ALTER TABLE game_entity SET (autovacuum_analyze_scale_factor = 0.01);
рд╡реИрдХрд▓реНрдкрд┐рдХ рдЯреЗрдмрд▓ SET (autovacuum_vacuum_scale_factor = 0.01);
рд╡реИрдХрд▓реНрдкрд┐рдХ рдЯреЗрдмрд▓ SET (autovacuum_analyze_scale_factor = 0.01);
ALTER TABLE core_inventory_player_resource SET (autovacuum_vacuum_scale_factor = 0.10);
рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛ рдЙрддреНрддрд░рдЬреАрд╡реА рд╕реЗрдЯ (рдСрдЯреЛрд╡реИрдХреНрдпреВрдо_рд╡реИрдХреБрдо_рд╕реЗрд▓реЗ_рдлреИрдХреНрдЯрд░ = 0.01);
ALTER TABLE рдЙрддреНрддрд░рдЬреАрд╡реА SET (autovacuum_analyze_scale_factor = 0.01);

рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, row_fetched рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдХрд░реАрдм рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП +, рдЬреЛ рд╣рдо, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ:

hot_standby_feedback
рд╕рдорд╕реНрдпрд╛
hot_standby_feedback рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдереА, рдЬреЛ
рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ рдпрджрд┐ рдЗрд╕рдХреЗ
рд╕реНрдЯреИрдВрдбрдмрд╛рдп рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдкрд╛рд╕ рд╡рд╛рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред рдкреНрд░рд▓реЗрдЦрди (https://postgrespro.ru/docs/postgrespro/11/runtime-config-replication) рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ "рд╣реЙрдЯ рд╕реНрдЯреИрдВрдбрдмрд╛рдп рд╕рд░реНрд╡рд░ рдорд╛рд╕реНрдЯрд░ рдпрд╛ рд╢реНрд░реЗрд╖реНрда рджрд╛рд╕ рдХреЛ рдЙрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВред" рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдмрдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЪрд╛рд▓реВ рдерд╛ред рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рджреБрдГрдЦрдж рдкрд░рд┐рдгрд╛рдо рд╣реБрдП, рдЕрдЧрд░ 2 рд╕реНрдЯреИрдВрдбрдмрд╛рдп рд╕рд░реНрд╡рд░ рд╣реИрдВ рдФрд░ рд▓реЛрдб рдХреЗ рджреМрд░рд╛рди рдкреНрд░рддрд┐рдХреГрддрд┐ рдЕрдВрддрд░рд╛рд▓ рд╢реВрдиреНрдп (рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ) рд╕реЗ рднрд┐рдиреНрди рд╣реИ, рддреЛ рдЖрдк рдРрд╕реА рддрд╕реНрд╡реАрд░ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдкреВрд░реЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдкрддрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:


рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЬрдм hot_standby_feedback рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ, рддреЛ VACUUM "рдореГрдд" tuples рдХреЛ рд╣рдЯрд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЕрдЧрд░ рд╕реНрдЯреИрдВрдбрдмрд╛рдп рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рд▓реЗрдирджреЗрди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд▓реЗрдирджреЗрди рдЖрдИрдбреА рдореЗрдВ рдкреАрдЫреЗ рд╣реИрдВред рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдЦ
рдХреНрдпрд╛ PostgreSQL рдореЗрдВ hot_standby_feedback рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░рддрд╛ рд╣реИ :
xl1_game=# VACUUM VERBOSE core_inventory_player_resource; INFO: vacuuming "public.core_inventory_player_resource" INFO: scanned index "core_inventory_player_resource_pkey" to remove 62869 row versions DETAIL: CPU: user: 1.37 s, system: 0.58 s, elapsed: 4.20 s тАжтАжтАж... INFO: "core_inventory_player_resource": found 13682 removable, 7257082 nonremovable row versions in 71842 out of 650753 pages <b>DETAIL: 3427824 dead row versions cannot be removed yet, oldest xmin: 3810193429</b> There were 1920498 unused item pointers. Skipped 8 pages due to buffer pins, 520953 frozen pages. 0 pages are entirely empty. CPU: user: 4.55 s, system: 1.46 s, elapsed: 11.74 s.
рдореГрдд рдЯреБрдкрд▓реНрд╕ рдХреА рдЗрддрдиреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рдЪрд┐рддреНрд░ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИред рдпрд╣рд╛рдБ рджреЛ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде hot_standby_feedback рдЪрд╛рд▓реВ рдФрд░ рдмрдВрдж рд╣реИ:

рдФрд░ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рд╣рдорд╛рд░реА рдкреНрд░рддрд┐рдХреГрддрд┐ рдЕрдВрддрд░рд╛рд▓ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛:

рдирд┐рд╖реНрдХрд░реНрд╖
рдпрд╣ рдкрд░реАрдХреНрд╖рдг, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ (рдпрд╛ рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ) рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдЦреЗрд▓ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдЗрд╕ рдЪрд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рд╡рд╛рдВрдЫрд┐рдд рднрд╛рд░ рдХреЛ рдЕрд╡рд╢реЛрд╖рд┐рдд рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИ, рдЬреЛ рдЖрдЧреЗ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╣рд░реА рдмрддреНрддреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рдж рдХреЗ рдЪрд░рдгреЛрдВ рдореЗрдВ, рдмреБрдирд┐рдпрд╛рджреА рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд╕рд╛рджрдЧреА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдХреНрд░рдорд┐рддреЛрдВ рдХреА рдЕрддрд┐рд░реЗрдХ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рде рд╣реА рдЧреИрд░-рдЕрдиреБрдХреНрд░рдорд┐рдд рд░реАрдбрд┐рдВрдЧ, рдЖрджрд┐) рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪрд░рдг рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рдкрд╣рд▓реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЬрд▓реНрдж рд╣реА, рдореИрдВ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред
рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!
рд╣рдорд╛рд░реЗ
GitHub рд╕рд┐рд░реНрдл рдорд╛рдорд▓реЗ рдореЗрдВ;)