30 เจฐเฉ‚เจฌเจฒ เจฒเจˆ เจฆเจฟเจฎเจพเจ— + VPS =?

เจ‡เจน เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจœเจผเจฐเฉ‚เจฐเฉ€ เจ›เฉ‹เจŸเฉ€เจ†เจ‚ เจšเฉ€เจœเจผเจพเจ‚ เจนเฉฑเจฅ เจตเจฟเฉฑเจš เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ: เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจชเฉˆเฉฑเจจ เจ…เจคเฉ‡ เจจเฉ‹เจŸเจชเฉˆเจก, เจ‡เฉฑเจ• เจคเจฟเฉฑเจ–เฉ€ เจชเฉˆเจจเจธเจฟเจฒ, เจ‡เฉฑเจ• เจ†เจฐเจพเจฎเจฆเจพเจ‡เจ• เจฎเจพเจŠเจธ, เจ•เฉเจ เจตเจพเจงเฉ‚ เจคเจพเจฐเจพเจ‚, เจ†เจฆเจฟเฅค เจ‡เจน เจ…เจธเจชเจธเจผเจŸ เจšเฉ€เจœเจผเจพเจ‚ เจงเจฟเจ†เจจ เจจเจนเฉ€เจ‚ เจ–เจฟเฉฑเจšเจฆเฉ€เจ†เจ‚, เจชเจฐ เจœเจผเจฟเฉฐเจฆเจ—เฉ€ เจจเฉ‚เฉฐ เจ†เจฐเจพเจฎ เจฆเจฟเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ‡เจนเฉ€ เจ•เจนเจพเจฃเฉ€ เจตเฉฑเจ–-เจตเฉฑเจ– เจฎเฉ‹เจฌเจพเจˆเจฒ เจ…เจคเฉ‡ เจกเฉˆเจธเจ•เจŸเฉŒเจช เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจนเฉˆ: เจฒเฉฐเจฌเฉ‡ เจธเจ•เฉเจฐเฉ€เจจเจธเจผเฉŒเจŸเจธ เจฒเจˆ, เจคเจธเจตเฉ€เจฐ เจฆเฉ‡ เจ†เจ•เจพเจฐ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฒเจˆ, เจจเจฟเฉฑเจœเฉ€ เจตเจฟเฉฑเจค เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เจฐเจจ เจฒเจˆ, เจธเจผเจฌเจฆเจ•เฉ‹เจธเจผ, เจ…เจจเฉเจตเจพเจฆเจ•, เจ•เจจเจตเจฐเจŸเจฐ, เจ†เจฆเจฟ. เจ•เฉ€ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจนเฉˆ? VPS - เจœเฉ‹ เจธเจธเจคเจพ เจนเฉˆ, เจนเจฎเฉ‡เจธเจผเจพ เจนเฉฑเจฅ เจตเจฟเจš เจนเฉˆ เจ…เจคเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฒเจพเจญ เจฒเจฟเจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ? เจจเจนเฉ€เจ‚, เจ‰เจน เจจเจนเฉ€เจ‚ เจœเฉ‹ เจคเฉเจนเจพเจกเฉ€ เจ•เฉฐเจชเจจเฉ€ เจตเจฟเฉฑเจš เจนเฉˆ, เจชเจฐ เจคเฉเจนเจพเจกเฉ€ เจ†เจชเจฃเฉ€, "เจœเฉ‡เจฌ" เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจธเฉ‹เจšเจฟเจ† เจ•เจฟ 2019 เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ‡ VPS เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจ‡เจน เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจ‰เจฆเจพเจธ เจธเฉ€, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เฉฑเจ• เจฒเฉˆเจ•เจšเจฐ เจตเจฟเฉฑเจš เจ†เจฎ เจซเฉเจนเจพเจฐเจพ เจชเฉˆเฉฑเจจ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚เฅค เจ‰เจฆเจพเจธ เจ•เจฟเจ‰เจ‚ เจนเฉ‹เจฃเจพ? เจ‡เจน เจ—เจฐเจฎเฉ€ เจนเฉˆเฅค เจ—เจฐเจฎเฉ€เจ†เจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจนเจจ? เจ‡เฉฑเจ• IT เจฎเจพเจนเจฐ เจฒเจˆ เจ—เจฐเจฎเฉ€เจ†เจ‚: เจ˜เจฐ เจฌเฉˆเจ เฉ‡, เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจชเจ›เจคเจพเจตเฉ‡ เจฆเฉ‡ เจ†เจชเจฃเฉ‡ เจฎเจจเจชเจธเฉฐเจฆ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเฉ‹เฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ…เจธเฉ€เจ‚ เจธเฉ‹เจšเจฟเจ† เจ…เจคเฉ‡ เจ•เฉ€เจคเจพ.

30 เจฐเฉ‚เจฌเจฒ เจฒเจˆ เจฆเจฟเจฎเจพเจ— + VPS =?
เจ•เจฎเจฟเจŠเจจเจฟเจœเจผเจฎ เจ† เจ—เจฟเจ† เจนเฉˆ เจธเจพเจฅเฉ€เจ“เฅค

เจ‰เจน เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจนเฉˆ - เจคเฉ€เจน เจฒเจˆ เจธเจพเจกเฉ‡ เจตเฉ€.เจชเฉ€.เจเจธ

เจ…เจธเฉ€เจ‚ เจชเฉเจฐเจคเฉ€เจฏเฉ‹เจ—เฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฒเฉ‡เจ– เจชเฉœเฉเจนเฉ‡ เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจจเฉ‡ 3-4 เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ‚ เจฒเจฟเจ–เจฟเจ† เจธเฉ€ เจ•เจฟ เจ‡เฉฑเจ• เจธเจธเจคเฉ‡ VPS เจฆเฉ€ เจฒเฉ‹เฉœ เจ•เจฟเจ‰เจ‚ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ–เฉˆเจฐ, เจ‡เจน เจธเจนเฉ€ เจนเฉˆ, เจซเจฟเจฐ VPS "เจ‡เฉฑเจ• เจชเฉˆเจธเฉ‡ เจฒเจˆ" เจธเจผเฉเฉฑเจง เจฎเจพเจฐเจ•เฉ€เจŸเจฟเฉฐเจ— เจธเฉ€ เจ…เจคเฉ‡ เจ†เจฎ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจฎเฉŒเจ•เจฟเจ†เจ‚ เจฆเฉ€ เจชเฉ‡เจธเจผเจ•เจธเจผ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ€ เจธเฉ€เฅค เจชเจฐ เจธเจฎเจพเจ‚ เจฌเจฆเจฒ เจฐเจฟเจนเจพ เจนเฉˆ, เจตเจฐเจšเฉเจ…เจฒ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจ•เฉ€เจฎเจค เจ˜เฉฑเจŸ เจ…เจคเฉ‡ เจ˜เฉฑเจŸ เจนเฉเฉฐเจฆเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ 30 เจฐเฉ‚เจฌเจฒ เจ‡เฉฑเจ• เจฎเจนเฉ€เจจเฉ‡ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ‡เจน เจชเฉ‡เจธเจผเจ•เจธเจผ เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจนเจพเจ‚:

  • เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ: Intel Xeon 2 GHz (1 เจ•เฉ‹เจฐ)
  • เจฒเฉ€เจจเจ•เจธ เจธเจฟเจธเจŸเจฎ (เจšเฉเจฃเจจ เจฒเจˆ เจกเฉ‡เจฌเฉ€เจ…เจจ, เจ‰เจฌเฉฐเจŸเฉ‚, CentOS)
  • 1 เจธเจฎเจฐเจชเจฟเจค IPv4 เจชเจคเจพ
  • เจคเฉ‡เจœเจผ เจเจ‚เจŸเจฐเจชเฉเจฐเจพเจˆเจœเจผ-เจ•เจฒเจพเจธ SSD เจกเจฐเจพเจˆเจตเจพเจ‚ 'เจคเฉ‡ 10 GB เจกเจพเจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ
  • เจฐเฉˆเจฎ: 512 MB
  • เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ เจฌเจฟเจฒเจฟเฉฐเจ—
  • เจฌเฉ‡เจ…เฉฐเจค เจ†เจตเจพเจœเจพเจˆ

เจŸเฉˆเจฐเจฟเจซ เจตเจพเจงเฉ‚ เจคเจ•เจจเฉ€เจ•เฉ€ เจชเจพเจฌเฉฐเจฆเฉ€เจ†เจ‚ เจฆเฉ‡ เจ…เจงเฉ€เจจ เจนเฉˆ, เจตเฉ‡เจฐเจตเฉ‡ 'เจคเฉ‡ เจธเจซเจผเจพ เจธเจพเจกเฉ€ เจธเจผเจพเจจเจฆเจพเจฐ เจชเฉ‡เจธเจผเจ•เจธเจผ - 30 เจฐเฉ‚เจฌเจฒ เจฒเจˆ VPSเฅค 

เจ‡เจน เจตเจฐเจšเฉเจ…เจฒ เจธเจฐเจตเจฐ เจ•เจฟเจธ เจฒเจˆ เจขเฉเจ•เจตเจพเจ‚ เจนเฉˆ? เจนเจพเจ‚ เจฒเจ—เจญเจ— เจนเจฐ เจ•เจฟเจธเฉ‡ เจฒเจˆ: เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเจจ เจตเจพเจฒเฉ‡, เจ‰เจคเจธเจผเจพเจนเฉ€, เจคเจœเจฐเจฌเฉ‡เจ•เจพเจฐ เจตเจฟเจ•เจพเจธเจ•เจพเจฐ, DIY เจชเฉเจฐเจธเจผเฉฐเจธเจ• เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจ•เฉเจ เจ•เฉฐเจชเจจเฉ€เจ†เจ‚เฅค

เจ‡เจน VPS เจ•เจฟเจธ เจฒเจˆ เจขเฉเจ•เจตเจพเจ‚ เจนเฉˆ?

เจ…เจธเฉ€เจ‚ เจธเฉ‹เจšเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจนเฉˆเจฌเจฐ เจฆเฉ‡ เจชเจพเจ เจ• เจจเจฟเจธเจผเจšเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจธ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจ†เจชเจฃเจพ เจคเจฐเฉ€เจ•เจพ เจฒเฉฑเจญ เจฒเฉˆเจฃเจ—เฉ‡, เจชเจฐ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจตเจฟเจšเจพเจฐเจพเจ‚ เจฆเฉ€ เจ†เจชเจฃเฉ€ เจšเฉ‹เจฃ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ - เจ•เฉ€ เจœเฉ‡ เจ•เจฟเจธเฉ‡ เจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจชเจฐ เจชเฉเจฐเจธเจผ เจจเจนเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡?

  • เจ†เจชเจฃเฉ€ เจธเจงเจพเจฐเจจ เจตเฉˆเจฌเจธเจพเจˆเจŸ, เจชเฉ‹เจฐเจŸเจซเฉ‹เจฒเฉ€เจ“, เจ•เฉ‹เจก เจจเจพเจฒ เจฐเฉˆเจœเจผเจฟเจŠเจฎเฉ‡ เจ†เจฆเจฟ เจฐเฉฑเจ–เฉ‹เฅค เจฌเฉ‡เจธเจผเฉฑเจ•, เจคเฉเจนเจพเจกเฉ€ เจ†เจชเจฃเฉ€ เจกเจฟเจœเจผเจพเจˆเจจ เจ•เฉ€เจคเฉ€ เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจฎเจพเจฒเจ• 'เจคเฉ‡ เจธเจ•เจพเจฐเจพเจคเจฎเจ• เจชเฉเจฐเจญเจพเจต เจชเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‡เจธเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ VPS 'เจคเฉ‡ เจฐเฉฑเจ–เฉ‹ เจ…เจคเฉ‡ เจธเจพเจˆเจŸ เจฆเฉ€ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจ…เจคเฉ‡ เจธเจฅเจฟเจฐเจคเจพ เจฒเจˆ เจ–เฉเจฆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจฌเจฃเฉ‹, เจจเจพ เจ•เจฟ เจจเจฟเจฏเจฎเจค เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจชเฉเจฐเจฆเจพเจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจธเจŸเจพเจซ เจฆเฉเจ†เจฐเจพเฅค
  • เจตเจฟเจฆเจฟเจ…เจ• เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ VPS เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹: เจ†เจชเจฃเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ€ เจฎเฉ‡เจœเจผเจฌเจพเจจเฉ€ เจ•เจฐเฉ‹, เจธเจฐเจตเจฐ เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเจพ เจ…เจงเจฟเจเจจ เจ•เจฐเฉ‹, DNS เจจเจพเจฒ เจชเฉเจฐเจฏเฉ‹เจ— เจ•เจฐเฉ‹, เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ€ เจตเจฟเจฆเจฟเจ…เจ• เจธเจพเจˆเจŸ เจจเจพเจฒ เจŸเจฟเฉฐเจ•เจฐ เจ•เจฐเฉ‹เฅค
  • เจŸเฉˆเจฒเฉ€เจซเฉ‹เจจ เจฒเจˆเฅค เจ•เจˆ เจตเจพเจฐ เจ‡เฉฑเจ• เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจ‰เจฆเจฏเฉ‹เจ—เจชเจคเฉ€, เจซเฉเจฐเฉ€เจฒเจพเจ‚เจธเจฐ เจœเจพเจ‚ เจ‡เฉฑเจ• เจฌเจนเฉเจค เจ›เฉ‹เจŸเฉ€ เจ•เฉฐเจชเจจเฉ€ เจจเฉ‚เฉฐ เจ†เจˆเจชเฉ€ เจŸเฉˆเจฒเฉ€เจซเฉ‹เจจเฉ€ เจฆเฉ€ เจธเจ–เจผเจค เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธ เจŸเฉˆเจฒเฉ€เจซเฉ‹เจจเฉ€ เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจ• เจฌเจนเฉเจค เจฒเจพเจฒเจšเฉ€ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจ‡เจน เจธเจงเจพเจฐเจจ เจนเฉˆ: เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเจพ เจธเจฐเจตเจฐ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจพเจ‚, เจ‡เฉฑเจ• IP เจŸเฉˆเจฒเฉ€เจซเฉ‹เจจเฉ€ เจ†เจชเจฐเฉ‡เจŸเจฐ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเฉฐเจฌเจฐ เจ–เจฐเฉ€เจฆเจฆเฉ‡ เจนเจพเจ‚, เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ PBX เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจจเฉฐเจฌเจฐ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ (เจœเฉ‡ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡)เฅค เจฌเฉฑเจšเจคเจพเจ‚ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจนเจจเฅค
  • เจ†เจชเจฃเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจธเจฐเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹เฅค
  • DIY เจชเฉเจฐเจฏเฉ‹เจ—เจพเจ‚ เจฒเจˆ เจธเจฐเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹, เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจฎเจพเจฐเจŸ เจนเฉ‹เจฎ เจธเจฟเจธเจŸเจฎ เจธเฉˆเจ‚เจธเจฐเจพเจ‚ เจคเฉ‹เจ‚ เจกเจพเจŸเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ เจธเจผเจพเจฎเจฒ เจนเฉˆเฅค
  • เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจ…เจธเจพเจงเจพเจฐเจจ เจคเจฐเฉ€เจ•เจพ เจนเฉˆ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจŸเฉเจฐเฉ‡เจกเจฟเฉฐเจ— เจธเจนเจพเจ‡เจ•, เจ‡เฉฑเจ• เจตเจชเจพเจฐเจ• เจฐเฉ‹เจฌเฉ‹เจŸ, เจฒเจ—เจพเจ‰เจฃเจพเฅค เจคเฉเจธเฉ€เจ‚ เจธเจฐเจตเจฐ เจฆเฉ€ เจธเจฅเจฟเจฐเจคเจพ เจ…เจคเฉ‡ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฒเจˆ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉ‹เจตเฉ‹เจ—เฉ‡, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจŸเจพเจ• เจฌเจพเจœเจผเจพเจฐเจพเจ‚ 'เจคเฉ‡ เจตเจชเจพเจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจธเจพเจงเจจ เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจ–เฉˆเจฐ, เจœเฉ‡ เจ•เฉ‹เจˆ เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆ เจœเจพเจ‚ เจฏเฉ‹เจœเจจเจพ เจฌเจฃเจพ เจฐเจฟเจนเจพ เจนเฉˆ :)

เจ•เจพเจฐเจชเฉ‹เจฐเฉ‡เจŸ เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ‡ VPS เจฒเจˆ เจ…เจฐเจœเจผเฉ€เจ†เจ‚ เจนเจจเฅค เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฆเฉฑเจธเฉ€ เจ—เจˆ เจŸเฉˆเจฒเฉ€เจซเฉ‹เจจ เจธเฉ‡เจตเจพ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจคเฉเจธเฉ€เจ‚ เจ•เจˆ เจฆเจฟเจฒเจšเจธเจช เจšเฉ€เจœเจผเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹. เจ‰เจฆเจพเจนเจฐเจฃ เจฒเจˆ:

  • เจ›เฉ‹เจŸเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ…เจคเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฐเฉฑเจ–เฉ‹ เจœเฉ‹ เจฆเฉ‚เจฐเฉ€ 'เจคเฉ‡ เจฏเจพเจคเจฐเจพ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจ•เจฐเจฎเจšเจพเจฐเฉ€เจ†เจ‚ เจฒเจˆ เจชเจนเฉเฉฐเจšเจฏเฉ‹เจ— เจนเฉ‹เจตเฉ‡เจ—เฉ€, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, ftp เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจเฅค เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเจนเฉเจค เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจคเจพเจœเจผเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ, เจธเฉ‡เจฒเจœเจผ เจฒเฉ‹เจ•เจพเจ‚ เจฒเจˆ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚, เจชเฉ‡เจธเจผเจ•เจพเจฐเฉ€เจ†เจ‚ เจ†เจฆเจฟ เจฆเจพ เจ†เจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค
  • เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจœเจพเจ‚ เจฎเฉ€เจกเฉ€เจ† เจฆเจพ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจ•เจฐเจจ เจฒเจˆ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจœเจพเจ‚ เจ—เจพเจนเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ…เจธเจฅเจพเจˆ เจชเจนเฉเฉฐเจš เจฆเจฟเจ“เฅค

30 เจฐเฉ‚เจฌเจฒ เจฒเจˆ VPS เจŸเฉˆเจธเจŸ เจกเจฐเจพเจˆเจต - เจคเฉเจนเจพเจกเฉ‡ เจฒเจˆ เจ•เฉ€เจคเจพ เจ—เจฟเจ†

30 เจฐเฉ‚เจฌเจฒ เจ‡เฉฐเจจเฉ‡ เจ˜เฉฑเจŸ เจนเจจ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจญเฉเจ—เจคเจพเจจ เจ•เจฐเจจ เจ…เจคเฉ‡ เจŸเฉˆเจธเจŸ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจ•เจพเจฐเจก เจตเฉ€ เจจเจนเฉ€เจ‚ เจฒเฉˆเจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡เฅค เจ…เจธเฉ€เจ‚ เจ•เจˆ เจตเจพเจฐ เจฌเจนเฉเจค เจ†เจฒเจธเฉ€ เจตเฉ€ เจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚, เจชเจฐ เจ‡เจธ เจตเจพเจฐ เจ…เจธเฉ€เจ‚ เจคเฉเจนเจพเจกเฉ‡ เจฒเจˆ เจธเจญ เจ•เฉเจ เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจธเจฐเจตเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉœเจพเจˆ เจตเจฟเฉฑเจš เจฒเจพเจ‚เจš เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ…เจธเฉ€เจ‚ เจธเจพเจฐเฉ‡ เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‡เจน เจฆเจฐเจธเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจŸเฉˆเจธเจŸ เจ•เฉ€เจคเจพ เจ•เจฟ เจธเจฐเจตเจฐ เจ‡เจธ เจŸเฉˆเจฐเจฟเจซ เจตเจฟเฉฑเจš เจ•เฉ€ เจธเจฎเจฐเฉฑเจฅ เจนเจจเฅค เจ‡เจธ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจฆเจฟเจฒเจšเจธเจช เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ…เจคเจฟเจ…เฉฐเจค เจœเฉ‹เฉœเจฟเจ† เจ…เจคเฉ‡ เจœเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจ•เจฟ เจ‡เจน เจธเฉฐเจฐเจšเจจเจพ เจ•เจฟเจตเฉ‡เจ‚ เจตเจฟเจตเจนเจพเจฐ เจ•เจฐเฉ‡เจ—เฉ€ เจœเฉ‡เจ•เจฐ เจ˜เจฃเจคเจพ เจ…เจคเฉ‡ เจฒเฉ‹เจก เจธเจพเจกเฉ‡ เจฆเฉเจ†เจฐเจพ เจธเฉˆเฉฑเจŸ เจ•เฉ€เจคเฉ‡ เจฎเฉเฉฑเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจตเฉฑเจง เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค 

เจนเฉ‹เจธเจŸ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจฆเฉ‡ เจญเจพเจฐ เจนเฉ‡เจ  เจธเฉ€ เจœเฉ‹ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ 'เจคเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจธเจจ เจ…เจคเฉ‡ เจกเจฟเจธเจ• เจธเจฌ-เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจธเจฐเจ—เจฐเจฎเฉ€ เจจเจพเจฒ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจจเฅค เจŸเฉ€เจšเจพ เจชเจฒเฉ‡เจธเจฎเฉˆเจ‚เจŸ เจฆเฉ€ เจ‰เฉฑเจš เจ˜เจฃเจคเจพ เจ…เจคเฉ‡ เจฒเฉœเจพเจˆ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจœเจพเจ‚ เจ‡เจธ เจคเฉ‹เจ‚ เจตเฉฑเจง เจฒเฉ‹เจก เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐเจจเจพ เจนเฉˆเฅค

เจจเจฟเจฐเฉฐเจคเจฐ เจฒเฉ‹เจก เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ…เจธเฉ€เจ‚ 3 เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเฉ€เจ†เจ‚ เจนเจจ เจœเฉ‹ เจธเจฟเจธเจฌเฉˆเจ‚เจš เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจธเจฟเฉฐเจฅเฉˆเจŸเจฟเจ• เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจ‡เจ•เฉฑเจคเจฐ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจ, เจœเจฟเจธ เจฆเฉ‡ เจ”เจธเจค เจจเจคเฉ€เจœเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ—เจ เจนเจจ, เจ…เจคเฉ‡ 50 เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจœเฉ‹ เจตเจพเจงเฉ‚ เจฒเฉ‹เจก เจฌเจฃเจพเจ‰เจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจธเจพเจฐเฉ€เจ†เจ‚ เจŸเฉˆเจธเจŸ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจธเฉ€ (1 เจ•เฉ‹เจฐ, RAM 512 GB, SSD 10 GB), เจธเจŸเฉˆเจ‚เจกเจฐเจก เจกเฉ‡เจฌเฉ€เจ…เจจ 9.6 เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจตเจœเฉ‹เจ‚ เจšเฉเจฃเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจœเฉ‹ เจ•เจฟ RUVDS 'เจคเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉ‡เจธเจผ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจฒเฉ‹เจก เจ•เฉเจฆเจฐเจค เจตเจฟเฉฑเจš เจธเจฟเจฎเฉ‚เจฒเฉ‡เจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ เจฒเฉœเจพเจˆ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจฆเฉ€ เจคเฉ€เจฌเจฐเจคเจพ:

  • เจ•เฉเจ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจ˜เฉฑเจŸ เจฒเฉ‹เจก เจจเจพเจฒ เจฒเจพเจ‚เจš เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจธเจจ
  • เจ•เฉเจ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจจเฉ‡ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจ‰เฉฑเจคเฉ‡ เจฒเฉ‹เจก เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ‡เฉฑเจ• เจŸเฉˆเจธเจŸ เจธเจ•เฉเจฐเจฟเจชเจŸ เจšเจฒเจพเจˆ (เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจคเจฃเจพเจ…)
  • เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจฆเฉ‡ เจฌเจพเจ•เฉ€ เจฌเจšเฉ‡ เจนเจฟเฉฑเจธเฉ‡ 'เจคเฉ‡, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจ•เฉเจฐเจฟเจชเจŸ เจšเจฒเจพเจˆ เจœเฉ‹ เจชเฉ€เจตเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ‡เฉฑเจ• เจธเฉ€เจฎเจพ เจธเฉˆเฉฑเจŸ เจฆเฉ‡ เจจเจพเจฒ เจชเฉ‚เจฐเจต-เจคเจฟเจ†เจฐ เจกเฉ‡เจŸเจพ เจคเฉ‹เจ‚ เจกเจฟเจธเจ• เจตเจฟเฉฑเจš เจกเจพเจŸเจพ เจ•เจพเจชเฉ€ เจ•เจฐเจจ เจฒเจˆ dd เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ (เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจฆเฉ‡เจ–เฉ€เจ†เจ‚ เจœเจพ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ‡เฉฑเจฅเฉ‡ ะธ เจ‡เฉฑเจฅเฉ‡).

เจจเจพเจฒ เจนเฉ€, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฏเจพเจฆ เจนเฉˆ, เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจคเจฟเฉฐเจจ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจธเจจ เจœเฉ‹ เจธเจฟเฉฐเจฅเฉˆเจŸเจฟเจ• เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจ‡เจ•เฉฑเจ เฉ€เจ†เจ‚ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจธเจจเฅค

เจนเจฐเฉ‡เจ• เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡, เจนเจฐ 15 เจฎเจฟเฉฐเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจšเฉฑเจ•เจฐ เจจเจพเจฒ เจšเจฒเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจธเฉ€, เจœเฉ‹ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ, เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ…เจคเฉ‡ เจกเจฟเจธเจ• เจฒเจˆ เจฎเจฟเจ†เจฐเฉ€ เจธเจฟเจธเจฌเฉˆเจ‚เจš เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

เจธเจ•เฉเจฐเจฟเจชเจŸ 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 เจ…เฉฑเจชเจ—เจฐเฉ‡เจก
  • เจชเจพเจˆเจฅเจจ-เจชเจพเจˆเจช เจธเจฅเจพเจชเจค เจ•เจฐเฉ‹
  • pip install 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

เจ›เฉ‹เจŸเจพ เจŸเฉˆเจธเจŸ เจ…เจงเจพเจฐ:

เจธเจพเจฐเจฃเฉ€ 

เจ•เจคเจพเจฐเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ 

เจกเจพเจŸเจพ เจ†เจ•เจพเจฐ (MB)

เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฆเจพ เจ†เจ•เจพเจฐ (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

เจชเจพเจˆเจฅเจจ เจตเจฟเฉฑเจš เจ—เฉ‹เจกเฉ‡ เจ‰เฉฑเจคเฉ‡ เจ‡เฉฑเจ• เจฎเฉเฉฑเจขเจฒเฉ€ เจœเจพเจ‚เจš เจธเฉ‡เจตเจพ เจฒเจฟเจ–เฉ€ เจ—เจˆ เจนเฉˆ; เจ‡เจน เจšเจพเจฐ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ:

  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')

เจธเจพเจตเจงเจพเจจ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจนเจพเจฒเจค เจตเจฟเฉฑเจš เจ‡เจธ เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจœเจพเจ‚ เจฎเจพเจฐเจ—เจฆเจฐเจธเจผเจ• เจตเจœเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจฒเจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ!

เจšเฉฐเจ—เฉ‡ เจชเฉเจฐเจพเจฃเฉ‡ เจœเฉ‡เจฎเฉ€เจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจŸเฉˆเจธเจŸ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค 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

เจ‡เจนเจจเจพเจ‚ เจธเจฟเฉฐเจฅเฉˆเจŸเจฟเจ• เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจคเฉ‹เจ‚ เจ‡เจน เจจเจฟเจฐเจฃเจพ เจ•เจฐเจจเจพ เจคเฉเจนเจพเจกเฉ‡ เจฒเจˆ เจ”เจ–เจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เจน VPS เจคเฉเจนเจพเจกเฉ‡ เจ–เจพเจธ เจ•เจพเจฐเจœเจพเจ‚ เจฒเจˆ เจ•เจฟเฉฐเจจเจพ เจขเฉเจ•เจตเจพเจ‚ เจนเฉˆ เจ…เจคเฉ‡, เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจธเฉ‚เจšเฉ€เจฌเฉฑเจง เจคเจฐเฉ€เจ•เฉ‡ เจ‰เจนเจจเจพเจ‚ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจคเฉฑเจ• เจธเฉ€เจฎเจฟเจค เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจจเจพเจฒ เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจœเจพเจ‚ เจฆเฉ‚เจœเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจจเจœเจฟเฉฑเจ เจฃเจพ เจชเจฟเจ† เจธเฉ€, เจ‡เจธ เจฒเจˆ เจธเจพเจกเฉ€ เจธเฉ‚เจšเฉ€ เจนเฉˆ. เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเฉฐเจชเฉ‚เจฐเจจ เจจเจนเฉ€เจ‚เฅค เจ…เจธเฉ€เจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ–เฉเจฆ เจฆเฉ‡ เจธเจฟเฉฑเจŸเฉ‡ เจ•เฉฑเจขเจฃ เจ…เจคเฉ‡ เจคเฉเจนเจพเจกเฉ€เจ†เจ‚ เจ…เจธเจฒ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจ…เจคเฉ‡ เจ•เจพเจฐเจœเจพเจ‚ 'เจคเฉ‡ 30 เจฐเฉ‚เจฌเจฒ เจฒเจˆ เจธเจฐเจตเจฐ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจ…เจคเฉ‡ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจ‡เจธ เจธเฉฐเจฐเจšเจจเจพ เจฒเจˆ เจ†เจชเจฃเฉ‡ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฆเจพ เจธเฉเจเจพเจ… เจฆเฉ‡เจฃ เจฒเจˆ เจธเฉฑเจฆเจพ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹