рдпрд╣ рд╣реИрдХрд░ рд╕рдорд╛рдЪрд╛рд░ рдФрд░ GitHub рдХреЗ рдирд┐рд╡рд╛рд╕рд┐рдпреЛрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдЯрд┐рдбреНрдбреА, рд╕рдмреНрдЬрд╝реА, рдзреАрдореА_рдХреБрдХрд░, k6 рдФрд░ рдШреЗрд░рд╛рдмрдВрджреАред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ DICE, EA рдФрд░ Buoyant, рд╕рд╛рде рд╣реА Kubernetes рдФрд░ Load Impact рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред
рддрд╕реНрд╡реАрд░реЗрдВ - рд╡рд┐рдХреНрдЯрд░ рдлреНрд░реАрдЯрд╛рд╕ - рдЕрдирдкреНрд▓реИрд╢рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгред рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИрдВред
рдлреНрд▓рд╛рд╕реНрдХ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЯрд┐рдбрд╕реНрдЯ рдХреЗ рд▓реЗрдЦрдХ рд╕реНрд╡рд┐рд╕ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдмреАрдЪ рдХрдВрдкреНрдпреВрдЯрд░ рдЧреЗрдо рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ DICE рдФрд░ EA рдХрдВрдкрдирд┐рдпрд╛рдВ рд╣реИрдВред
рдЙрдкрдХрд░рдг рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ: рдЯрд┐рдбреНрдбреА ("рдЯрд┐рдбреНрдбреА") рдХреАрдбрд╝реЗ (рдЖрднрд╛рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ) рдХреЗ рдЭреБрдВрдб рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рд╕рд╛рдЗрдЯ рдкрд░ "рд╣рдорд▓рд╛" рдХрд░рддрд╛ рд╣реИред рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ -
рдЬреАрдИрд╡реЗрдВрдЯ ред рдпрд╣рд╛рдБ рдПрдХ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
from locust import HttpLocust, TaskSet, task class WebsiteTasks(TaskSet): def on_start(self): self.client.post("/login", { "username": "test_user", "password": "" }) @task def index(self): self.client.get("/") @task def about(self): self.client.get("/about/") class WebsiteUser(HttpLocust): task_set = WebsiteTasks min_wait = 5000 max_wait = 15000
рдЯрд┐рдбреНрдбреА рдЕрдиреБрд░реЛрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдорд╛рдирдХ рдкрд╛рдпрдерди рдЯреВрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдРрдб-рдСрди HTTP рдФрд░ рдПрд╕рдПрд╕рдПрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рджреГрд╢реНрдп рдмрдирд╛рддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдЕрдиреБрд░реЛрдз
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЯрд┐рдбреНрдбреА рдкрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдзреЛрдЦрд╛ рдкрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг рд▓рдЧрднрдЧ рд╕рд╛рдд рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╣реИред рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди, рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рд╡реНрдпрд╛рдкрдХ рд╕рдореБрджрд╛рдп рдХрд╛ рдЧрдарди рд╣реБрдЖ рд╣реИ - рдЧреАрдерд╣рдм рдкрд░
10 рд╣рдЬрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд┐рддрд╛рд░реЗ ред рдЯрд┐рдбреНрдбреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпреБрджреНрдз рдХреЗ рдореИрджрд╛рди рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдмреИрдЯрд▓реЙрдЧ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлреНрд▓рд╛рд╕реНрдХ рдврд╛рдВрдЪреЗ рдХреЗ рд▓реЗрдЦрдХ рдЕрд░реНрдорд┐рди рд░реЛрдирд╛рдХрд░
рдиреЗ рдЙрдкрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдХрд╛рд░рд╛рддреНрдордХ
рдмрд╛рдд рдХреА ред
рдЯрд┐рдбреНрдбреЗ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдмреАрдЪ
, рд╕рд╛рдЗрдЯреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрдо рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЖрд╡рдзрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдЯреВрд▓ рдХреЛ рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рднреА рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди
CSV рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдЕрдкрд▓реЛрдб рдХрд░рдХреЗ рдФрд░ рдЯреЗрдмрд▓ рдПрдбрд┐рдЯрд░ рдореЗрдВ рдЧреНрд░рд╛рдлрд╝ рд░реЗрдВрдбрд░ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЯрд┐рдбреНрдбреА рдХреЛ рдХрд░реАрдм рд╕реЗ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдкрдХрд░рдг рдХреЗ
рдкреНрд░рд▓реЗрдЦрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдкрд╛рдЗрдерди рдореАрдЯрдЕрдк рдореЗрдВ рдЕрд▓реЗрдХреНрд╕реА рд░реЛрдорд╛рдиреЛрд╡
рджреНрд╡рд╛рд░рд╛ рд╡реЙрд░рдЧреИрдорд┐рдВрдЧ рд╕реЗ рдПрдХ
рдкреНрд░рджрд░реНрд╢рди рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╣ рдЙрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВред
рдЧреЛ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ HTTP рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкрд░ рдЬрд╛рдПрдВред рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓реЛрдб рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдЯреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмреНрдЬрд┐рдпреЛрдВ рдХреЛ рдУрдкрди
рд╕реЛрд░реНрд╕ рд╕реЛрд░реНрд╕рдЧреНрд░рд╛рдл рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд▓рд┐рдлрд╝реНрдЯ, рдЙрдмреЗрд░ рдФрд░
рдпреЗрд▓реНрдк рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЬрди рдерд╛ред
рд╡рдирд╕реНрдкрддрд┐ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рд╕реЗрдЯ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ "рдмрдордмрд╛рд░реА" рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:
echo "GET http://localhost/" | vegeta attack -duration=5s | tee results.bin | vegeta report
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡рдирд╕реНрдкрддрд┐ рдорд╛рдирдХ рдХрдорд╛рдВрдб рд░реАрдбрд┐рдВрдЧ рд╕реНрдЯреНрд░реАрдо (рд╕реНрдЯрдбрд┐рди) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди рдЧреВрдВрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЕрд╡рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░реАрдХреНрд╖рдг рдХреА рдЕрд╡рдзрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рд░рд┐рдкреЛрд░реНрдЯ results.bin рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрдирд░реЗрдЯ рдХреА рдЬрд╛рдПрдЧреАред рд╡рдирд╕реНрдкрддрд┐ рдкрд╛рда рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди
рд░реЗрдЦрд╛рдВрдХрди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо
рд╣реИ ред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдирд┐рдореНрди рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
vegeta plot -title=Results results.bin > results-plot.html
рдЧреАрддрд╛рд╣рдм рдкрд░ рдПрдХ рдмрдбрд╝реЗ рд╕рдореБрджрд╛рдп рдиреЗ рд╡реЗрдЬреЗрдЯрд╛ -
12 рд╣рдЬрд╛рд░ рд╕рд┐рддрд╛рд░реЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛ рдЧрдарди
рдХрд┐рдпрд╛ рд╣реИ ред рдЯреВрд▓ рдХрд╛
рдЙрдкрдпреЛрдЧ рдХреБрдмрд░реНрдиреЗрдЯреЗрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА
рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рддрдм рд╕рдмреНрдЬрд┐рдпреЛрдВ рдиреЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд▓рдЧрднрдЧ 10 рдорд┐рд▓рд┐рдпрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╣рдЬрд╛рд░реЛрдВ рдиреЛрдбреНрд╕ рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ред
рд╕рдмреНрдЬрд╝реА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЭрдВрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝
GitHub рдкрд░ рднрдВрдбрд╛рд░ рдореЗрдВ рд╣реИ ред рддреБрдо
рднреА рд╡рд╣рд╛рдБ precompiled рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЗрдВ
рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред
рдпрд╣ рдЧреЛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╕рд░реНрд╡рд░ рд▓реЛрдб рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдЯреВрд▓ рд╣реИред рдпрд╣ рдмреБрдпреНрдпрдВрдд рдХреЗ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ - рд▓рд┐рдВрдХрд░рдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдХреНрд▓рд╛рдЙрдб рдиреЗрдЯрд┐рд╡ рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ рдлрд╛рдЙрдВрдбреЗрд╢рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдФрд░
рдЗрд╕реЗ Google Istio рдХрд╛ рдкреНрд░рддрд┐рдпреЛрдЧреА
рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рддрд╕реНрд╡реАрд░реЗрдВ - рдЬреЛрд╢реБрдЖ рдЖрд░рд╛рдЧреЙрди - рдЕрдирдкреНрд▓реИрд╢рдЖрдорддреМрд░ рдкрд░, рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рд╕рд░реНрд╡рд░ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреА рд╣реИрдВ, рдЗрд╕реЗ рдереЛрдбрд╝реЗ рд╕рдордп рдореЗрдВ рдпрдерд╛рд╕рдВрднрд╡ рдЕрдзрд┐рдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреА рд╣реИрдВред Slow_cooker рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдХрд░рдг рдЖрдкрдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдПрдХ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рднрд╛рд░ рдХреЗ рддрд╣рдд рд▓реЛрд╣реЗ рдХреЗ рдХрд╛рдо рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
Buoyant рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рд┐рдВрдХреЗрдб рдФрд░ рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ, рдЬреИрд╕реЗ рдХрд┐ рдирдЧрдиреЗрдХреНрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рдзрди рдХрд╛рдлреА рдпреБрд╡рд╛ рд╣реИ - рд╡рд╣ рд▓рдЧрднрдЧ рддреАрди рд╣реИ - рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдЙрд╕реЗ рдПрдХ рдмрдбрд╝рд╛ рд╕рдореБрджрд╛рдп рдирд╣реАрдВ рдорд┐рд▓рд╛ред рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдпрд░рд▓рд╛рдЗрди рдЯрд┐рдХрдЯ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдп рд╕реЗрд╡рд╛ рд╕реНрдХрд╛рдИрд╕рдирд░ рдореЗрдВ рдЗрд╕рдХреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд╣рд▓реЗ рд╣реА
рдлреЛрд░реНрдХ рд╣реЛ рдЪреБрдХреА рд╣реИред
рдЖрдк
GitHub рдкрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕, рдХрдВрдЯреЗрдирд░реЛрдВ рдФрд░ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓реЛрдб рдФрд░ рдкреНрд░рддрд┐рдЧрдорди рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдгред рдпрд╣ рд▓реЛрдб рдкреНрд░рднрд╛рд╡ рд╕реЗ рдЧреЛ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рд╕рд╛рдЗрдЯреЛрдВ рдХреА "рджреГрдврд╝рддрд╛" рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡реЗрджрди рдкрддреНрд░ рд╣реИред
K6 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛрдб рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрдм рдкрд░реАрдХреНрд╖рдг рддрд░реНрдХ рдФрд░ рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЪрд░рдгреЛрдВ рдХреЛ рд╕рдореВрд╣реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдмреАрдбреАрдбреА рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
import { group } from "k6"; export default function() { group("user flow: returning user", function() { group("visit homepage", function() {
рдЙрдкрдХрд░рдг
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ
рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рдФрд░
рдЧреНрд░рд╛рдл рдмрдирд╛рдирд╛ рднреА рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ - рдмрд╛рдж рд╡рд╛рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рдЗрдиреНрдлреНрд▓рдХреНрд╕рдмреАрдбреА рдФрд░ рдЧреНрд░рд╛рдлрд╛рдирд╛ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЗрд╕рдореЗрдВ рдЬреЗрдирдХрд┐рдВрд╕, рд╕рд░реНрдХрд▓ рд╕реАрдЖрдИ, рдЯреАрдо рд╕рд┐рдЯреА рдФрд░ рдЧрд┐рдЯрд▓реИрдм рдЬреИрд╕реЗ рд╕реАрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ k6 рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ API рд╣реИред рд▓реЗрдХрд┐рди рдХрдИ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, k6 рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХрд╛
рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░
рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдкрд░реАрдХреНрд╖рдг
рдХреИрд╕реЗ рдХрд░реЗрдВ ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣реИрдХрд░ рдиреНрдпреВрдЬ рдкрд░ рд╡рд┐рд╖рдпрдЧрдд рд╕реВрддреНрд░ рдореЗрдВ k6 рдбреЗрд╡рд▓рдкрд░реНрд╕
рдиреЗ рдХрд╣рд╛ рдХрд┐ рдпреЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред
рдпрджрд┐ рдЖрдк рд╕реНрд╡рдпрдВ k6 рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ HN рдирд┐рд╡рд╛рд╕реА
рддрдХрдиреАрдХреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ - рдпрд╣ рд╡рд┐рд╕реНрддреГрдд рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдЖрдк
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдордВрдЪ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдШреЗрд░рд╛рдмрдВрджреА рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рд╡реЗрдм рд╕рд░реНрд╡рд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЗрдВрдЬреАрдирд┐рдпрд░ рдЬреЗрдл рдлреБрд▓рдорд░ (рдЬреЗрдл рдлреБрд▓рдорд░) рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдереА, рддрд╛рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рдХрд░реАрдм рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рд╕рдВрд╕рд╛рдзрди рдЦрдкрдд рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХреЗрдВред рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рд╕рд╛рдЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдирд┐рд░рдВрддрд░ рдзрд╛рд░рд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреЛ "рдШреЗрд░рд╛рдмрдВрджреА рдХреЗ рддрд╣рдд" - рдЗрд╕рд▓рд┐рдП рдЙрдкрдХрд░рдг рдХрд╛ рдирд╛рдоред
рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ: рд╕реНрдХреИрди рдХрд╛ рд╕рдордп, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд▓реЗрдирджреЗрди рдХреА рд╕рдВрдЦреНрдпрд╛, рдереНрд░реВрдкреБрдЯ, рд╕рдлрд▓ рдФрд░ рдЕрд╕рдлрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде 200 рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ред рдпрд╣рд╛рдВ рдШреЗрд░рд╛рдмрдВрджреА рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛
рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ ред
рдЖрдИрдЯреА рд╕рдореБрджрд╛рдп рдореЗрдВ рдШреЗрд░рд╛рдмрдВрджреА рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "
NGINX рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди " рдкреБрд╕реНрддрдХ рдореЗрдВ рдПрдХ рдкреВрд░рд╛ рдЦрдВрдб рдЗрд╕рдХреА рдорджрдж рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред рдЗрд╕рдХрд╛
рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛рдУрдВ
рджреНрд╡рд╛рд░рд╛ рднреА
рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдШреЗрд░рд╛рдмрдВрджреА рдХреА рдХрдорд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ, рдкрд░реАрдХреНрд╖рдг рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рдорд╛рдирдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢
рдХреЛ рд╕рдлрд▓ рд▓реЗрдирджреЗрди
рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрджрд┐ рдЖрдк рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдШреЗрд░рд╛рдмрдВрджреА рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ
рдСрдирд▓рд╛рдЗрди рдореИрдиреБрдЕрд▓ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ - рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреБрдЫ "рд╡рд┐рд╖рдорддрд╛рдПрдВ" рд╣реИрдВред
1cloud.ru рдмреНрд▓реЙрдЧ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрдврд╝рдирд╛:
рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ 5.3 рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ - рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдбреНрд░рд╛рдЗрд╡рд░, рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди, рдФрд░ рдЕрдиреНрдп рдЕрдкрдбреЗрдЯ
рдХреНрдпреЛрдВ рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдлрд┐рд░ рд╕реЗ рдЙрдкрдбреЛрдореЗрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛
рдХреНрдпреЛрдВ Apple рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдмрджрд▓ рджреАрдВ