30 рд░реВрдмрд▓ рдХреЗ рд▓рд┐рдП рдмреНрд░реЗрди + рд╡реАрдкреАрдПрд╕ =?

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрдм рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ рд╣рд╛рде рдореЗрдВ рд╣реЛрдВ: рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреЗрди рдФрд░ рдиреЛрдЯрдкреИрдб, рдПрдХ рддреЗрдЬ рдкреЗрдВрд╕рд┐рд▓, рдПрдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рдорд╛рдЙрд╕, рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд░ рдЖрджрд┐ред рдпреЗ рдЕрдЧреЛрдЪрд░ рдЪреАрдЬрд╝реЗрдВ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреАрдВ, рдмрд▓реНрдХрд┐ рдЬреАрд╡рди рдореЗрдВ рдЖрд░рд╛рдо рд▓рд╛рддреА рд╣реИрдВред рдпрд╣реА рдХрд╣рд╛рдиреА рд╡рд┐рднрд┐рдиреНрди рдореЛрдмрд╛рдЗрд▓ рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИ: рд▓рдВрдмреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рд▓рд┐рдП, рддрд╕реНрд╡реАрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рддреНрдд, рд╢рдмреНрджрдХреЛрд╢реЛрдВ, рдЕрдиреБрд╡рд╛рджрдХреЛрдВ, рдХрдирд╡рд░реНрдЯрд░реНрд╕ рдЖрджрд┐ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдПред рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИ рдХреНрдпрд╛? рд╡реАрдкреАрдПрд╕ - рдХреМрди рд╕рд╛ рд╕рд╕реНрддрд╛ рд╣реИ, рд╣рдореЗрд╢рд╛ рд╣рд╛рде рдореЗрдВ рд╣реИ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓рд╛рдн рд▓рд╛рддрд╛ рд╣реИ? рдирд╣реАрдВ, рд╡рд╣ рдирд╣реАрдВ рдЬреЛ рдЖрдкрдХреА рдХрдВрдкрдиреА рдореЗрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЖрдкрдХрд╛ рдЕрдкрдирд╛, "рдкреЙрдХреЗрдЯ" рд╣реИред рд╣рдордиреЗ рд╕реЛрдЪрд╛ рдХрд┐ 2019 рдореЗрдВ рдПрдХ рдЫреЛрдЯреЗ рд╡реАрдкреАрдПрд╕ рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдХрд┐рд╕реА рддрд░рд╣ рджреБрдЦрдж рдерд╛, рдЬреИрд╕реЗ рдХрд┐рд╕реА рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдлрд╛рдЙрдВрдЯреЗрди рдкреЗрди рдХреЗ рдмрд┐рдирд╛ред рджреБрдЦреА рдХреНрдпреЛрдВ рд╣реЛ? рдпрд╣ рдЧрд░реНрдореА рд╣реИред рдЧрд░реНрдореА рдХреИрд╕реА рд╣реИ? рдПрдХ рдЖрдИрдЯреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреЗ рд▓рд┐рдП рдЧрд░реНрдореА: рдШрд░ рдмреИрдареЗ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрдЫрддрд╛рд╡реЗ рдХреЗ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдордиреЗ рд╕реЛрдЪрд╛ рдФрд░ рдХрд┐рдпрд╛ред

30 рд░реВрдмрд▓ рдХреЗ рд▓рд┐рдП рдмреНрд░реЗрди + рд╡реАрдкреАрдПрд╕ =?
рд╕рд╛рдореНрдпрд╡рд╛рдж рдЖ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рдерд┐рдпреЛрдВред

рд╡рд╣ рдРрд╕рд╛ рд╣реА рд╣реИ - рддреАрд╕ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рд╡реАрдкреАрдПрд╕

рд╣рдордиреЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд┐рдпреЛрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рдкрдврд╝реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ 3-4 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛ рдХрд┐ рд╕рд╕реНрддреЗ рд╡реАрдкреАрдПрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред рдареАрдХ рд╣реИ, рдпрд╣ рд╕рд╣реА рд╣реИ, рддрдм рд╡реАрдкреАрдПрд╕ "рдПрдХ рдкреИрд╕реЗ рдХреЗ рд▓рд┐рдП" рд╢реБрджреНрдз рд╡рд┐рдкрдгрди рдерд╛ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рдордХрд╛рдЬреА рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рд╕рдордп рдмрджрд▓ рд░рд╣рд╛ рд╣реИ, рдЖрднрд╛рд╕реА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд▓рд╛рдЧрдд рдХрдо рд╣реЛрддреА рдЬрд╛ рд░рд╣реА рд╣реИ, рдФрд░ рдкреНрд░рддрд┐ рдорд╛рд╣ 30 рд░реВрдмрд▓ рдХреЗ рд▓рд┐рдП рд╣рдо рдпрд╣ рдкреЗрд╢рдХрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ:

  • рдкреНрд░реЛрд╕реЗрд╕рд░: Intel Xeon 2 GHz (1 рдХреЛрд░)
  • рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо (рдбреЗрдмрд┐рдпрди, рдЙрдмрдВрдЯреВ, рд╕реЗрдВрдЯрдУрдПрд╕ рдореЗрдВ рд╕реЗ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП)
  • 1 рд╕рдорд░реНрдкрд┐рдд IPv4 рдкрддрд╛
  • рддреЗрдЬрд╝ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝-рдХреНрд▓рд╛рд╕ SSD рдбреНрд░рд╛рдЗрд╡ рдкрд░ 10 рдЬреАрдмреА рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ
  • рд░реИрдо: 512 рдПрдордмреА
  • рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдмрд┐рд▓рд┐рдВрдЧ
  • рдЕрд╕реАрдорд┐рдд рдпрд╛рддрд╛рдпрд╛рдд

рдЯреИрд░рд┐рдл рдЕрддрд┐рд░рд┐рдХреНрдд рддрдХрдиреАрдХреА рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдЕрдзреАрди рд╣реИ, рд╡рд┐рд╡рд░рдг рдкрд░ рдкреЗрдЬ рд╣рдорд╛рд░рд╛ рд╢рд╛рдирджрд╛рд░ рдСрдлрд░ - 30 рд░реВрдмрд▓ рдХреЗ рд▓рд┐рдП рд╡реАрдкреАрдПрд╕ред 

рдпрд╣ рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд░реНрд╡рд░ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ? рд▓рдЧрднрдЧ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╣рд╛рдБ: рд╢реБрд░реБрдЖрддреА, рдЙрддреНрд╕рд╛рд╣реА, рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕, DIY рдкреНрд░рд╢рдВрд╕рдХ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреБрдЫ рдХрдВрдкрдирд┐рдпрд╛рдВ рднреАред

рдпрд╣ рд╡реАрдкреАрдПрд╕ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ?

рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣реИрдмрд░ рдХреЗ рдкрд╛рдардХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрдкрдирд╛ рддрд░реАрдХрд╛ рдвреВрдВрдв рд▓реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдЕрдкрдирд╛ рдЪрдпрди рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ - рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреБрд░реБрд╖реЛрдВ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ?

  • рдЕрдкрдиреА рд╕рд░рд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ, рдкреЛрд░реНрдЯрдлреЛрд▓рд┐рдпреЛ, рдХреЛрдб рдХреЗ рд╕рд╛рде рдмрд╛рдпреЛрдбрд╛рдЯрд╛ рдЖрджрд┐ рд░рдЦреЗрдВред рдмреЗрд╢рдХ, рдЖрдкрдХреА рдЦреБрдж рдХреА рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдирд┐рдпреЛрдХреНрддрд╛ рдкрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓рддреА рд╣реИред рдЗрд╕реЗ рдЕрдкрдиреЗ рд╡реАрдкреАрдПрд╕ рдкрд░ рд░рдЦреЗрдВ рдФрд░ рд╕рд╛рдЗрдЯ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдмрдиреЗрдВ, рди рдХрд┐ рдирд┐рдпрдорд┐рдд рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ред
  • рд╢реИрдХреНрд╖рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реАрдкреАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░реЗрдВ, рд╕рд░реНрд╡рд░ рдФрд░ рд╕рд░реНрд╡рд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ, рдбреАрдПрдирдПрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ, рдПрдХ рдЫреЛрдЯреА рд╢реИрдХреНрд╖рд┐рдХ рд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░реЗрдВред
  • рдЯреЗрд▓реАрдлреЛрдиреА рдХреЗ рд▓рд┐рдП. рдХрднреА-рдХрднреА рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрджреНрдпрдореА, рдлреНрд░реАрд▓рд╛рдВрд╕рд░ рдпрд╛ рдмрд╣реБрдд рдЫреЛрдЯреА рдХрдВрдкрдиреА рдХреЛ рдЖрдИрдкреА рдЯреЗрд▓реАрдлреЛрдиреА рдХреА рд╕рдЦреНрдд рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реА рдЯреЗрд▓реАрдлреЛрдиреА рдХреЗ рд╕рдВрдЪрд╛рд▓рдХ рдмрд╣реБрдд рд▓рд╛рд▓рдЪреА рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд░рд▓ рд╣реИ: рд╣рдо рдЕрдкрдирд╛ рд╕рд░реНрд╡рд░ рд▓реЗрддреЗ рд╣реИрдВ, рдЖрдИрдкреА рдЯреЗрд▓реАрдлреЛрдиреА рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдПрдХ рдирдВрдмрд░ рдЦрд░реАрджрддреЗ рд╣реИрдВ, рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдкреАрдмреАрдПрдХреНрд╕ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдВрддрд░рд┐рдХ рдирдВрдмрд░ рдмрдирд╛рддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ)ред рдмрдЪрдд рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИ.
  • рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  • рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдВрд╕рд░ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдПрдХрддреНрд░ рдХрд░рдиреЗ рд╕рд╣рд┐рдд DIY рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  • рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЯреНрд░реЗрдбрд┐рдВрдЧ рдЕрд╕рд┐рд╕реНрдЯреЗрдВрдЯ, рдПрдХ рдЯреНрд░реЗрдбрд┐рдВрдЧ рд░реЛрдмреЛрдЯ рд░рдЦрдирд╛ рд╣реИред рдЖрдк рд╕рд░реНрд╡рд░ рдХреА рд╕реНрдерд┐рд░рддрд╛ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдВрдЧреЗ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╢реЗрдпрд░ рдмрд╛рдЬрд╛рд░реЛрдВ рдкрд░ рд╡реНрдпрд╛рдкрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдВрддреНрд░рд┐рдд рдЙрдкрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдЦреИрд░, рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдпрд╛ рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реА рд╣реИ :)

рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдРрд╕реЗ VPS рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдореМрдЬреВрдж рд╣реИрдВред рдкрд╣рд▓реЗ рд╕реЗ рдмрддрд╛рдИ рдЧрдИ рдЯреЗрд▓реАрдлреЛрди рд╕реЗрд╡рд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  • рдЫреЛрдЯреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рд░рдЦреЗрдВ рдЬреЛ рджреВрд░ рд╕реЗ рдпрд╛рддреНрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рд╣реЛ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдлрд╝рдЯреАрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдпрд╣ рдЖрдкрдХреЛ рддрд╛рдЬрд╝рд╛ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕, рдмрд┐рдХреНрд░реА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдкреНрд░рд╕реНрддреБрддрд┐рдпреЛрдВ рдЖрджрд┐ рдХрд╛ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
  • рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдпрд╛ рдореАрдбрд┐рдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдпрд╛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

30 рд░реВрдмрд▓ рдХреЗ рд▓рд┐рдП рд╡реАрдкреАрдПрд╕ рдЯреЗрд╕реНрдЯ рдбреНрд░рд╛рдЗрд╡ - рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛

30 рд░реВрдмрд▓ рдЗрддрдиреЗ рдХрдо рд╣реИрдВ рдХрд┐ рдЖрдк рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдб рднреА рдирд╣реАрдВ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рд╣рдо рдХрднреА-рдХрднреА рдЗрддрдиреЗ рдЖрд▓рд╕реА рднреА рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд╣рдордиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХрд┐рдпрд╛ред рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рдпреБрджреНрдз рдореЗрдВ рдЙрддрд╛рд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рдЗрд╕ рдЯреИрд░рд┐рдл рдкрд░ рдХреНрдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЪрд░рдо рдЬреЛрдбрд╝рд╛ рдФрд░ рдЬрд╛рдВрдЪ рдХреА рдХрд┐ рдпрджрд┐ рдШрдирддреНрд╡ рдФрд░ рднрд╛рд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдиреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рддреЛ рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред 

рд╣реЛрд╕реНрдЯ рдХрдИ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХреЗ рд▓реЛрдб рдХреЗ рддрд╣рдд рдерд╛ рдЬреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рдерд╛ рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛ред рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдХреЗ рдЙрдЪреНрдЪ рдШрдирддреНрд╡ рдФрд░ рд▓рдбрд╝рд╛рдХреВ рд▓реЛрдб рдХреЗ рдмрд░рд╛рдмрд░ рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рднрд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рд╣реИред

рдирд┐рд░рдВрддрд░ рд▓реЛрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ 3 рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХреАрдВ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╕рд┐рд╕рдмреЗрдВрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдХрддреНрд░ рдХрд┐рдП, рдЬрд┐рдирдХреЗ рдФрд╕рдд рдкрд░рд┐рдгрд╛рдо рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдереЗ, рдФрд░ 50 рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЗрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЛрдб рдмрдирд╛рдпрд╛ред рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (1 рдХреЛрд░, рд░реИрдо 512 рдЬреАрдмреА, рдПрд╕рдПрд╕рдбреА 10 рдЬреАрдмреА) рдерд╛, рдорд╛рдирдХ рдбреЗрдмрд┐рдпрди 9.6 рдЫрд╡рд┐ рдХреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдЖрд░рдпреВрд╡реАрдбреАрдПрд╕ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рднрд╛рд░ рдХреА рдкреНрд░рдХреГрддрд┐ рдФрд░ рдкрд░рд┐рдорд╛рдг рдпреБрджреНрдз рдХреЗ рдмрд░рд╛рдмрд░ рдерд╛:

  • рдХреБрдЫ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЗрдВ рдХрдо рд▓реЛрдб рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХреА рдЧрдИрдВ
  • рдХреБрдЫ рдорд╢реАрдиреЛрдВ рдиреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рд▓реЛрдб рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реБрдП (рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдИ рддрдирд╛рд╡)
  • рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХреЗ рд╢реЗрд╖ рд╣рд┐рд╕реНрд╕реЗ рдкрд░, рд╣рдордиреЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдИ рдЬрд┐рд╕рдореЗрдВ рдкреАрд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗ рд╕рд╛рде рдкреВрд░реНрд╡-рддреИрдпрд╛рд░ рдбреЗрдЯрд╛ рд╕реЗ рдбрд┐рд╕реНрдХ рдкрд░ рдбреЗрдЯрд╛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреАрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ) рдпрд╣рд╛рдВ ╨╕ рдпрд╣рд╛рдВ).

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рдорд╢реАрдиреЗрдВ рдереАрдВ рдЬреЛ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдХрддреНрд░ рдХрд░рддреА рдереАрдВред

рдкреНрд░рддреНрдпреЗрдХ рдорд╢реАрди рдкрд░, рд╣рд░ 15 рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрдХреНрд░реАрдп рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛, рдЬреЛ рдкреНрд░реЛрд╕реЗрд╕рд░, рдореЗрдореЛрд░реА рдФрд░ рдбрд┐рд╕реНрдХ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ sysbench рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ sysbench.sh

#!/bin/bash
date +"%Y-%m-%d %H:%M:%S" >> /root/sysbench/results.txt
sysbench --test=cpu run >> /root/sysbench/results.txt
sysbench --test=memory run >> /root/sysbench/results.txt
sysbench --test=fileio --file-test-mode=seqwr run >> /root/sysbench/results.txt
sysbench --test=fileio --file-test-mode=seqrd run >> /root/sysbench/results.txt
sysbench --test=fileio --file-test-mode=rndrw run >> /root/sysbench/results.txt

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

Sysbanch-avg.txtsysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 10000

Test execution summary:
total time: 19.2244s
total number of events: 10000
total time taken by event execution: 19.2104
per-request statistics:
min: 1.43ms
avg: 1.92ms
max: 47.00ms
approx. 95 percentile: 3.02ms

Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 19.2104/0.00

sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Doing memory operations speed test
Memory block size: 1K

Memory transfer size: 102400M

Memory operations type: write
Memory scope type: global
Threads started!
Done.

Operations performed: 104857600 (328001.79 ops/sec)

102400.00 MB transferred (320.32 MB/sec)

Test execution summary:
total time: 320.9155s
total number of events: 104857600
total time taken by event execution: 244.8399
per-request statistics:
min: 0.00ms
avg: 0.00ms
max: 139.41ms
approx. 95 percentile: 0.00ms

Threads fairness:
events (avg/stddev): 104857600.0000/0.00
execution time (avg/stddev): 244.8399/0.00

sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Extra file open flags: 0
128 files, 16Mb each
2Gb total file size
Block size 16Kb
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing sequential write (creation) test
Threads started!
Done.

Operations performed: 0 Read, 131072 Write, 128 Other = 131200 Total
Read 0b Written 2Gb Total transferred 2Gb (320.1Mb/sec)
20251.32 Requests/sec executed

Test execution summary:
total time: 6.9972s
total number of events: 131072
total time taken by event execution: 5.2246
per-request statistics:
min: 0.01ms
avg: 0.04ms
max: 96.76ms
approx. 95 percentile: 0.03ms

Threads fairness:
events (avg/stddev): 131072.0000/0.00
execution time (avg/stddev): 5.2246/0.00

sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Extra file open flags: 0
128 files, 16Mb each
2Gb total file size
Block size 16Kb
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing sequential read test
Threads started!
Done.

Operations performed: 131072 Read, 0 Write, 0 Other = 131072 Total
Read 2Gb Written 0b Total transferred 2Gb (91.32Mb/sec)
5844.8 Requests/sec executed

Test execution summary:
total time: 23.1054s
total number of events: 131072
total time taken by event execution: 22.9933
per-request statistics:
min: 0.00ms
avg: 0.18ms
max: 295.75ms
approx. 95 percentile: 0.77ms

Threads fairness:
events (avg/stddev): 131072.0000/0.00
execution time (avg/stddev): 22.9933/0.00

sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Extra file open flags: 0
128 files, 16Mb each
2Gb total file size
Block size 16Kb
Number of random requests for random IO: 10000
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Threads started!
Done.

Operations performed: 6000 Read, 4000 Write, 12800 Other = 22800 Total
Read 93.75Mb Written 62.5Mb Total transferred 156.25Mb (1341.5Kb/sec)
85.61 Requests/sec executed

Test execution summary:
total time: 152.9786s
total number of events: 10000
total time taken by event execution: 14.1879
per-request statistics:
min: 0.01ms
avg: 1.41ms
max: 210.22ms
approx. 95 percentile: 4.95ms

Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 14.1879/0.00

рдкрд░рд┐рдгрд╛рдо рд╕рд╛рдВрдХреЗрддрд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрдиреНрд╣реЗрдВ QoS рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред 

рдорд╢реАрдиреЗрдВ рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рднрд╛рд░ рдкреИрджрд╛ рдХрд░рддреА рд╣реИрдВ

рдореБрд▓рд╛рдпрдо:

  • рдЙрдкрдпреБрдХреНрдд - рдорд┐рд▓ рдЕрджреНрдпрддрди
  • рдЙрдкрдпреБрдХреНрдд-рдЕрдкрдЧреНрд░реЗрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
  • apt-get python-pip рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
  • рдкрд╛рдЗрдк mysql-рдХрдиреЗрдХреНрдЯрд░-рдкрд╛рдпрдерди-рдЖрд░рдПрдл рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

рдорд╛рд░рд┐рдпрд╛рдбреАрдмреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдХреИрд╕реЗ рдХрд░реЗрдВ рдпрд╣рд╛рдВ:

apt-get install libmariadbclient-dev
mysql -e "INSTALL PLUGIN blackhole SONAME 'ha_blackhole.so';" -- ╨╜╤Г╨╢╨╜╨╛ ╨┤╨╗╤П test_employees_sha

рдкрд░реАрдХреНрд╖рдг рдЖрдзрд╛рд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдЕрдд::

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╣рд╛рдВ:

mysql -t < employees.sql
mysql -t < test_employees_sha.sql

рдЫреЛрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдЖрдзрд╛рд░:

рддрд╛рд▓рд┐рдХрд╛ 

рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЧрд┐рдирддреА 

рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ (рдПрдордмреА)

рд╕реВрдЪрдХрд╛рдВрдХ рдЖрдХрд╛рд░ (KB)

рд╡рд┐рднрд╛рдЧреЛрдВ 

9

0.02

16.00

рд╡рд┐рднрд╛рдЧ_рдПрдореНрдк 

331143 

11.52

5648.00

рд╡рд┐рднрд╛рдЧ_рдкреНрд░рдмрдВрдзрдХ 

24 

0.02

16.00

рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ 

299379 

14.52

0.00

рд╡реЗрддрди 

2838426 

95.63

0.00 

рдЦрд┐рддрд╛рдм 

442783 

19.56

0.00

рдкрд╛рдпрдерди рдореЗрдВ рдШреБрдЯрдиреЗ рдкрд░ рдПрдХ рдЖрджрд┐рдо рдкрд░реАрдХреНрд╖рдг рд╕реЗрд╡рд╛ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ; рдпрд╣ рдЪрд╛рд░ рдСрдкрд░реЗрд╢рди рдХрд░рддреА рд╣реИ:

  1. getState: рд╕реНрдерд┐рддрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
  2. рдХрд░реНрдордЪрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ: рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрд░реНрдордЪрд╛рд░реА (+ рд╡реЗрддрди, + рдкрджрд╡реА) рд▓реМрдЯрд╛рддрд╛ рд╣реИ
  3. рдкреИрдЪрдХрд░реНрдордЪрд╛рд░реА: рдХрд░реНрдордЪрд╛рд░реА рдлрд╝реАрд▓реНрдб рдмрджрд▓рддрд╛ рд╣реИ
  4. рд╡реЗрддрди рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ: рд╡реЗрддрди рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ

рд╕реЗрд╡рд╛ рд╕реНрд░реЛрдд (dbtest.py)

#!/usr/bin/python
import mysql.connector as mariadb
from flask import Flask, json, request, abort
from mysql.connector.constants import ClientFlag

app = Flask(__name__)

def getFields(cursor):
    results = {}
    column = 0
    for d in cursor.description:
        results[d[0]] = column
        column = column + 1
    return results

PAGE_SIZE = 30

@app.route("/")
def main():
    return "Hello!"

@app.route("/employees/<page>", methods=['GET'])
def getEmployees(page):
    offset = (int(page) - 1) * PAGE_SIZE
    connection = mariadb.connect(user='admin', password='q5XpRomdSr', database='employees')
    cursor = connection.cursor()
    cursor.execute("SELECT * FROM employees LIMIT {} OFFSET {}".format(PAGE_SIZE, offset))
    return {'employees': [i[0] for i in cursor.fetchall()]}

@app.route("/employee/<id>", methods=['GET'])
def getEmployee(id):
    id = int(id)
    connection = mariadb.connect(user='admin', password='q5XpRomdSr', database='employees')
    cursor = connection.cursor()
    cursor.execute("SELECT * FROM employees WHERE emp_no = {}".format(id))
    fields = getFields(cursor)
    employee = {}
    found = False
    for row in cursor.fetchall():
        found = True
        employee = {
            "birth_date": row[fields["birth_date"]],
            "first_name": row[fields["first_name"]],
            "last_name": row[fields["last_name"]],
            "gender": row[fields["gender"]],
            "hire_date": row[fields["hire_date"]]
        }
    if not found:
        abort(404)
    cursor.execute("SELECT * FROM salaries WHERE emp_no = {}".format(id))
    fields = getFields(cursor)
    salaries = []
    for row in cursor.fetchall():
        salary = {
            "salary": row[fields["salary"]],
            "from_date": row[fields["from_date"]],
            "to_date": row[fields["to_date"]]
        }
        salaries.append(salary)
    employee["salaries"] = salaries
    cursor.execute("SELECT * FROM titles WHERE emp_no = {}".format(id))
    fields = getFields(cursor)
    titles = []
    for row in cursor.fetchall():
        title = {
            "title": row[fields["title"]],
            "from_date": row[fields["from_date"]],
            "to_date": row[fields["to_date"]]
        }
        titles.append(title)
    employee["titles"] = titles
    return json.dumps({
        "status": "success",
        "employee": employee
    })

def isFieldValid(t, v):
    if t == "employee":
        return v in ["birdth_date", "first_name", "last_name", "hire_date"]
    else:
        return false

@app.route("/employee/<id>", methods=['PATCH'])
def setEmployee(id):
    id = int(id)
    content = request.json
    print(content)
    setList = ""
    data = []
    for k, v in content.iteritems():
        if not isFieldValid("employee", k):
            continue
        if setList != "":
            setList = setList + ", "
        setList = setList + k + "=%s"
        data.append(v)
    data.append(id)
    print(setList)
    print(data)
    connection = mariadb.connect(user='admin', password='q5XpRomdSr', database='employees', client_flags=[ClientFlag.FOUND_ROWS])
    cursor = connection.cursor()
    cursor.execute("UPDATE employees SET {} WHERE emp_no = %s".format(setList), data)
    connection.commit()
    if cursor.rowcount < 1:
        abort(404)
    return json.dumps({
        "status": "success"
    })

@app.route("/salary", methods=['PUT'])
def putSalary():
    content = request.json
    print(content)
    connection = mariadb.connect(user='admin', password='q5XpRomdSr', database='employees', client_flags=[ClientFlag.FOUND_ROWS])
    cursor = connection.cursor()
    data = [content["emp_no"], content["salary"], content["from_date"], content["to_date"]]
    cursor.execute("INSERT INTO salaries (emp_no, salary, from_date, to_date) VALUES (%s, %s, %s, %s)", data)
    connection.commit()
    return json.dumps({
        "status": "success"
    })


@app.route("/state", methods=['GET'])
def getState():
    return json.dumps({
        "status": "success",
        "state": "working"
    })

if __name__ == '__main__':
    app.run(host='0.0.0.0',port='5002')

рдЪреЗрддрд╛рд╡рдиреА! рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП!

рдкрд░реАрдХреНрд╖рдг рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ JMeter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред 15 рдорд┐рдирдЯ рд╕реЗ 2 рдШрдВрдЯреЗ рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд░реБрдХрд╛рд╡рдЯ рдХреЗ рд╢реБрд░реВ рдХреА рдЧрдИ, рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рд╢рдд рднрд┐рдиреНрди рдерд╛, рдФрд░ рдереНрд░реВрдкреБрдЯ рдкреНрд░рддрд┐ рдорд┐рдирдЯ 300 рд╕реЗ 600 рдЕрдиреБрд░реЛрдзреЛрдВ рддрдХ рднрд┐рдиреНрди рдерд╛ред рдзрд╛рдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 50 рд╕реЗ 500 рддрдХред

рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ, рдХрдорд╛рдВрдб:

mysql -e "SHOW ENGINE INNODB STATUS"

рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐:

Buffer pool hit rate 923 / 1000, young-making rate 29 / 1000 not 32 / 1000

рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рд▓реЗрдмрд▓

рдФрд╕рдд

рдордВрдЭрд▓рд╛

90% рд▓рд╛рдЗрди

95% рд▓рд╛рдЗрди

99% рд▓рд╛рдЗрди

рдорд┐рди

рдореИрдХреНрд╕

рдХрд░реНрдордЪрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

37.64

12.57

62.28

128.5

497.57

5

4151.78

рд░рд╛рдЬреНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

17

7.57

30.14

58.71

193

3

2814.71

рдкреИрдЪрдХрд░реНрдордЪрд╛рд░реА

161.42

83.29

308

492.57

1845.14

5

6639.4

рд╡реЗрддрди рдбрд╛рд▓реЛ

167.21

86.93

315.34

501.07

1927.12

7

6722.44

рдЖрдкрдХреЗ рд▓рд┐рдП рдЗрди рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реАрдкреАрдПрд╕ рдЖрдкрдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдЙрдкрдпреБрдХреНрдд рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕реВрдЪреАрдмрджреНрдз рддрд░реАрдХреЗ рдЙрди рдорд╛рдорд▓реЛрдВ рддрдХ рд╣реА рд╕реАрдорд┐рдд рд╣реИрдВ рдЬрд┐рдирд╕реЗ рд╣рдореЗрдВ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рд░реВрдк рдореЗрдВ рдирд┐рдкрдЯрдирд╛ рдерд╛ред рддреЛ рд╣рдорд╛рд░реА рд╕реВрдЪреА рд╣реИ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдкреВрд░реНрдг рдирд╣реАрдВ. рд╣рдо рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдЕрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ 30 рд░реВрдмрд▓ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╡рд┐рдХрд▓реНрдк рд╕реБрдЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ