ΠΠ½ΠΎΠ³Ρ Π΅ ΡΠ±Π°Π²ΠΎ ΠΊΠΎΠ³Π° ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ ΡΠΈΡΠ½ΠΈΡΠΈ ΡΠ΅ ΠΏΡΠΈ ΡΠ°ΠΊΠ°: Π΄ΠΎΠ±ΡΠΎ ΠΏΠ΅Π½ΠΊΠ°Π»ΠΎ ΠΈ Π±Π΅Π»Π΅ΠΆΠ½ΠΈΠΊ, Π½Π°ΠΎΡΡΡΠ΅Π½ ΠΌΠΎΠ»ΠΈΠ², ΡΠ΄ΠΎΠ±Π½ΠΎ Π³Π»ΡΠ²ΡΠ΅, Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΆΠΈΡΠΈ ΠΈΡΠ½. ΠΠ²ΠΈΠ΅ Π½Π΅Π·Π°Π±Π΅Π»Π΅ΠΆΠ»ΠΈΠ²ΠΈ ΡΠ°Π±ΠΎΡΠΈ Π½Π΅ ΠΏΡΠΈΠ²Π»Π΅ΠΊΡΠ²Π°Π°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΊΡ Π΄ΠΎΠ΄Π°Π²Π°Π°Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΡΡ Π½Π° ΠΆΠΈΠ²ΠΎΡΠΎΡ. ΠΡΡΠ°ΡΠ° ΠΏΡΠΈΠΊΠ°Π·Π½Π° Π΅ ΠΈ ΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΠΈ Π΄Π΅ΡΠΊΡΠΎΠΏ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ: Π·Π° Π΄ΠΎΠ»Π³ΠΈ ΡΠ»ΠΈΠΊΠΈ ΠΎΠ΄ Π΅ΠΊΡΠ°Π½ΠΎΡ, Π·Π° Π½Π°ΠΌΠ°Π»ΡΠ²Π°ΡΠ΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° ΡΠ»ΠΈΠΊΠ°, Π·Π° ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π°ΡΠ΅ Π»ΠΈΡΠ½ΠΈ ΡΠΈΠ½Π°Π½ΡΠΈΠΈ, ΡΠ΅ΡΠ½ΠΈΡΠΈ, ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π°ΡΠΈ, ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΡΠΈ ΠΈΡΠ½. ΠΠ°Π»ΠΈ ΠΈΠΌΠ°Ρ Π΅Π΄Π½ΠΎ?
ΠΡΠΈΡΡΠΈΠ³Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠ·ΠΌΠΎΡ, Π΄ΡΡΠ³Π°ΡΠΈ.
Π’ΠΎΡ Π΅ ΡΠ°ΠΊΠΎΠ² - Π½Π°ΡΠΈΠΎΡ VPS Π·Π° ΡΡΠΈΠ΅ΡΠ΅Ρ
ΠΡΠΎΡΠΈΡΠ°Π²ΠΌΠ΅ ΠΌΠ½ΠΎΠ³Ρ Π½Π°ΠΏΠΈΡΠΈ ΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈ ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΊΠΎΠΈ ΠΏΠΈΡΡΠ²Π°Π° ΠΏΡΠ΅Π΄ 3-4 Π³ΠΎΠ΄ΠΈΠ½ΠΈ Π·Π° ΡΠΎΠ° Π·ΠΎΡΡΠΎ Π½Π΅ Π΅ ΠΏΠΎΡΡΠ΅Π±Π΅Π½ Π΅Π²ΡΠΈΠ½ VPS. ΠΠ°, ΡΠΎΠ° Π΅ ΡΠΎΡΠ½ΠΎ, ΡΠΎΠ³Π°Ρ VPS βΠ·Π° Π΅Π΄Π΅Π½ Π΄Π΅Π½Π°Ρβ Π±Π΅ΡΠ΅ ΡΠΈΡΡ ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ½ΡΠ΄ΠΈ Π½ΠΎΡΠΌΠ°Π»Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠΎ, Π²ΡΠ΅ΠΌΠΈΡΠ°ΡΠ° ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ, ΡΠ΅Π½Π°ΡΠ° Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ ΡΡΠ°Π½ΡΠ²Π° ΡΓ¨ ΠΏΠΎΠΌΠ°Π»Π° ΠΈ ΠΏΠΎΠΌΠ°Π»Π°, Π° Π·Π° 30 ΡΡΠ±Π»ΠΈ ΠΌΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠΌΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π΄Π° Π³ΠΎ ΠΏΠΎΠ½ΡΠ΄ΠΈΠΌΠ΅ ΠΎΠ²Π°:
- ΠΡΠΎΡΠ΅ΡΠΎΡ: Intel Xeon 2 GHz (1 ΡΠ°Π΄ΡΠΎ)
- ΠΠΈΠ½ΡΠΊΡ ΡΠΈΡΡΠ΅ΠΌ (ΠΠ΅Π±ΠΈΠ°Π½, Π£Π±ΡΠ½ΡΡ, CentOS Π·Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅)
- 1 ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½Π° IPv4 Π°Π΄ΡΠ΅ΡΠ°
- 10 GB ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π° Π±ΡΠ·ΠΈ SSD-Π΄ΠΈΡΠΊΠΎΠ²ΠΈ ΠΎΠ΄ ΠΊΠ»Π°ΡΠ°ΡΠ° Π½Π° ΠΏΡΠ΅ΡΠΏΡΠΈΡΠ°ΡΠΈΠ΅ΡΠΎ
- RAM ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°: 512 MB
- ΠΠ°ΠΏΠ»Π°ΡΠ° Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Π°
- ΠΠ΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ
Π’Π°ΡΠΈΡΠ°ΡΠ° Π΅ ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ΅Ρ
Π½ΠΈΡΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ°, Π΄Π΅ΡΠ°Π»ΠΈ Π·Π°
ΠΠ° ΠΊΠΎΠ³ΠΎ Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π΅Π½ ΠΎΠ²ΠΎΡ Π²ΠΈΡΡΡΠ΅Π»Π΅Π½ ΡΠ΅ΡΠ²Π΅Ρ? ΠΠ° Π·Π° ΡΠ΅ΡΠΈΡΠΈ ΡΠΈΡΠ΅: ΠΏΠΎΡΠ΅ΡΠ½ΠΈΡΠΈ, Π΅Π½ΡΡΠ·ΠΈΡΠ°ΡΡΠΈ, ΠΈΡΠΊΡΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ, ΡΡΠ±ΠΈΡΠ΅Π»ΠΈ Π½Π° DIY, ΠΏΠ° Π΄ΡΡΠΈ ΠΈ Π½Π΅ΠΊΠΎΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.
ΠΠ° ΡΡΠΎ Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π΅Π½ ΠΎΠ²ΠΎΡ VPS?
Π‘ΠΌΠ΅ΡΠ°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΡΠΈΡΠ°ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Π₯Π°Π±Ρ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠ²Π½ΠΎ ΡΠ΅ Π½Π°ΡΠ΄Π°Ρ ΡΠ²ΠΎΡ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΎΠ²Π°Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°, Π½ΠΎ ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° ΡΠΎΠ±Π΅ΡΠ΅ΠΌΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ ΠΈΠ·Π±ΠΎΡ Π½Π° ΠΈΠ΄Π΅ΠΈ - ΡΡΠΎ Π°ΠΊΠΎ Π½Π΅ΠΊΠΎΠΌΡ ΠΌΡ ΡΡΠ΅Π±Π°, Π° ΠΌΠ°ΠΆΠΈΡΠ΅ Π½Π΅ Π·Π½Π°Π°Ρ?
- ΠΠΎΡΡΠ°Π²Π΅ΡΠ΅ ΡΠ° Π²Π°ΡΠ°ΡΠ° Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°, ΠΏΠΎΡΡΡΠΎΠ»ΠΈΠΎ, Π±ΠΈΠΎΠ³ΡΠ°ΡΠΈΡΠ° ΡΠΎ ΠΊΠΎΠ΄, ΠΈΡΠ½. Π‘Π΅ ΡΠ°Π·Π±ΠΈΡΠ°, Π²Π°ΡΠ°ΡΠ° ΡΠΎΠΏΡΡΠ²Π΅Π½Π° Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ° ΠΎΡΡΠ°Π²Π° ΠΏΠΎΠ·ΠΈΡΠΈΠ²Π΅Π½ Π²ΠΏΠ΅ΡΠ°ΡΠΎΠΊ ΠΊΠ°Ρ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°Π²Π΅ΡΠΎΡ. Π‘ΡΠ°Π²Π΅ΡΠ΅ Π³ΠΎ Π½Π° Π²Π°ΡΠΈΠΎΡ VPS ΠΈ Π±ΠΈΠ΄Π΅ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ° ΠΈ ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΡΠ°ΠΌΠΈ, Π° Π½Π΅ ΠΎΠ΄ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΎΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π½ΠΈΡΠ΅ Ρ ΠΎΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ²Π°ΡΠ΄Π΅ΡΠΈ.
- ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ VPS Π·Π° Π΅Π΄ΡΠΊΠ°ΡΠΈΠ²Π½ΠΈ ΡΠ΅Π»ΠΈ: Ρ ΠΎΡΡΠΈΡΠ°ΡΡΠ΅ Π³ΠΎ Π²Π°ΡΠΈΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΏΡΠΎΡΡΠ΅ΡΠ΅ Π³ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ, Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ°ΡΡΠ΅ ΡΠΎ DNS, Π½Π΅ΡΠΊΠΎΠΏΠΎΡΠ½ΠΈΠΊ ΡΠΎ ΠΌΠ°Π»Π° Π΅Π΄ΡΠΊΠ°ΡΠΈΠ²Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°.
- ΠΠ° ΡΠ΅Π»Π΅ΡΠΎΠ½ΠΈΡΠ°. ΠΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ Π½Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»Π΅Π½ ΠΏΡΠ΅ΡΠΏΡΠΈΠ΅ΠΌΠ°Ρ, Ρ ΠΎΠ½ΠΎΡΠ°ΡΠ΅Ρ ΠΈΠ»ΠΈ Π½Π° ΠΌΠ½ΠΎΠ³Ρ ΠΌΠ°Π»Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ° ΠΎΡΠ°ΡΠ½ΠΎ ΠΌΡ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½Π° IP ΡΠ΅Π»Π΅ΡΠΎΠ½ΠΈΡΠ°, Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΎΠ²Π°Π° ΡΠ΅Π»Π΅ΡΠΎΠ½ΠΈΡΠ° ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ Π°Π»ΡΠ½ΠΈ. ΠΠ΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΅: Π³ΠΎ Π·Π΅ΠΌΠ°ΠΌΠ΅ Π½Π°ΡΠΈΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΡΠΏΡΠ²Π°ΠΌΠ΅ Π±ΡΠΎΡ ΠΎΠ΄ IP ΡΠ΅Π»Π΅ΡΠΎΠ½ΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΠΌΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½Π° PBX ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π²Π½Π°ΡΡΠ΅ΡΠ½ΠΈ Π±ΡΠΎΠ΅Π²ΠΈ (Π°ΠΊΠΎ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ). ΠΠ°ΡΡΠ΅Π΄ΠΈΡΠ΅ ΡΠ΅ ΠΊΠΎΠ»ΠΎΡΠ°Π»Π½ΠΈ.
- ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π·Π° Π΄Π° Π³ΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π²Π°ΡΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ.
- ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π·Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ βΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΡΠ°ΠΌΠΈβ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ ΡΠ΅Π½Π·ΠΎΡΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ Π΄ΠΎΠΌΠΎΠ²ΠΈ.
- ΠΠ΅Π²ΠΎΠΎΠ±ΠΈΡΠ°Π΅Π½ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈ Π°ΡΠΈΡΡΠ΅Π½Ρ Π·Π° ΡΡΠ³ΡΠ²Π°ΡΠ΅ ΡΠΎ Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΡΠ°Π·ΠΌΠ΅Π½Π°, ΡΠΎΠ±ΠΎΡ Π·Π° ΡΡΠ³ΡΠ²Π°ΡΠ΅, Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ. ΠΠΈΠ΅ ΡΠ΅ Π±ΠΈΠ΄Π΅ΡΠ΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡΠ° ΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ, ΡΡΠΎ Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΡΡΠ³ΡΠ²Π°ΡΠ΅ Π½Π° Π±Π΅ΡΠ·ΠΈΡΠ΅. ΠΠ°, Π°ΠΊΠΎ Π½Π΅ΠΊΠΎΡ Π΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½ ΠΈΠ»ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠ° :)
ΠΠΎΡΡΠΎΡΠ°Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π·Π° ΡΠ°ΠΊΠΎΠ² VPS Π²ΠΎ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½Π°ΡΠ° ΡΡΠ΅ΡΠ°. ΠΠΎΠΊΡΠ°Ρ Π²Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠ°ΡΠ° ΡΠ΅Π»Π΅ΡΠΎΠ½ΡΠΊΠ° ΡΡΠ»ΡΠ³Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ ΡΠ°Π±ΠΎΡΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ:
- ΠΠΎΡΡΠ°Π²Π΅ΡΠ΅ ΠΌΠ°Π»ΠΈ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΊΠΎΠΈ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ Π·Π° Π²ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠΈ ΠΏΠ°ΡΡΠ²Π°Π°Ρ Π½Π° Π΄Π°Π»Π΅ΡΠΈΠ½Π°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ftp. ΠΠ²Π° ΡΠ΅ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ ΠΌΠ½ΠΎΠ³Ρ Π±ΡΠ·ΠΎ Π΄Π° ΡΠ°Π·ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ ΡΠ²Π΅ΠΆΠΈ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ, Π°ΠΆΡΡΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π° ΠΏΡΠΎΠ΄Π°Π²Π°ΡΠΈΡΠ΅, ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ ΠΈΡΠ½.
- ΠΠ°ΡΡΠ΅ ΠΈΠΌ ΠΏΡΠΈΠ²ΡΠ΅ΠΌΠ΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ Π·Π° Π΄Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Π°Ρ ΡΠΎΡΡΠ²Π΅Ρ ΠΈΠ»ΠΈ ΠΌΠ΅Π΄ΠΈΡΠΌΠΈ.
VPS ΡΠ΅ΡΡ Π²ΠΎΠ·Π΅ΡΠ΅ Π·Π° 30 ΡΡΠ±Π»ΠΈ - Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ Π·Π° Π²Π°Ρ
30 ΡΡΠ±Π»ΠΈ ΡΠ΅ ΡΠΎΠ»ΠΊΡ ΠΌΠ°Π»ΠΊΡ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊΠ°ΡΠ΅ Π½ΠΈ Π΄Π° ΠΈΠ·Π²Π°Π΄ΠΈΡΠ΅ ΠΊΠ°ΡΡΠΈΡΠΊΠ° Π·Π° Π΄Π° ΠΏΠ»Π°ΡΠΈΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅. Π Π½ΠΈΠ΅ ΠΏΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ ΡΠΌΠ΅ ΡΠΎΠ»ΠΊΡ ΠΌΡΠ·Π»ΠΈΠ²ΠΈ, Π½ΠΎ ΠΎΠ²ΠΎΡ ΠΏΠ°Ρ Π½Π°ΠΏΡΠ°Π²ΠΈΠ²ΠΌΠ΅ ΡΠ΅ Π·Π° Π²Π°Ρ. ΠΡΠ΅Π΄ Π΄Π° Π³ΠΈ Π»Π°Π½ΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅ Π²ΠΎ Π±ΠΈΡΠΊΠ°, ΡΠΏΡΠΎΠ²Π΅Π΄ΠΎΠ²ΠΌΠ΅ ΡΠ΅ΡΡ Π·Π° Π΄Π° Π³ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌΠ΅ ΡΠΈΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ ΠΈ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌΠ΅ ΡΡΠΎ ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅ ΠΏΠΎ ΠΎΠ²Π°Π° ΡΠ°ΡΠΈΡΠ°. ΠΠ° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΠΎΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Π΄ΠΎΠ΄Π°Π΄ΠΎΠ²ΠΌΠ΅ Π΅ΠΊΡΡΡΠ΅ΠΌΠ½ΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ²ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ ΠΎΠ΄Π½Π΅ΡΡΠ²Π° ΠΎΠ²Π°Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π΄ΠΎΠΊΠΎΠ»ΠΊΡ Π³ΡΡΡΠΈΠ½Π°ΡΠ° ΠΈ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π³ΠΈ Π½Π°Π΄ΠΌΠΈΠ½Π°Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ ΡΡΠΎ Π³ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΠ²ΠΌΠ΅.
ΠΠΎΠΌΠ°ΡΠΈΠ½ΠΎΡ Π±Π΅ΡΠ΅ ΠΏΠΎΠ΄ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌ Π±ΡΠΎΡ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΊΠΎΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅Π° ΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ. Π¦Π΅Π»ΡΠ° Π΅ Π΄Π° ΡΠ΅ ΡΠΈΠΌΡΠ»ΠΈΡΠ° Π²ΠΈΡΠΎΠΊΠ° Π³ΡΡΡΠΈΠ½Π° Π½Π° ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΎΡΡ ΠΈ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ ΡΠΏΠΎΡΠ΅Π΄Π»ΠΈΠ²ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌΠΎ ΠΎΠ΄ Π±ΠΎΡΠ±Π΅Π½ΠΎ.
ΠΠΎΠΊΡΠ°Ρ ΠΏΠΎΡΡΠΎΡΠ°Π½ΠΎΡΠΎ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π²ΠΌΠ΅ 3 Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΊΠΎΠΈ ΡΠΎΠ±ΠΈΡΠ°Π° ΡΠΈΠ½ΡΠ΅ΡΠΈΡΠΊΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° sysbench, ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΠ½ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΡΠ΅ Π΄Π°Π΄Π΅Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ»Ρ ΠΈ 50 Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΊΠΎΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΎΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅. Π‘ΠΈΡΠ΅ ΡΠ΅ΡΡ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈΠΌΠ°Π° ΠΈΡΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° (1 ΡΠ°Π΄ΡΠΎ, RAM 512 GB, SSD 10 GB), ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° ΡΠ»ΠΈΠΊΠ° Π½Π° debian 9.6 Π±Π΅ΡΠ΅ ΠΈΠ·Π±ΡΠ°Π½Π° ΠΊΠ°ΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½ ΡΠΈΡΡΠ΅ΠΌ, ΠΊΠΎΡ ΠΈΠΌ ΡΠ΅ Π½ΡΠ΄ΠΈ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅ Π½Π° RUVDS.
Π’ΠΎΠ²Π°ΡΠΎΡ Π±Π΅ΡΠ΅ ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½ ΠΏΠΎ ΠΏΡΠΈΡΠΎΠ΄Π° ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° ΡΠΏΠΎΡΠ΅Π΄Π»ΠΈΠ²ΠΈ ΡΠΎ Π±ΠΎΡΠ±Π°:
- ΠΠ΅ΠΊΠΎΠΈ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ Π±Π΅Π° Π»Π°Π½ΡΠΈΡΠ°Π½ΠΈ ΡΠΎ ΠΌΠ°Π»ΠΎ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅
- ΠΠ΅ΠΊΠΎΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈΠ·Π²ΡΡΠΈΡΠ° ΡΠ΅ΡΡ ΡΠΊΡΠΈΠΏΡΠ° ΠΊΠΎΡΠ° Π³ΠΎ ΡΠΈΠΌΡΠ»ΠΈΡΠ° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ (ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠ° Π°Π»Π°ΡΠΊΠ°ΡΠ°
ΡΡΡΠ΅ΡΠΎΡ ) - ΠΠ° ΠΏΡΠ΅ΠΎΡΡΠ°Π½Π°ΡΠΈΠΎΡ Π΄Π΅Π» ΠΎΠ΄ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΠΈΠ·Π²ΡΡΠΈΠ²ΠΌΠ΅ ΡΠΊΡΠΈΠΏΡΠ° ΡΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ 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.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 ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ python-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
ΠΎΠ΄Π΄
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
ΠΡΠΈΠΌΠΈΡΠΈΠ²Π½Π° ΡΡΠ»ΡΠ³Π° Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° ΠΊΠΎΠ»Π΅Π½ΠΎΡΠΎ Π²ΠΎ Python; ΡΠ°Π° Π²ΡΡΠΈ ΡΠ΅ΡΠΈΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
- getState: Π³ΠΎ Π²ΡΠ°ΡΠ° ΡΡΠ°ΡΡΡΠΎΡ
- getEmployee: Π³ΠΈ Π²ΡΠ°ΡΠ° Π²ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈΡΠ΅ (+ΠΏΠ»Π°ΡΠΈ, + Π·Π²Π°ΡΠ°) ΠΎΠ΄ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ
- patchEmployee: Π³ΠΈ ΠΌΠ΅Π½ΡΠ²Π° ΠΏΠΎΠ»ΠΈΡΠ°ΡΠ° Π½Π° Π²ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈΡΠ΅
- Π²ΠΌΠ΅ΡΠ½Π΅ΡΠ΅ ΠΠ»Π°ΡΠ°: Π²ΠΌΠ΅ΡΠ½ΡΠ²Π° ΠΏΠ»Π°ΡΠ°
ΠΠ·Π²ΠΎΡ Π½Π° ΡΡΠ»ΡΠ³Π° (dbtest.py)
#!/usr/bin/python
import mysql.connector as mariadb
from flask import Flask, json, request, abort
from mysql.connector.constants import ClientFlag
app = Flask(__name__)
def getFields(cursor):
results = {}
column = 0
for d in cursor.description:
results[d[0]] = column
column = column + 1
return results
PAGE_SIZE = 30
@app.route("/")
def main():
return "Hello!"
@app.route("/employees/<page>", methods=['GET'])
def getEmployees(page):
offset = (int(page) - 1) * PAGE_SIZE
connection = mariadb.connect(user='admin', password='q5XpRomdSr', database='employees')
cursor = connection.cursor()
cursor.execute("SELECT * FROM employees LIMIT {} OFFSET {}".format(PAGE_SIZE, offset))
return {'employees': [i[0] for i in cursor.fetchall()]}
@app.route("/employee/<id>", methods=['GET'])
def getEmployee(id):
id = int(id)
connection = mariadb.connect(user='admin', password='q5XpRomdSr', database='employees')
cursor = connection.cursor()
cursor.execute("SELECT * FROM employees WHERE emp_no = {}".format(id))
fields = getFields(cursor)
employee = {}
found = False
for row in cursor.fetchall():
found = True
employee = {
"birth_date": row[fields["birth_date"]],
"first_name": row[fields["first_name"]],
"last_name": row[fields["last_name"]],
"gender": row[fields["gender"]],
"hire_date": row[fields["hire_date"]]
}
if not found:
abort(404)
cursor.execute("SELECT * FROM salaries WHERE emp_no = {}".format(id))
fields = getFields(cursor)
salaries = []
for row in cursor.fetchall():
salary = {
"salary": row[fields["salary"]],
"from_date": row[fields["from_date"]],
"to_date": row[fields["to_date"]]
}
salaries.append(salary)
employee["salaries"] = salaries
cursor.execute("SELECT * FROM titles WHERE emp_no = {}".format(id))
fields = getFields(cursor)
titles = []
for row in cursor.fetchall():
title = {
"title": row[fields["title"]],
"from_date": row[fields["from_date"]],
"to_date": row[fields["to_date"]]
}
titles.append(title)
employee["titles"] = titles
return json.dumps({
"status": "success",
"employee": employee
})
def isFieldValid(t, v):
if t == "employee":
return v in ["birdth_date", "first_name", "last_name", "hire_date"]
else:
return false
@app.route("/employee/<id>", methods=['PATCH'])
def setEmployee(id):
id = int(id)
content = request.json
print(content)
setList = ""
data = []
for k, v in content.iteritems():
if not isFieldValid("employee", k):
continue
if setList != "":
setList = setList + ", "
setList = setList + k + "=%s"
data.append(v)
data.append(id)
print(setList)
print(data)
connection = mariadb.connect(user='admin', password='q5XpRomdSr', database='employees', client_flags=[ClientFlag.FOUND_ROWS])
cursor = connection.cursor()
cursor.execute("UPDATE employees SET {} WHERE emp_no = %s".format(setList), data)
connection.commit()
if cursor.rowcount < 1:
abort(404)
return json.dumps({
"status": "success"
})
@app.route("/salary", methods=['PUT'])
def putSalary():
content = request.json
print(content)
connection = mariadb.connect(user='admin', password='q5XpRomdSr', database='employees', client_flags=[ClientFlag.FOUND_ROWS])
cursor = connection.cursor()
data = [content["emp_no"], content["salary"], content["from_date"], content["to_date"]]
cursor.execute("INSERT INTO salaries (emp_no, salary, from_date, to_date) VALUES (%s, %s, %s, %s)", data)
connection.commit()
return json.dumps({
"status": "success"
})
@app.route("/state", methods=['GET'])
def getState():
return json.dumps({
"status": "success",
"state": "working"
})
if __name__ == '__main__':
app.run(host='0.0.0.0',port='5002')
ΠΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΡΠ²Π°ΡΠ΅! ΠΠΎ Π½ΠΈΠΊΠΎΡ ΡΠ»ΡΡΠ°Ρ ΠΎΠ²Π°Π° ΡΡΠ»ΡΠ³Π° Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π·Π΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ»ΠΈ Π²ΠΎΠ΄ΠΈΡ!
Π’Π΅ΡΡΠΎΠ²ΠΈΡΠ΅ ΡΠ΅ Π²ΡΡΠ°Ρ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΡΠ°ΡΠΈΠΎΡ Π΄ΠΎΠ±Π°Ρ JMeter. ΠΠ΅Π° Π»Π°Π½ΡΠΈΡΠ°Π½ΠΈ Π½ΠΈΠ·Π° ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΊΠΎΠΈ ΡΡΠ°Π°Ρ ΠΎΠ΄ 15 ΠΌΠΈΠ½ΡΡΠΈ Π΄ΠΎ 2 ΡΠ°ΡΠ°, Π±Π΅Π· ΠΏΡΠ΅ΠΊΠΈΠ½ΠΈ, ΠΏΡΠΎΡΠ΅Π½ΡΠΎΡ Π½Π° Π±Π°ΡΠ°ΡΠ° Π²Π°ΡΠΈΡΠ°, Π° ΠΏΡΠΎΠΏΡΡΠ½Π°ΡΠ° ΠΌΠΎΡ Π²Π°ΡΠΈΡΠ° ΠΎΠ΄ 300 Π΄ΠΎ 600 Π±Π°ΡΠ°ΡΠ° Π²ΠΎ ΠΌΠΈΠ½ΡΡΠ°. ΠΡΠΎΡ Π½Π° Π½ΠΈΡΠΊΠΈ ΠΎΠ΄ 50 Π΄ΠΎ 500.
ΠΠΎΡΠ°Π΄ΠΈ ΡΠ°ΠΊΡΠΎΡ ΡΡΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΌΠ°Π»Π°, ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°:
mysql -e "SHOW ENGINE INNODB STATUS"
ΠΠΎΠΊΠ°ΠΆΡΠ²Π° Π΄Π΅ΠΊΠ°:
Buffer pool hit rate 923 / 1000, young-making rate 29 / 1000 not 32 / 1000
ΠΠΎΠ΄ΠΎΠ»Ρ ΡΠ΅ Π΄Π°Π΄Π΅Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠ½ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠΈΡΠ° Π½Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π° Π±Π°ΡΠ°ΡΠ°ΡΠ°:
Π΅ΡΠΈΠΊΠ΅ΡΠ°
ΠΡΠΎΡΠ΅ΠΊ
Π‘ΡΠ΅Π΄Π½Π°
90% ΠΠΈΠ½ΠΈΡΠ°
95% ΠΠΈΠ½ΠΈΡΠ°
99% ΠΠΈΠ½ΠΈΡΠ°
ΠΠΈΠ½
Max
Π·Π΅ΠΌΠΈ Π²ΡΠ°Π±ΠΎΡΠ΅Π½
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 ΡΡΠ±Π»ΠΈ Π½Π° Π²Π°ΡΠΈΡΠ΅ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΈ Π΄Π° Π³ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΠ΅ Π²Π°ΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΎΠ²Π°Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π²ΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅.
ΠΠ·Π²ΠΎΡ: www.habr.com