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

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


рд╕рд╛рдореНрдпрд╡рд╛рдж рдЖ рдЧрдпрд╛ рд╣реИ, рдХрд╛рдорд░реЗрдб

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


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

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

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

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

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


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

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

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

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

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


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

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

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

рд▓реЛрдб рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдкреНрд░рдХреГрддрд┐ рдФрд░ рдЖрдХрд╛рд░ рдореЗрдВ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

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

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

рдкреНрд░рддреНрдпреЗрдХ 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.txt
sysbench 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 update
  • apt-get upgrade
  • apt-get install python-pip
  • pip install mysql-connector-python-rf

MariaDB, :

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

:
Table 
RowsCount 
Data size (MB)
Index size (KB)
departments 
9
0.02
16.00
dept_emp 
331143 
11.52
5648.00
dept_manager 
24 
0.02
16.00
employees 
299379 
14.52
0.00
salaries 
2838426 
95.63
0.00 
titles 
442783 
19.56
0.00

, :

  1. getState:
  2. getEmployee: employee (+salaries, +titles)
  3. patchEmployee: employee
  4. insertSalary: salary

(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

:
Label
Average
Median
90% Line
95% Line
99% Line
Min
Max
getEmployee
37.64
12.57
62.28
128.5
497.57
5
4151.78
getState
17
7.57
30.14
58.71
193
3
2814.71
patchEmployee
161.42
83.29
308
492.57
1845.14
5
6639.4
putSalary
167.21
86.93
315.34
501.07
1927.12
7
6722.44

, VPS , , . . 30 .

Source: https://habr.com/ru/post/hi464571/


All Articles