рдпреЛ рдзреЗрд░реИ рд░рд╛рдореНрд░реЛ рдЫ рдЬрдм рд╕рдмреИ рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рдирд╛ рдЪреАрдЬрд╣рд░реВ рд╣рд╛рддрдорд╛ рд╣реБрдиреНрдЫрдиреН: рдПрдЙрдЯрд╛ рд░рд╛рдореНрд░реЛ рдХрд▓рдо рд░ рдиреЛрдЯрдкреНрдпрд╛рдб, рдПрдХ рддрд┐рдЦрд╛рд░рд┐рдПрдХреЛ рдкреЗрдиреНрд╕рд┐рд▓, рдПрдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рдорд╛рдЙрд╕, рдПрдХ рдЬреЛрдбреА рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд░, рдЖрджрд┐ред рдпреА рдЕрд╕реНрдкрд╖реНрдЯ рдЪреАрдЬрд╣рд░реВрд▓реЗ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдЧрд░реНрджреИрди, рддрд░ рдЬреАрд╡рдирдорд╛ рдЖрд░рд╛рдо рдердкреНрдЫрдиреНред рдПрдЙрдЯреИ рдХрдерд╛ рд╡рд┐рднрд┐рдиреНрди рдореЛрдмрд╛рдЗрд▓ рд░ рдбреЗрд╕реНрдХрдЯрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд╕рдБрдЧ рдЫ: рд▓рд╛рдореЛ рд╕реНрдХреНрд░рд┐рдирд╕рдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рдЪрд┐рддреНрд░рдХреЛ рдЖрдХрд╛рд░ рдШрдЯрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рддреНрдд, рд╢рдмреНрджрдХреЛрд╢, рдЕрдиреБрд╡рд╛рджрдХрд╣рд░реВ, рдХрдиреНрднрд░реНрдЯрд░рд╣рд░реВ, рдЖрджрд┐ рдЧрдгрдирд╛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ред рдХреЗ рддрдкрд╛рдИрд╕рдБрдЧ рдпрд╕реНрддреЛ рдЫ?
рдХрдореНрдпреБрдирд┐рдЬреНрдо рдЖрдпреЛ рдХрдорд░реЗрдбрд╣рд░реВ ред
рдЙрд╣рд╛рдБ рддреНрдпрд╕реНрддреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ - рддреАрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ VPS
рд╣рд╛рдореАрд▓реЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдмрд╛рдЯ рдзреЗрд░реИ рд▓реЗрдЦрд╣рд░реВ рдкрдвреЗрдХрд╛ рдЫреМрдВ рдЬрд╕рд▓реЗ 3-4 рд╡рд░реНрд╖ рдкрд╣рд┐рд▓реЗ рд▓реЗрдЦреЗрдХрд╛ рдерд┐рдП рдХрд┐рди рд╕рд╕реНрддреЛ VPS рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред рдареАрдХ рдЫ, рддреНрдпреЛ рд╕рд╣рд┐ рдЫ, рддреНрдпрд╕рдкрдЫрд┐ VPS "рдПрдХ рдкреИрд╕рд╛рдХреЛ рд▓рд╛рдЧрд┐" рд╢реБрджреНрдз рдорд╛рд░реНрдХреЗрдЯрд┐рдЩ рдерд┐рдпреЛ рд░ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рдо рдЧрд░реНрдиреЗ рдЕрд╡рд╕рд░рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрди рд╕рдХреНрджреИрдиред рддрд░ рд╕рдордп рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдБрджреИрдЫ, рднрд░реНрдЪреБрдЕрд▓ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд▓рд╛рдЧрдд рдХрдо рд░ рдХрдо рд╣реБрдБрджреИ рдЧрдЗрд░рд╣реЗрдХреЛ рдЫ, рд░ 30 rubles рдПрдХ рдорд╣рд┐рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдпреЛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНрди рддрдпрд╛рд░ рдЫреМрдВ:
- рдкреНрд░реЛрд╕реЗрд╕рд░: Intel Xeon 2 GHz (1 рдХреЛрд░)
- рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдгрд╛рд▓реА (рдбреЗрдмрд┐рдпрди, Ubuntu, CentOS рдмрд╛рдЯ рдЫрдиреМрдЯ рдЧрд░реНрди)
- рез рд╕рдорд░реНрдкрд┐рдд IPv1 рдареЗрдЧрд╛рдирд╛
- рджреНрд░реБрдд рдЙрджреНрдпрдо-рд╡рд░реНрдЧ SSD рдбреНрд░рд╛рдЗрднрд╣рд░реВрдорд╛ 10 GB рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг
- рд░реНрдпрд╛рдо: релрезреи рдПрдордмреА
- рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб рдмрд┐рд▓рд┐рдЩ
- рдЕрд╕реАрдорд┐рдд рдпрд╛рддрд╛рдпрд╛рдд
рдЯреНрдпрд╛рд░рд┐рдл рдердк рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВрдХреЛ рдЕрдзреАрдирдорд╛ рдЫ, рд╡рд┐рд╡рд░рдгрд╣рд░реВ
рдпреЛ рднрд░реНрдЪреБрдЕрд▓ рд╕рд░реНрднрд░ рдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдЫ? рд╣реЛ рд▓рдЧрднрдЧ рд╕рдмреИрд▓рд╛рдИ: рд╢реБрд░реБрдЖрддреАрд╣рд░реВ, рдЙрддреНрд╕рд╛рд╣реАрд╣рд░реВ, рдЕрдиреБрднрд╡реА рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ, DIY рдкреНрд░рд╢рдВрд╕рдХрд╣рд░реВ рд░ рдХреЗрд╣реА рдХрдореНрдкрдиреАрд╣рд░реВ рдкрдирд┐ред
рдпреЛ VPS рдХреЗ рдХреЛ рд▓рд╛рдЧреА рдЙрдкрдпреБрдХреНрдд рдЫ?
рд╣рд╛рдореАрд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрд┐ Habr рдХрд╛ рдкрд╛рдардХрд╣рд░реВрд▓реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рдпреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЖрдлреНрдиреИ рддрд░рд┐рдХрд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреЗрдЫрдиреН, рддрд░ рд╣рд╛рдореАрд▓реЗ рд╡рд┐рдЪрд╛рд░рд╣рд░реВрдХреЛ рдЖрдлреНрдиреИ рдЪрдпрди рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНтАНрдпреМрдВ - рдпрджрд┐ рдХрд╕реИрд▓рд╛рдИ рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдЫ, рддрд░ рдкреБрд░реБрд╖рд╣рд░реВрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫреИрди?
- рдЖрдлреНрдиреЛ рд╕рд░рд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ, рдкреЛрд░реНрдЯрдлреЛрд▓рд┐рдпреЛ, рдХреЛрдб рд╕рдВрдЧ рдкреБрдирдГрд╕реБрд░реБ, рдЖрджрд┐ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реНред рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рддрдкрд╛рдИрдВрдХреЛ рдЖрдлреНрдиреИ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯрд▓реЗ рд░реЛрдЬрдЧрд╛рд░рджрд╛рддрд╛рдорд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрд╛рд░реНрдЫред рдпрд╕рд▓рд╛рдИ рдЖрдлреНрдиреЛ VPS рдорд╛ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН рд░ рд╕рд╛рдЗрдЯрдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рд░ рд╕реНрдерд┐рд░рддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЖрдлреИрдВ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рд╣реБрдиреБрд╣реЛрд╕реН, рд░ рдирд┐рдпрдорд┐рдд рд╣реЛрд╕реНрдЯрд┐рдЩ рдкреНрд░рджрд╛рдпрдХрд╣рд░реВрдХреЛ рдХрд░реНрдордЪрд╛рд░реАрджреНрд╡рд╛рд░рд╛ рд╣реЛрдЗрдиред
- рд╢реИрдХреНрд╖рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ VPS рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН: рддрдкрд╛рдИрдВрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реЛрд╕реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╕рд░реНрднрд░ рд░ рд╕рд░реНрднрд░ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдордХрд╛ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЕрдзреНрдпрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН, DNS рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╕рд╛рдиреЛ рд╢реИрдХреНрд╖рд┐рдХ рд╕рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рдЯрд┐рдВрдХрд░ред
- рдЯреЗрд▓рд┐рдлреЛрдирдХреЛ рд▓рд╛рдЧрд┐ред рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрджреНрдпрдореА, рдлреНрд░реАрд▓рд╛рдиреНрд╕рд░ рд╡рд╛ рдзреЗрд░реИ рд╕рд╛рдиреЛ рдХрдореНрдкрдиреАрд▓рд╛рдИ рдЖрдИрдкреА рдЯреЗрд▓рд┐рдлреЛрдиреАрдХреЛ рд╕рдЦреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реБрдиреНрдЫ, рд░ рдпреЛ рдзреЗрд░реИ рдЯреЗрд▓рд┐рдлреЛрдиреАрдХреЛ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рдзреЗрд░реИ рд▓реЛрднреА рд╣реБрдиреНрдЫрдиреНред рдпреЛ рд╕рд░рд▓ рдЫ: рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рд╕рд░реНрднрд░ рд▓рд┐рдиреНрдЫреМрдВ, рдЖрдИрдкреА рдЯреЗрд▓рд┐рдлреЛрдиреА рдЕрдкрд░реЗрдЯрд░рдмрд╛рдЯ рдирдореНрдмрд░ рдЦрд░рд┐рдж рдЧрд░реНрдЫреМрдВ, рднрд░реНрдЪреБрдЕрд▓ PBX рд╕реЗрдЯрдЕрдк рдЧрд░реНрдЫреМрдВ рд░ рдЖрдиреНрддрд░рд┐рдХ рдирдореНрдмрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫреМрдВ (рдЖрд╡рд╢реНрдпрдХ рднрдПрдорд╛)ред рдмрдЪрдд рдареВрд▓реЛ рдЫред
- рддрдкрд╛рдЗрдБрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рд╕рд░реНрднрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рд╕реНрдорд╛рд░реНрдЯ рдЧреГрд╣ рдкреНрд░рдгрд╛рд▓реА рд╕реЗрдиреНрд╕рд░рд╣рд░реВрдмрд╛рдЯ рдбреЗрдЯрд╛ рдирд┐рдпрдиреНрддреНрд░рдг рд░ рд╕рдЩреНрдХрд▓рди рд╕рд╣рд┐рдд DIY рдкреНрд░рдпреЛрдЧрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рд╕рд░реНрднрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдПрдЙрдЯрд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рддрд░рд┐рдХрд╛ рд╕рд░реНрднрд░рдорд╛ рднрд░реНрдЪреБрдЕрд▓ рдПрдХреНрд╕рдЪреЗрдиреНрдЬ рдЯреНрд░реЗрдбрд┐рдЩ рд╕рд╣рд╛рдпрдХ, рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рд░реЛрдмреЛрдЯ рд░рд╛рдЦреНрдиреБ рд╣реЛред рддрдкрд╛рдИрдВ рд╕рд░реНрднрд░рдХреЛ рд╕реНрдерд┐рд░рддрд╛ рд░ рд╕реБрд░рдХреНрд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рд╣реБрдиреБрд╣реБрдиреЗрдЫ, рдЬрд╕рдХреЛ рдорддрд▓рдм рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдЯрдХ рдмрдЬрд╛рд░рд╣рд░реВрдорд╛ рд╡реНрдпрд╛рдкрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рдпрдиреНрддреНрд░рд┐рдд рдЙрдкрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫред рдЦреИрд░, рдпрджрд┐ рдХрд╕реИрд▓рд╛рдИ рдЪрд╛рд╕реЛ рд╡рд╛ рдпреЛрдЬрдирд╛ рдЫ :)
рдХрд░реНрдкреЛрд░реЗрдЯ рдХреНрд╖реЗрддреНрд░рдорд╛ рддреНрдпрд╕реНрддрд╛ VPS рдХреЛ рд▓рд╛рдЧреА рдЖрд╡реЗрджрдирд╣рд░реВ рдЫрдиреНред рдкрд╣рд┐рд▓реЗ рдиреИ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХреЛ рдЯреЗрд▓рд┐рдлреЛрди рд╕реЗрд╡рд╛рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рддрдкрд╛рдИрдВ рдзреЗрд░реИ рд░реЛрдЪрдХ рдХреБрд░рд╛рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:
- рд╕рд╛рдирд╛ рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ рд░ рдЬрд╛рдирдХрд╛рд░реА рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН рдЬреБрди рдЯрд╛рдврд╛рдорд╛ рдпрд╛рддреНрд░рд╛ рдЧрд░реНрдиреЗ рдХрд░реНрдордЪрд╛рд░реАрд╣рд░реВрд▓рд╛рдИ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рд╣реБрдиреЗрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, ftp рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ред рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдзреЗрд░реИ рдЪрд╛рдБрдбреИ рддрд╛рдЬрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╣рд░реВ, рдмрд┐рдХреНрд░реА рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ, рдкреНрд░рд╕реНрддреБрддреАрдХрд░рдгрд╣рд░реВ, рдЖрджрд┐ рдЖрджрд╛рди рдкреНрд░рджрд╛рди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫред
- рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╡рд╛ рдорд┐рдбрд┐рдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╛ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрд▓рд╛рдИ рдЕрд╕реНрдерд╛рдпреА рдкрд╣реБрдБрдЪ рджрд┐рдиреБрд╣реЛрд╕реНред
рейреж rubles рдХреЛ рд▓рд╛рдЧрд┐ VPS рдЯреЗрд╕реНрдЯ рдбреНрд░рд╛рдЗрдн - рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдЧрд░рд┐рдпреЛ
30 rubles рдпрддрд┐ рдереЛрд░реИ рдЫ рдХрд┐ рддрдкрд╛рдИрдВ рднреБрдХреНрддрд╛рди рдЧрд░реНрди рд░ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдХрд╛рд░реНрдб рдирд┐рдХрд╛рд▓реНрди рдкрдирд┐ рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдиред рд╣рд╛рдореА рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдзреЗрд░реИ рдЕрд▓реНрдЫреА рдкрдирд┐ рдЫреМрдВ, рддрд░ рдпрд╕ рдкрдЯрдХ рд╣рд╛рдореАрд▓реЗ рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИ рдЧрд░реНрдпреМрдВред рд╕рд░реНрднрд░рд╣рд░реВ рдпреБрджреНрдзрдорд╛ рд╕реБрд░реВ рдЧрд░реНрдиреБ рдЕрдШрд┐, рд╣рд╛рдореАрд▓реЗ рд╕рдмреИ рд╡рд┐рд╡рд░рдгрд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реНрди рд░ рдпрд╕ рдЯреНрдпрд╛рд░рд┐рдлрдорд╛ рд╕рд░реНрднрд░рд╣рд░реВ рдХреЗ рд╕рдХреНрд╖рдо рдЫрдиреН рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрдпреМрдВред рдпрд╕рд▓рд╛рдИ рдердк рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ рдЪрд░рдо рдердкреНрдпреМрдВ рд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдпреМрдВ рдХрд┐ рдпреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓реЗ рдХрд╕рд░реА рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрдЫ рдпрджрд┐ рдШрдирддреНрд╡ рд░ рд▓реЛрдбрд▓реЗ рд╣рд╛рдореАрд▓реЗ рд╕реЗрдЯ рдЧрд░реЗрдХрд╛ рдорд╛рдирд╣рд░реВ рдирд╛рдШреНрдпреЛред
рд╣реЛрд╕реНрдЯ рдзреЗрд░реИ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВрдХреЛ рд▓реЛрдб рдЕрдиреНрддрд░реНрдЧрдд рдерд┐рдпреЛ рдЬрд╕рд▓реЗ рдкреНрд░реЛрд╕реЗрд╕рд░рдорд╛ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдпреЛ рд░ рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рдбрд┐рд╕реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреЛред рд▓рдХреНрд╖реНрдп рднрдиреЗрдХреЛ рдкреНрд▓реЗрд╕рдореЗрдиреНрдЯрдХреЛ рдЙрдЪреНрдЪ рдШрдирддреНрд╡ рд░ рд▓рдбрд╛рдИрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрди рдорд┐рд▓реНрдиреЗ рд╡рд╛ рддреНрдпреЛрднрдиреНрджрд╛ рдареВрд▓реЛ рд▓реЛрдбрдХреЛ рдирдХреНрдХрд▓ рдЧрд░реНрдиреБ рд╣реЛред
рд╕реНрдерд┐рд░ рд▓реЛрдбрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рд╛рдореАрд▓реЗ 3 рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдпреМрдВ рдЬрд╕рд▓реЗ sysbench рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╕рдЩреНрдХрд▓рди рдЧрд░реНтАНрдпреЛ, рдЬрд╕рдХреЛ рдФрд╕рдд рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рддрд▓ рджрд┐рдЗрдпреЛ, рд░ 50 рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рдЬрд╕рд▓реЗ рдердк рд▓реЛрдб рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНтАНрдпреЛред рд╕рдмреИ рдкрд░реАрдХреНрд╖рдг рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВрдорд╛ рд╕рдорд╛рди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдерд┐рдпреЛ (1 рдХреЛрд░, RAM 512 GB, SSD 10 GB), рдорд╛рдирдХ рдбреЗрдмрд┐рдпрди 9.6 рдЫрд╡рд┐ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдордХреЛ рд░реВрдкрдорд╛ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬреБрди RUVDS рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рдЫред
рд▓реЛрдб рдкреНрд░рдХреГрддрд┐ рд░ рд▓рдбрд╛рдИ рдХреЛ рддреБрд▓рдирд╛ рдорд╛ рдкрд░рд┐рдорд╛рдг рдорд╛ рдирдХреНрдХрд▓ рдерд┐рдпреЛ:
- рдХреЗрд╣реА рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рдХрдо рд▓реЛрдбрдХреЛ рд╕рд╛рде рд╕реБрд░реВ рдЧрд░рд┐рдпреЛ
- рдХреЗрд╣рд┐ рдореЗрд╢рд┐рдирд╣рд░реВрд▓реЗ рдкреНрд░реЛрд╕реЗрд╕рд░рдорд╛ рд▓реЛрдб рд╕рд┐рдореБрд▓реЗрдЯ рдЧрд░реНрджреИ рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдП (рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░
рддрдирд╛рд╡ ) - рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВрдХреЛ рдмрд╛рдБрдХреА рднрд╛рдЧрдорд╛, рд╣рд╛рдореАрд▓реЗ pv рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реАрдорд╛ рд╕реЗрдЯрдХреЛ рд╕рд╛рде рдбрд┐рд╕реНрдХрдорд╛ рдкреВрд░реНрд╡-рддрдпрд╛рд░ рдбрд╛рдЯрд╛рдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди dd рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдпреМрдВ (рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫред
рдпрд╣рд╛рдБ ╨╕рдпрд╣рд╛рдБ ).
рд╕рд╛рдереИ, рддрдкрд╛рдИрд▓рд╛рдИ рд╕рдореНрдЭрдирд╛ рдЕрдиреБрд╕рд╛рд░, рд╣рд╛рдореАрд╕рдБрдЧ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреЗ рддреАрдирд╡рдЯрд╛ рдореЗрд╕рд┐рдирд╣рд░реВ рдерд┐рдПред
рдкреНрд░рддреНрдпреЗрдХ рдореЗрд╕рд┐рдирдорд╛, рдкреНрд░рддреНрдпреЗрдХ 15 рдорд┐рдиреЗрдЯрдорд╛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрдХреНрд░реАрдп рд░реВрдкрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬрд╕рд▓реЗ рдкреНрд░реЛрд╕реЗрд╕рд░, рдореЗрдореЛрд░реА рд░ рдбрд┐рд╕реНрдХрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рдирдХ sysbench рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдБрдЫред
Script 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 upgrade
- apt-get python-pip рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
- pip рд╕реНрдерд╛рдкрдирд╛ mysql-connector-python-rf
рдорд╛рд░рд┐рдпрд╛рдбреАрдмреА рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рдпреЛ, рдХрд╕рд░реА рдЧрд░реНрдиреЗ
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
dept_emp
331143
11.52
5648.00
dept_manager
24
0.02
16.00
рдХрд░реНрдордЪрд╛рд░реАрд╣рд░реБ
299379
14.52
0.00
рд╡реЗрддрди
2838426
95.63
0.00
рд╢реАрд░реНрд╖рдХрд╣рд░реВ
442783
19.56
0.00
рдкрд╛рдЗрдерди рдорд╛ рдШреБрдБрдбрд╛ рдорд╛ рдПрдХ рдЖрджрд┐рдо рдкрд░реАрдХреНрд╖рдг рд╕реЗрд╡рд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ; рдпрд╕рд▓реЗ рдЪрд╛рд░ рдЕрдкрд░реЗрд╢рди рдЧрд░реНрджрдЫ:
- getState: рд╕реНрдерд┐рддрд┐ рдлрд░реНрдХрд╛рдЙрдБрдЫ
- getEmployee: рдбрд╛рдЯрд╛рдмреЗрд╕рдмрд╛рдЯ рдХрд░реНрдордЪрд╛рд░реАрд╣рд░реВ (+ рд╡реЗрддрди, + рд╢реАрд░реНрд╖рдХрд╣рд░реВ) рдлрд░реНрдХрд╛рдЙрдБрдЫ
- patchEmployee: рдХрд░реНрдордЪрд╛рд░реА рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрдЫ
- insertSalary: рддрд▓рдм рдШреБрд╕рд╛рдЙрдиреБрд╣реЛрд╕реН
рд╕реЗрд╡рд╛ рд╕реНрд░реЛрдд (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
рддрд▓ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдФрд╕рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордпрд╣рд░реВ рдЫрдиреН:
рд▓реЗрдмрд▓
рдФрд╕рдд
рдореЗрдбрд┐рдпрди
репреж% рд░реЗрдЦрд╛
репреж% рд░реЗрдЦрд╛
репреж% рд░реЗрдЦрд╛
рдиреНрдпреВрдирддрдо
рдЕрдзрд┐рдХрддрдо
рдХрд░реНрдордЪрд╛рд░реА рдкрд╛рдЙрдиреБрд╣реЛрд╕реН
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
рдкреНрдпрд╛рдЪ рдХрд░реНрдордЪрд╛рд░реА
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
рдпреА рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдирддрд┐рдЬрд╛рд╣рд░реВрдмрд╛рдЯ рдпреЛ VPS рддрдкрд╛рдИрдВрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХрддреНрддрд┐рдХреЛ рдЙрдкрдпреБрдХреНрдд рдЫ рднрдиреЗрд░ рдирд┐рд░реНрдгрдп рдЧрд░реНрди рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЧрд╛рд╣реНрд░реЛ рд╣реБрди рд╕рдХреНрдЫ рд░ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд╕реВрдЪреАрдмрджреНрдз рд╡рд┐рдзрд┐рд╣рд░реВ рддреА рдХреЗрд╕рд╣рд░реВрдорд╛ рд╕реАрдорд┐рдд рдЫрдиреН рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреБрдкрд░реНрдиреЗ рдерд┐рдпреЛред рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореНрд░реЛ рд╕реВрдЪреА рд╣реЛред рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдкреВрд░реНрдг рдЫреИрдиред рд╣рд╛рдореА рддрдкрд╛рдЗрдБрд▓рд╛рдИ рддрдкрд╛рдЗрдБрдХреЛ рдЖрдлреНрдиреИ рдирд┐рд╖реНрдХрд░реНрд╖рд╣рд░реВ рдХреЛрд░реНрди рд░ рддрдкрд╛рдЗрдБрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд░ рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ 30 rubles рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд░реНрднрд░ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рд░ рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВрдорд╛ рдпреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдЗрдБрдХрд╛ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рд╕реБрдЭрд╛рд╡ рджрд┐рди рдЖрдордиреНрддреНрд░рд┐рдд рдЧрд░реНрджрдЫреМрдВред
рд╕реНрд░реЛрдд: www.habr.com