เบชเบฐเบซเบกเบญเบ‡ + VPS เบชเปเบฒเบฅเบฑเบš 30 rubles =?

เบกเบฑเบ™เบ”เบตเบซเบผเบฒเบเป€เบกเบทเปˆเบญเบกเบตเบชเบดเปˆเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเบ—เบตเปˆเบˆเบณเป€เบ›เบฑเบ™เบ—เบฑเบ‡เปเบปเบ”เบขเบนเปˆเปƒเบ™เบกเบท: เบ›เบฒเบเบเบฒ เปเบฅเบฐ เปเบœเปˆเบ™เบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบ”เบต, เบชเปเปเบซเบผเบก, เป€เบกเบปเบฒเบชเปŒเบ—เบตเปˆเบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบ, เบชเบญเบ‡เบชเบฒเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบชเบดเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบ”เบถเบ‡เบ”เบนเบ”เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆ, เปเบ•เปˆเป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบเปƒเบซเป‰เบเบฑเบšเบŠเบตเบงเบดเบ”. เป€เบฅเบทเปˆเบญเบ‡เบ”เบฝเบงเบเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบกเบทเบ–เบทเปเบฅเบฐ desktop เบ•เปˆเบฒเบ‡เป†: เบชเปเบฒเบฅเบฑเบš screenshots เบเบฒเบง, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบฎเบนเบš, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบเบฒเบ™เป€เบ‡เบดเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™, เบˆเบฐเบ™เบฒเบ™เบธเบเบปเบก, เบ™เบฑเบเปเบ›, เปเบ›เบ‡, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เป€เบˆเบปเป‰เบฒเบกเบตเบญเบฑเบ™เบ™เบตเป‰เบšเป? VPS - เบ—เบตเปˆเบฅเบฒเบ„เบฒเบ–เบทเบ, เบชเบฐเป€เบซเบกเบตเบขเบนเปˆเปƒเบ™เบกเบทเปเบฅเบฐเบ™เปเบฒเป€เบญเบปเบฒเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบ? เบšเปเปˆ, เบšเปเปˆเปเบกเปˆเบ™เบญเบฑเบ™เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบกเบตเบขเบนเปˆเปƒเบ™เบšเปเบฅเบดเบชเบฑเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ, เปเบ•เปˆเป€เบˆเบปเป‰เบฒเป€เบญเบ‡, "เบเบฐเป€เบ›เบปเป‹เบฒ" เบญเบฑเบ™เปœเบถเปˆเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบงเปˆเบฒเป‚เบ”เบเบšเปเปˆเบกเบต VPS เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเปƒเบ™เบ›เบต 2019 เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเป€เบชเบปเป‰เบฒเปƒเบˆ, เบ„เบทเบเบฑเบ™เบเบฑเบšเบšเปเปˆเบกเบตเบ›เบฒเบเบเบฒ fountain เบ›เบปเบเบเบฐเบ•เบดเบขเบนเปˆเปƒเบ™เบเบฒเบ™เบšเบฑเบ™เบเบฒเบ. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ•เป‰เบญเบ‡เป€เบชเบปเป‰เบฒ? เบกเบฑเบ™เป€เบ›เบฑเบ™เบฅเบฐเบ”เบนเบฎเป‰เบญเบ™. เบฅเบฐเบ”เบนเบฎเป‰เบญเบ™เป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”? Summer เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เป„เบญเบ—เบต: เบ™เบฑเปˆเบ‡เบขเบนเปˆเป€เบฎเบทเบญเบ™, เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบกเบฑเบเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบชเบเปƒเบˆเปƒเบ”เป†. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เปเบฅเบฐเป€เบฎเบฑเบ”เบกเบฑเบ™.

เบชเบฐเบซเบกเบญเบ‡ + VPS เบชเปเบฒเบฅเบฑเบš 30 rubles =?
เบ„เบญเบกเบกเบดเบงเบ™เบดเบ”เบกเบฒเบฎเบญเบ”เปเบฅเป‰เบง, เบชเบฐเบซเบฒเบ.

เบฅเบฒเบงเป€เบ›เบฑเบ™เปเบšเบšเบ™เบฑเป‰เบ™ - VPS เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเปเบฒเบฅเบฑเบšเบชเบฒเบกเบชเบดเบš

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบญเปˆเบฒเบ™เบซเบผเบฒเบเบšเบปเบ”เบ„เบงเบฒเบกเบˆเบฒเบเบ„เบนเปˆเปเบ‚เปˆเบ‡เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบ‚เบฝเบ™ 3-4 เบ›เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบเปˆเบฝเบงเบเบฑเบšเบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡ VPS เบฅเบฒเบ„เบฒเบ–เบทเบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เบ”เบต, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ VPS "เบชเปเบฒเบฅเบฑเบšเป€เบ‡เบดเบ™" เปเบกเปˆเบ™เบเบฒเบ™เบ•เบฐเบซเบผเบฒเบ”เบ—เบตเปˆเบšเปเบฅเบดเบชเบธเบ”เปเบฅเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเบฐเป€เบซเบ™เบตเป‚เบญเบเบฒเบ”เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ›เบปเบเบเบฐเบ•เบด. เปเบ•เปˆเป€เบงเบฅเบฒเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ virtual เปเบกเปˆเบ™เบ•เปˆเปเบฒเปเบฅเบฐเบ•เปˆเปเบฒ, เปเบฅเบฐเบชเปเบฒเบฅเบฑเบš 30 rubles เบ•เปเปˆเป€เบ”เบทเบญเบ™เบžเบงเบเป€เบฎเบปเบฒเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบชเบฐเป€เบซเบ™เบตเบ™เบตเป‰:

  • เปœเปˆเบงเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™: Intel Xeon 2 GHz (1 core)
  • เบฅเบฐเบšเบปเบš Linux (Debian, Ubuntu, CentOS เบ—เบตเปˆเบˆเบฐเป€เบฅเบทเบญเบเป€เบญเบปเบฒเบˆเบฒเบ)
  • 1 เบ—เบตเปˆเบขเบนเปˆ IPv4 เบชเบฐเป€เบžเบฒเบฐ
  • เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™ 10 GB เปƒเบ™เป„เบ”เบฃเบŸเปŒ SSD เบฅเบฐเบ”เบฑเบšเบงเบดเบชเบฒเบซเบฐเบเบดเบ”เบ—เบตเปˆเป„เบง
  • RAM: 512 MB
  • เบ•เปเปˆเปƒเบšเบšเบดเบ™เบ—เบตเบชเบญเบ‡
  • เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบšเปเปˆเบˆเปเบฒเบเบฑเบ”

เบญเบฑเบ”เบ•เบฒเบžเบฒเบชเบตเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบš เบซเบ™เป‰เบฒ เบเบฒเบ™เบชเบฐเป€เบซเบ™เบตเป€เบขเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ - VPS เบชเปเบฒเบฅเบฑเบš 30 rubles. 

เป€เบŠเบตเบšเป€เบงเบตเบชเบฐเป€เปเบทเบญเบ™เบ™เบตเป‰เป€เปเบฒเบฐเบชเบณเบฅเบฑเบšเปƒเบœ? เปเบกเปˆเบ™เปเบฅเป‰เบงเบเบฑเบšเป€เบเบทเบญเบšเบ—เบธเบเบ„เบปเบ™: เบœเบนเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบœเบนเป‰เบเบฐเบ•เบทเบฅเบทเบฅเบปเป‰เบ™, เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™, เบžเบฑเบ”เบฅเบปเบก DIY เปเบฅเบฐเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบšเบฒเบ‡เบšเปเบฅเบดเบชเบฑเบ”.

VPS เบ™เบตเป‰เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบซเบเบฑเบ‡?

เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบงเปˆเบฒเบœเบนเป‰เบญเปˆเบฒเบ™เบ‚เบญเบ‡ Habr เปเบ™เปˆเบ™เบญเบ™เบˆเบฐเบŠเบญเบเบซเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบตเป‰, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เป€เบฅเบทเบญเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡ - เบ–เป‰เบฒเปƒเบœเบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบกเบฑเบ™, เปเบ•เปˆเบœเบนเป‰เบŠเบฒเบเบšเปเปˆเบฎเบนเป‰?

  • เบงเบฒเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ‡เปˆเบฒเบเป†เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ, เบซเบผเบฑเบเบŠเบฑเบš, เบŠเบตเบงเบฐเบ›เบฐเบซเบงเบฑเบ”เบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เปเบ™เปˆเบ™เบญเบ™, เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบญเบญเบเปเบšเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบ›เบฐเบ—เบฑเบšเปƒเบˆเบเบฑเบšเบ™เบฒเบเบˆเป‰เบฒเบ‡. เบงเบฒเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™ VPS เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ•เปเปˆเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเปเบฅเบฐเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ‚เบญเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡, เปเบฅเบฐเบšเปเปˆเปเบกเปˆเบ™เป‚เบ”เบเบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ›เบปเบเบเบฐเบ•เบด.
  • เปƒเบŠเป‰ VPS เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบถเบเบชเบฒ: เป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบšเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบชเบถเบเบชเบฒเบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบฅเบฐเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบ—เบปเบ”เบฅเบญเบ‡ DNS, tinker เบเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบเบฒเบ™เบชเบถเบเบชเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ.
  • เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ—เบฅเบฐเบชเบฑเบš. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™, เบญเบดเบ”เบชเบฐเบซเบผเบฐเบซเบผเบทเบšเปเบฅเบดเบชเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบซเบผเบฒเบเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ—เบฅเบฐเบชเบฑเบš IP, เปเบฅเบฐเบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบ‚เบญเบ‡เป‚เบ—เบฅเบฐเบชเบฑเบšเบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเป‚เบฅเบšเบซเบผเบฒเบ. เบกเบฑเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ: เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบŠเบทเป‰เบ•เบปเบงเป€เบฅเบเบˆเบฒเบเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบ—เบฅเบฐเบชเบฑเบš IP, เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ PBX virtual เปเบฅเบฐเบชเป‰เบฒเบ‡เบ•เบปเบงเป€เบฅเบเบžเบฒเบเปƒเบ™ (เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™). เป€เบ‡เบดเบ™เบเบฒเบเบ›เบฐเบขเบฑเบ”เปเบกเปˆเบ™เบกเบฐเบซเบฒเบชเบฒเบ™.
  • เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบžเบทเปˆเบญเบ—เบปเบ”เบชเบญเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™.
  • เปƒเบŠเป‰เป€เบŠเบตเบšเป€เบงเบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡ DIY, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเปเบฅเบฐเป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเป€เบŠเบฑเบ™เป€เบŠเบตเบฅเบฐเบšเบปเบšเป€เบฎเบทเบญเบ™ smart.
  • เบงเบดเบ—เบตเบ—เบตเปˆเบœเบดเบ”เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบกเบฑเบ™เปเบกเปˆเบ™เบเบฒเบ™เบงเบฒเบ‡เบœเบนเป‰เบŠเปˆเบงเบเบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเปเบฅเบเบ›เปˆเบฝเบ™ virtual, เบซเบธเปˆเบ™เบเบปเบ™เบเบฒเบ™เบ„เป‰เบฒ, เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. เบ—เปˆเบฒเบ™เบˆเบฐเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เปเบฅเบฐเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ„เบงเบšเบ„เบธเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเปƒเบ™เบ•เบฐเบซเบผเบฒเบ”เบซเบผเบฑเบเบŠเบฑเบš. เบ”เบต, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเปƒเบœเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบซเบผเบทเบงเบฒเบ‡เปเบœเบ™ :)

เบกเบตเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบš VPS เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบขเบนเปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”. เบ™เบญเบเป€เบซเบ™เบทเบญเป„เบ›เบˆเบฒเบเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป‚เบ—เบฅเบฐเบชเบฑเบšเบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปเบฅเป‰เบง, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบฒเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

  • เบงเบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบˆเบฐเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เป€เบ”เบตเบ™เบ—เบฒเบ‡เปƒเบ™เป„เบฅเบเบฐเป„เบ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ ftp. เบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบฅเบเบ›เปˆเบฝเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบปเบ”, เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเบ„เบปเบ™เบ‚เบฒเบ, เบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบต, เปเบฅเบฐเบญเบทเปˆเบ™เป†เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ.
  • เปƒเบซเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบŠเบปเปˆเบงเบ„เบฒเบงเปเบเปˆเบœเบนเป‰เปƒเบŠเป‰เบซเบผเบทเบฅเบนเบเบ„เป‰เบฒเป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบŠเบญเบšเปเบงเบซเบผเบทเบชเบทเปˆ.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš VPS เบชเปเบฒเบฅเบฑเบš 30 rubles - เป€เบฎเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™

30 เบฎเบนเป€เบšเบตเบ™เปเบกเปˆเบ™เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเบšเบฑเบ”เป€เบžเบทเปˆเบญเบˆเปˆเบฒเบเปเบฅเบฐเบ—เบปเบ”เบชเบญเบš. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบžเบงเบเป€เบฎเบปเบฒเบเปเปˆเบ‚เบตเป‰เบ„เป‰เบฒเบ™เบ„เบทเบเบฑเบ™, เปเบ•เปˆเป€เบ—เบทเปˆเบญเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเป€เบˆเบปเป‰เบฒ. เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเป€เบŠเบตเบŸเป€เบงเบตเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบชเบนเป‰เบฎเบปเบš, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบซเบเบฑเบ‡เปเบ”เปˆเปƒเบ™เบญเบฑเบ”เบ•เบฒเบžเบฒเบชเบตเบ™เบตเป‰. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบฎเป‰เบฒเบเปเบฎเบ‡เปเบฅเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบตเป‰เบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบ„เบงเบฒเบกเบซเบ™เบฒเปเบซเบ™เป‰เบ™เปเบฅเบฐเบเบฒเบ™เป‚เบซเบผเบ”เป€เบเบตเบ™เบ„เปˆเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”. 

เป€เบˆเบปเป‰เบฒเบžเบฒเบšเปเบกเปˆเบ™เบขเบนเปˆเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป‚เบซเบผเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™เบ•เปˆเบฒเบ‡เป†เปƒเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเปเบฅเบฐเปƒเบŠเป‰เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบ‚เบญเบ‡เปเบœเปˆเบ™เบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™. เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบˆเปเบฒเบฅเบญเบ‡เบเบฒเบ™เบˆเบฑเบ”เบงเบฒเบ‡เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบ™เบฒเปเบซเบ™เป‰เบ™เบชเบนเบ‡เปเบฅเบฐเบเบฒเบ™เป‚เบซเบผเบ”เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบเบฒเบ™เบชเบนเป‰เบฎเบปเบš.

เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบเบฒเบ™เป‚เบซเบผเบ”เบ„เบปเบ‡เบ—เบตเปˆ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual 3 เป€เบ„เบทเปˆเบญเบ‡เบ—เบตเปˆเป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบงเบฑเบ”เปเบ—เบเบชเบฑเบ‡เป€เบ„เบฒเบฐเป‚เบ”เบเปƒเบŠเป‰ sysbench, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰, เปเบฅเบฐ 50 เป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆเบชเป‰เบฒเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual เบ—เบปเบ”เบชเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ”เบฝเบงเบเบฑเบ™ (1 core, RAM 512 GB, SSD 10 GB), เบฎเบนเบšเบžเบฒเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ debian 9.6 เบ–เบทเบเป€เบฅเบทเบญเบเป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™, เป€เบŠเบดเปˆเบ‡เบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™ RUVDS.

เบเบฒเบ™เป‚เบซเบผเบ”เป„เบ”เป‰เบ–เบทเบเบˆเปเบฒเบฅเบญเบ‡เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบเบฑเบšเบเบฒเบ™เบชเบนเป‰เบฎเบปเบš:

  • เบšเบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบงเบ”เป‰เบงเบเบเบฒเบ™เป‚เบซเบผเบ”เบ•เปˆเปเบฒ
  • เบšเบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เป„เบ”เป‰เปเบฅเปˆเบ™เบชเบฐเบ„เบฃเบดเบšเบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบˆเบณเบฅเบญเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบขเบนเปˆเปƒเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบต (เปƒเบŠเป‰เบ›เบฐเป‚เบซเบเบ” เบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™)
  • เปƒเบ™เบชเปˆเบงเบ™เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual, เบžเบงเบเป€เบฎเบปเบฒเปเบฅเปˆเบ™เบชเบฐเบ„เบดเบšเบ—เบตเปˆเปƒเบŠเป‰ dd เป€เบžเบทเปˆเบญเบ„เบฑเบ”เบฅเบญเบเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเบฝเบกเป„เบงเป‰เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒเปƒเบชเปˆเปเบœเปˆเบ™เบ”เบดเบ”เป‚เบ”เบเบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰ pv (เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰. เบ—เบตเปˆเบ™เบตเป‰ ะธ เบ—เบตเปˆเบ™เบตเป‰).

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบทเปˆ, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบฒเบกเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เบตเปˆเป€เบเบฑเบšเบเปเบฒ metrics เบชเบฑเบ‡เป€เบ„เบฒเบฐ.

เปƒเบ™เปเบ•เปˆเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ, script เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบฎเบญเบšเบงเบฝเบ™เบ—เบธเบเป† 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 update
  • เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ apt-get
  • apt-get install python-pip
  • pip เบ•เบดเบ”เบ•เบฑเป‰เบ‡ 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

เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ™เป‰เบญเบโ€‹:

เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ 

เบˆเบณเบ™เบงเบ™เปเบ–เบง 

เบ‚เบฐเปœเบฒเบ”เบ‚เปเป‰เบกเบนเบ™ (MB)

เบ‚เบฐเบซเบ™เบฒเบ”เบ”เบฑเบ”เบŠเบฐเบ™เบต (KB)

เบžเบฐเปเบ™เบ 

9

0.02

16.00

dept_emp 

331143 

11.52

5648.00

dept_manage 

24 

0.02

16.00

เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™ 

299379 

14.52

0.00

เป€เบ‡เบดเบ™เป€เบ”เบทเบญเบ™ 

2838426 

95.63

0.00 

เบซเบปเบงเบ‚เปเป‰ 

442783 

19.56

0.00

เบšเปเบฅเบดเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เปเบกเปˆเบ™เบ‚เบฝเบ™เบขเบนเปˆเป€เบ—เบดเบ‡เบซเบปเบงเป€เบ‚เบปเปˆเบฒเปƒเบ™ Python เบกเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบตเปˆเบขเปˆเบฒเบ‡:

  1. getState: เบชเบปเปˆเบ‡เบ„เบทเบ™เบชเบฐเบ–เบฒเบ™เบฐ
  2. getEmployee: เบชเบปเปˆเบ‡เบ„เบทเบ™เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™ (+ เป€เบ‡เบดเบ™เป€เบ”เบทเบญเบ™, + เบซเบปเบงเบ‚เปเป‰) เบˆเบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™
  3. patchEmployee: เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™
  4. 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

เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เป€เบงเบฅเบฒเบ•เบญเบšเบฎเบฑเบšเป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป:

Label

เบชเบฐเป€เบฅเปˆเบ

Median

90% เบชเบฒเบ

95% เบชเบฒเบ

99% เบชเบฒเบ

min

เบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเป€เบ„เบ

เบฎเบฑเบšเบžเบฐเบ™เบฑเบเบ‡เบฒเบ™

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

patch เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™

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 เบฎเบนเป€เบšเบตเบ™เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบฅเบฐเบซเบ™เป‰เบฒเบงเบฝเบเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเปเบ™เบฐเบ™เปเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบตเป‰เปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™