ááá¯á¡ááºááá·áºá¡áá¬á¡á¬ážáá¯á¶áž áááºáá²ááœááºááŸááááº- áá±á¬áááºáá±á¬ááºážáá±á¬ááºážááŸáá·áº ááŸááºá
á¯á
á¬á¡á¯ááºá áá»áœááºáá±á¬áá²áá¶á áááºáá±á¬áá·áºáááºáá¬ááŸááá±á¬ mouseá ááŒáá¯ážááŸá
áºáá»á±á¬ááºážá
ááẠá€ááááºááŸá¬ážáá±á¬á¡áá¬áá»á¬ážááẠá¡á¬áá¯á¶á
á°ážá
áá¯ááºááŸá¯ááᯠáááœá²áá±á¬ááºááá¯ááºáá² ááá¡ááœáẠáááºáá±á¬áá·áºáááºáá¬ááŒá
áºá
á±áááºá áá°áá®áá±á¬áá¬ááºáááºážááẠá¡áá»áá¯ážáá»áá¯ážáá±á¬ááá¯ááá¯ááºážááŸáá·áº áááºá
áá±á¬á·á¡ááºááá®áá±ážááŸááºážáá»á¬ážááŸáá·áºááŒá
áºáááº- ááŸááºáá»á¬ážáá±á¬áááºáá¬ážááŒááºáá¬ááºáá¯á¶áá»á¬ážá¡ááœááºá áá¯á¶áá
áºáá¯á¶áá¡ááœááºá¡á
á¬ážááá¯áá»áŸá±á¬á·áá»áááºá¡ááœááºá ááá¯ááºáá±ážááá¯ááºáá¬ááœá±ááŒá±ážáá»á¬ážááá¯ááœááºáá»ááºáááºá¡ááœááºá á¡áááá¬ááºáá»á¬ážá áá¬áá¬ááŒááºáá»á¬ážá áá¬áá¬ááŒááºáá°áá»á¬ážá á
áááºááŒáá·áºá áááºážááŸá¬ áá
áºáá¯ááŸááá¬ážá
ááœááºááŒá°áá
áºáá«á áá±á¬ááºáá¬ááŒá® áá²áá±á¬áºá
áá°ááá®ááá¯áá«áá² - áá«ááá¯á·áá²á· VPS áá¯á¶ážáááº
á á»á±ážáááŒá®ážáá±á¬ VPS ááᯠá¡áááºááŒá±á¬áá·áº áááá¯á¡ááºááŒá±á¬ááºáž ááœááºáá²á·áá±á¬ 3-4 ááŸá áºá áá±ážáá¬ážáá²á·áá±á¬ ááŒáá¯ááºáááºáá»á¬ážááŸáá·áº á¡áá¯á¶ážááŒá¯áá°áá»á¬ážáá¶á០áá±á¬ááºážáá«ážáá»á¬ážá áœá¬ááᯠáá»áœááºá¯ááºááá¯á· áááºááŒá®ážáá«ááŒá®á ááŸááºáá«áááºá ááá¯á·áá±á¬áẠVPS "áá áºááŒá¬ážáá áºáá»ááºá¡ááœááº" ááẠááá·áºááŸááºážáá±á¬ á á»á±ážááœááºááŸá¬ááœá±ááŸá¯ááŒá áºááŒá®áž áá¯á¶ááŸááºá¡áá¯ááºááœááºá¡ááœáá·áºá¡áááºážáá»á¬ážááᯠááá±ážááá¯ááºáá«á ááá¯á·áá±á¬áº áá±ááºáá¬ááá»á¬áž ááŒá±á¬ááºážáá²áá¬áááºááŸáá·áºá¡áá»áŸ virtual á¡áááºážá¡ááŒá áºáá»á¬ážá áá¯ááºáá»á ááááºááẠáááá·áºáá»áá¬ááŒá®áž áá áºááá»áŸáẠáá°ááẠ30 ááŒáá·áº á€á¡áá¬ááᯠáá»áœááºá¯ááºááá¯á· áááºážááŸááºážááẠá¡áááºááá·áºááŒá áºáá±áá«ááŒá®-
- áááá¯áááºáá¬- Intel Xeon 2 GHz (1 Core)
- Linux á áá Ạ(Debianá Ubuntuá CentOS á០ááœá±ážáá»ááºáááº)
- áá®ážááŒá¬áž IPv1 ááááºá ᬠ4 áá¯
- ááŒááºáááºáá±á¬ áá¯ááºáááºážá¡ááá·áº SSD áááá¯ááºáá»á¬ážááœáẠáá±áá¬ááá¯ááŸá±á¬ááºááŸá¯ 10 GB
- RAM: 512 MB
- á áá¹ááá·áºá¡ááá¯áẠááœá±áá±ážáá»á±ááŸá¯
- á¡ááá·áºá¡áááºáááŸá á¡ááœá¬ážá¡áá¬
á¡ááá¯áá«á¡áá±á¬ááºááœááºáááºáá±á¬ááºáááºáááºážááá¬ááá¯ááºáá¬ááá·áºáááºáá»ááºáá»á¬ážá¡áá±á«áºá¡áá±ážá
áááºá¡áá»ááºá¡áááºáá»á¬ážááá¯áá¬áá¬áááºááŒá
áºáá«áááºá
ဠvirtual áá¬áá¬ááẠáááºáá°á¡ááœáẠááá·áºáá»á±á¬áºááááºážá áá°ááá¯ááºážáá®ážáá«ážá¡ááœáẠáá¯ááºáááº- á¡á ááŒá¯áá°áá»á¬ážá áá«ááá¬á¡áá¯ážáá»á¬ážá á¡ááœá±á·á¡ááŒá¯á¶ááŸááá±á¬ developerá DIY áá«ááá¬ááŸááºáá»á¬ážááŸáá·áº á¡áá»áá¯á·áá±á¬áá¯áá¹ááá®áá»á¬ážáááºá
ဠVPS ááẠá¡áááºá¡áá¬á¡ááœáẠááá·áºáá»á±á¬áºááááºážá
Habr áá á¬áááºáá°áá»á¬ážááẠá€ááœá²á·á ááºážáá¯á¶ááá¯á¡áá¯á¶ážááŒá¯áá¬ááœáẠáááºážááá¯á·áááá¯ááºááá¯ááºáááºážáááºážááᯠáá»áááºážáá±ááœá±á·áááá·áºáááºáᯠáá»áœááºá¯ááºááá¯á·áááºááŒááºáááá±á¬áºáááºáž áá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯ááºááœá±ážáá»ááºááŸá¯á áááºáá°ážáá»á¬ážááᯠá á¯áá±á¬ááºážááẠáá¯á¶ážááŒááºáá²á·ááẠ- áá áºá á¯á¶áá áºáŠážááá¯á¡ááºáá«áá ááá¯á·áá±á¬áº á¡áá»áá¯ážáá¬ážáá»á¬ážáááááá¯ááºáá«á
- ááá·áºááá¯ážááŸááºážáá±á¬ áááºááá¯ááºá á¡á á¯á á¯á áá¯ááºááŒáá·áº ááŒááºáááºá áááºááẠá áááºááŒáá·áº áá±áá¬áá»áá«á áá¯ááºáá«áááºá ááá·áºááá¯ááºááá¯ááºáá®ááá¯ááºážááœá²áá¬ážáá²á· áááºááá¯ááºá á¡áá¯ááºááŸááºá¡áá±á«áº á¡ááŒá¯ááá±á¬áá±á¬ááºáá²á· á¡áááºá¡ááŒááºááᯠááŒá áºá á±áá«áááºá áááºážááᯠáááºá VPS ááœáẠáá¬ážááŸáááŒá®áž áá¯á¶ááŸáẠhosting áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážá áááºáááºážáá»á¬ážááŸááá¯ááºáá² ááá¯ááºááá¯á¶ááŒá¯á¶áá±ážááŸáá·áº áááºááŒáááºááŸá¯á¡ááœáẠáááºááá¯ááºááá¯áẠáá¬áááºáá°áá«á
- ááá¬áá±ážááá¯ááºáá¬áááºááœááºáá»ááºáá»á¬ážá¡ááœáẠVPS ááá¯áá¯á¶ážáá«- ááá·áºááá±á¬áá»ááºááᯠáááºáá¶áá±á¬ááºááœááºáá±ážáá«á áá¬áá¬ááŸáá·áº áá¬áá¬áááºáááºááŸá¯á áá áºáá¡ááºá¹áá«áááºáá»á¬ážááᯠáá±á·áá¬áá«á DNS ááŒáá·áº á ááºážáááºáá«á áá±ážáááºáá±á¬ááá¬áá±ážááá¯ááºáá¬ááá¯ááºáá áºáá¯ááŒáá·áº tinkerá
- áááºáá®áá¯ááºážá¡ááœááºá áá áºáá«ááá¶ááœáẠáá áºáŠážáá»ááºáž áá¯ááºáááºážááŸááºá á¡ááœááºáááºáž ááá¯á·ááá¯áẠá¡ááœááºáá±ážáááºáá±á¬ áá¯áá¹ááá®áá áºáá¯ááẠIP áááºáá®áá¯ááºážá¡á¬áž á¡ááœááºá¡áááºáž ááá¯á¡ááºááŒá®áž á€áááºáá®áá¯ááºážá¡á±á¬áºááá±áá¬áá»á¬ážááẠá¡ááœááºáá±á¬áááŒá®ážáá«áááºá ááá¯ážááŸááºážáááº- áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·ááá¬áá¬ááá¯áá°áᬠIP áááºáá®áá¯ááºážá¡á±á¬áºááá±áá¬áá¶á០áá¶áá«ááºáá áºáá¯áááºáᬠvirtual PBX ááá¯áááºáá±á¬ááºáᬠá¡ááœááºážáá¶áá«ááºáá»á¬ážááá¯áááºáá®ážáá« (ááá¯á¡ááºáá«á)á á á¯áá±á¬ááºážááœá±ááẠááŒá®ážáá¬ážáááºá
- áááºá á¡ááºááºáá®áá±ážááŸááºážáá»á¬ážááᯠá ááºážáááºááẠáá¬áá¬ááᯠá¡áá¯á¶ážááŒá¯áá«á
- á áááºá¡áááºá áá áºá¡á¬áá¯á¶áá¶áááááá¬áá»á¬ážá០á¡áá»ááºá¡áááºáá»á¬ážááᯠááááºážáá»á¯ááºááŒááºážááŸáá·áº á á¯áá±á¬ááºážááŒááºážá¡áá«á¡ááẠDIY á ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠáá¬áá¬ááᯠá¡áá¯á¶ážááŒá¯áá«á
- áááºážááá¯á¡áá¯á¶ážááŒá¯ááẠáá¯á¶ááŸááºááá¯ááºáá±á¬áááºážáááºážááŸá¬ virtual exchange trading assistantá trading robot ááᯠserver ááœááºáá¬ážááŒááºážááŒá áºáááºá áá¬áá¬á áááºááŒáááºááŸá¯ááŸáá·áº áá¯á¶ááŒá¯á¶áá±ážá¡ááœáẠáááºááẠá¡ááŒáá·áºá¡á áá¬áááºáá°ááááºááŒá áºááŒá®áž ááá¯ááá¯áááºááŸá¬ áááºááẠá áá±á¬á·ááŸááºáá¬áá±ážááœááºááœáẠá¡áá±á¬ááºážá¡áááºááŒá¯áá¯ááºááẠááááºážáá»á¯ááºáá¬ážáá±á¬ áá°áááá¬áá áºáᯠáááŸááááºááŒá áºáááºá á áááºáááºá á¬ážáá²á· áá°áá²ááŒá áºááŒá Ạá á®á ááºáá¬áá²ááŒá áºááŒá áºá :)
áá±á¬áºááá¯ááááºáááºáááºááœááºááá¯áá²á·ááá¯á·áá±á¬ VPS á¡ááœááºáá»áŸá±á¬ááºááœáŸá¬áá»á¬ážááŸááááºá áá±á¬áºááŒááŒá®ážáá¬áž áááºáá®áá¯ááºážáááºáá±á¬ááºááŸá¯á¡ááŒááºá á áááºáááºá á¬ážá áá¬áá±á¬ááºážáá²á· á¡áá¬áá»á¬ážá áœá¬ááᯠáááºá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºáá«áááºá á¥ááá¬á¡á¬ážááŒááºá·:
- á¥ááá¬á¡á¬ážááŒáá·áº ftp ááᯠá¡áá¯á¶ážááŒá¯á ááá®ážáá±ážá០ááá®ážááœá¬ážáááºáááºážáá»á¬ážáᶠáááºááŸááºážáá®ááá¯ááºá á±ááá·áº áá±áá¬áá±á·á áºáááºáá»á¬ážááŸáá·áº á¡áá»ááºá¡áááºáá»á¬ážááᯠáá¬ážááŸááá«á áááºážááẠááá·áºá¡á¬áž áááºážáá áºáá±á¬ ááœá²ááŒááºážá áááºááŒá¬áá»ááºáá»á¬ážá á¡áá±á¬ááºážáááºáááºážáá»á¬ážá¡ááœáẠá¡ááºááááºááœá²á·á ááºážáá¯á¶áá»á¬ážá áááºááŒáá»ááºáá»á¬áž á áááºááá¯á·ááᯠáá»ááºááŒááºá áœá¬ áááŸááºááá¯ááºá á±áááºááŒá áºáááºá
- áá±á¬á·ááºáá²áẠááá¯á·ááá¯áẠáá®áá®áá¬ááᯠááá¯ááºááŒáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áá°áá»á¬áž ááá¯á·ááá¯áẠáá±á¬ááºáááºáá»á¬ážá¡á¬áž áá¬áá®á¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážáá«á
30 áá°áááºá¡ááœáẠVPS á ááºážáááºáá±á¬ááºáž - ááá·áºá¡ááœáẠááŒá®ážáá«ááŒá®á
áá°ááẠ30 ááẠá¡ááœááºáááºážáá±á¬ááŒá±á¬áá·áº ááœá±áá±ážáá»á±áááºááŸáá·áº á ááºážáááºááẠáááºáá áºáááºááᯠááá¯ááºáá»ááºáá«á áá«ááá¯á·á áá áºáá«ááá± á¡áááºážáá»ááºážááŒáá±ááá·áº áá®áá áºáá«áá±á¬á· áááºážá¡ááœáẠá¡áá¯ááºáá¯ááºáá±ážáá²á·áááºá áá¬áá¬áá»á¬ážááᯠááá¯ááºááá¯ááºááŒááºážáááŒá¯áá®á á¡áá±ážá áááºá¡áá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠá á áºáá±ážááŒá®áž á€á¡áá±á¬ááºááœááºááœáẠáá¬áá¬áá»á¬áž áááºááá¯á·áá¯ááºáá±á¬ááºááá¯ááºáááºááᯠááŒáááẠá ááºážáááºááŸá¯áá áºáᯠááŒá¯áá¯ááºáá²á·áááºá áááºážááᯠááá¯ááá¯á áááºáááºá á¬ážá á±áááºá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·áááºááŸááºáá¬ážáá±á¬ áááºááá¯ážáá»á¬ážááẠdensity ááŸáá·áº load áááºáá»á±á¬áºááœááºáá«á á€ááœá²á·á ááºážáá¯á¶áá¯á¶á á¶ááẠáááºááá¯á·ááŒá¯áá°áááºááᯠá á áºáá±ážáá²á·áá«áááºá
áááºáá¶áá±á¬ááºááœááºáá±ážáá°ááẠáááá¯áááºáá¬áá±á«áºááœáẠá¡áá¯ááºáá»áá¯ážá á¯á¶áá¯ááºáá±á¬ááºááŒá®áž disk subsystem ááá¯áááºááŒáœá áœá¬á¡áá¯á¶ážááŒá¯ááá·áº virtual machines á¡áá»á¬ážá¡ááŒá¬ážááááºá¡á±á¬ááºááœááºááŸááááºá áááºááœááºáá»ááºááŸá¬ ááŒáá·áºáá¬ážáá±á¬áá±áá¬áá»áá¬ážááŸá¯ááááºáááºážáááŸáá·áº ááá¯ááºááœá²áá áºáá¯ááŸáá·áº ááŸáá¯ááºážááŸááºááá¯ááºáá±á¬ ááá¯á·ááá¯áẠááá¯ááŒá®ážáá±á¬áááºááᯠáá¯ááááºááŒá áºáááºá
á¡áááºáááŒáẠáááºá¡á¬ážá¡ááŒááºá sysbench ááᯠá¡áá¯á¶ážááŒá¯á áá±á«ááºážá ááºáá¬ážáá±á¬ áááºááá áºáá»á¬ážááᯠá á¯áá±á¬ááºážááá·áº virtual machine 3 áá¯á á¡á±á¬ááºááœááºáá±ážáá¬ážáá±á¬ áá»ááºážáá»áŸááááºáá»á¬ážááŸáá·áº á¡ááá¯áááºááᯠáááºáá®ážáá±ážááá·áº virtual machine 50 ááá¯á·ááᯠáááºáááºáá¬ážáá«áááºá á ááºážáááºááá·áº á ááºáá»á¬ážá¡á¬ážáá¯á¶ážááœáẠáá°áá®áá±á¬ááœá²á·á ááºážáá¯á¶ (1 coreá RAM 512 GBá SSD 10 GB)á á ᶠdebian 9.6 áá¯ááºáá¯á¶ááᯠRUVDS áá±á«áºááŸá á¡áá¯á¶ážááŒá¯áá°áá»á¬ážá¡á¬áž áá±ážáá±á¬ááºááá·áº áááºáááºááŸá¯á áá áºá¡ááŒá Ạááœá±ážáá»ááºáá¬ážáááºá
áááºá¡á¬áž ááœááºážááŸááºááẠááá¬áááŸáá·áº ááŸáá¯ááºážááŸááºááá¯ááºáá±á¬ ááá¬áááᯠáá¯á¶áá±á¬áºáá¬ážáááºá
- á¡áá»áá¯á·áá±á¬ virtual machines áá»á¬ážááẠload áááºážáá«ážá áœá¬ááŒáá·áº á áááºáá²á·áááºá
- á¡áá»áá¯á·áá±á¬á
ááºáá»á¬ážááẠáááá¯áááºáá¬áá±á«áºááŸá áááºááᯠááá¯ááºáá°á¡á±á¬ááºáá¯ááºáá±á¬ááºááẠ(utility ááá¯á¡áá¯á¶ážááŒá¯áááºá
á áááºááá á®ážááŸá¯ ) - virtual machines áá»á¬ážááá»ááºá¡á
áááºá¡ááá¯ááºážááœááºá pv ááᯠá¡áá¯á¶ážááŒá¯á ááá·áºáááºáá»ááºáá
áºáá¯ááŒáá·áº áá±áá¬áá»á¬ážááᯠááŒáá¯áááºááŒááºáááºáá¬ážááá·áºáá±áá¬á០disk ááá¯á·áá°ážáá°ááẠdd ááá¯á¡áá¯á¶ážááŒá¯ááá·áº script áá
áºáá¯ááᯠáá»áœááºá¯ááºááá¯á·áá¯ááºáá±á¬ááºáá²á·ááẠ(á¥ááá¬áá»á¬ážááá¯ááœá±á·ááŒááºááá¯ááºáááº
áá®ááŸá¬ Оáá®ááŸá¬ ).
ááá¯á·á¡ááŒáẠáááºááŸááºááááá·áºá¡ááá¯ááºážá áá»áœááºá¯ááºááá¯á·ááœáẠáá¬áá¯ááá¯ááºážáá¬ááŸá¯áá»á¬ážááᯠá á¯áá±á¬ááºážááá·áº á ááºáá¯á¶ážáá»áá¯ážááŸááááºá
á ááºáá áºáá¯á á®ááœááºá áááá¯áááºáá¬á áááºááá¯áá®ááŸáá·áº áá áºááºá¡ááœáẠá ᶠsysbench á ááºážáááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááá·áº 15 áááá áºááá¯ááºážááœáẠ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 á¡ááŒá
Ạááá°ááá·áºáá«á
á¡ááá¯áááºáááºáá®ážáá±ážáá±á¬á ááºáá»á¬áž
software:
- apt-get update ááá¯
- áááºááœááºááŒááºážá¡áááºá·ááŒáŸááºá·
- apt-get python-pip ááᯠinstall áá¯ááºáá«á
- 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_áááºáá±áá»á¬
24
0.02
16.00
ááºáááºáž
299379
14.52
0.00
áá á¬
2838426
95.63
0.00
áá±á«ááºážá ááº
442783
19.56
0.00
ááá¬áá ááºážáááºááŸá¯áááºáá±á¬ááºááŸá¯ááᯠPython ááœáẠáá°ážáá±á«áºááœááºáá±ážáá¬ážááŒá®áž áá¯ááºáá±á¬ááºáá»ááºáá±ážáá¯áá¯ááºáá±á¬ááºáááº-
- 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
á¡á±á¬ááºáá«ááá¯á·ááẠáá±á¬ááºážááá¯ááŸá¯áá»á¬ážá¡ááœáẠáá»ááºážáá»áŸáá¯á¶á·ááŒááºáá»áááºáá»á¬ážááŒá áºáááº-
áá¶ááááº
áá»ááºážáá»áŸ
áá»ááºážáá»áŸ
90% ááá¯ááºáž
95% ááá¯ááºáž
99% ááá¯ááºáž
min
áááºá áº
getEmployee
37.64
12.57
62.28
128.5
497.57
5
4151.78
ááŒááºáááº
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 ááŒáá·áº áá¬áá¬ááᯠá
ááºážáááºááẠááá·áºá¡á¬áž ááááºáá±á«áºááŒá®áž á€ááœá²á·á
ááºážáá¯á¶á¡ááœáẠááá·áºááœá±ážáá»ááºááŸá¯áá»á¬ážááᯠááŸááºáá»ááºáá»á¬ážááœáẠá¡ááŒá¶ááŒá¯áá«á
source: www.habr.com