ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния Π½Π° Linux. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

Π£Π΅Π± прилоТСнията Π²Π΅Ρ‡Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ навсякъдС, Π° срСд всички транспортни ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ голям дял Π·Π°Π΅ΠΌΠ° HTTP. ИзслСдвайки Π½ΡŽΠ°Π½ΡΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΡƒΠ΅Π± прилоТСния, ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ отдСлят ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΠΊΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, Π² която Ρ‚Π΅Π·ΠΈ прилоТСния Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ сС стартират. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° (Dev) ΠΈ Сксплоатация (Ops) само влошава ситуацията. Но с разпространСниСто Π½Π° ΠΊΡƒΠ»Ρ‚ΡƒΡ€Π°Ρ‚Π° DevOps Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ Π΄Π° носят отговорност Π·Π° стартиранСто Π½Π° своитС прилоТСния Π² ΠΎΠ±Π»Π°ΠΊΠ°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° тях Π΄Π° сС запознаят Π² Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ с Π±Π΅ΠΊΠ΅Π½Π΄Π° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма. Π’ΠΎΠ²Π° Π΅ особСно Ρ†Π΅Π½Π½ΠΎ, Π°ΠΊΠΎ сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ‚Π΅ Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ систСма Π·Π° хиляди ΠΈΠ»ΠΈ дСсСтки хиляди Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡΡ‚Π° Π² ΡƒΠ΅Π± услугитС са ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° ограничСнията Π² Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ прилоТСния. НСзависимо Π΄Π°Π»ΠΈ става Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° балансировачи Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠ»ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, всички Ρ‚Π΅Π·ΠΈ прилоТСния ΠΈΠΌΠ°Ρ‚ сходни ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² срСда с висока производитСлност. Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Π·ΠΈ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΈ ограничСния ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° тяхното прСодоляванС Π² ΠΎΠ±Ρ‰ΠΈ Π»ΠΈΠ½ΠΈΠΈ Ρ‰Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° сС оцСнят производитСлността ΠΈ мащабируСмостта Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ ΡƒΠ΅Π± прилоТСния.

Пиша Ρ‚Π°Π·ΠΈ сСрия статии Π² ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠΈΡ‚Π΅ Π½Π° ΠΌΠ»Π°Π΄ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ искат Π΄Π° станат Π΄ΠΎΠ±Ρ€Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½ΠΈ систСмни Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΈ. НСвъзмоТно Π΅ Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π°Ρ‚ ясно ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° оптимизация Π½Π° прилоТСнията Π² Linux, Π±Π΅Π· Π΄Π° сС Π·Π°Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠΌ Π² основитС, ΠΊΠ°ΠΊ работят Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΎΠ²Π΅ прилоТСния, Π² Ρ‚ΠΎΠ·ΠΈ Ρ†ΠΈΠΊΡŠΠ» искам Π΄Π° изслСдвам ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния, Π° Π½Π΅ дСсктоп прилоТСния, ΠΊΠ°Ρ‚ΠΎ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈ ΠΈΠ»ΠΈ тСкстови Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΈ. Π’ΠΎΠ·ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π΅ насочСн към Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ искат Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π°Ρ‚ ΠΊΠ°ΠΊ работят ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ Π² Linux ΠΈΠ»ΠΈ Unix ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ структурират Π·Π° висока производитСлност.

Linux Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма ΠΈ Π½Π°ΠΉ-чСсто Π²Π°ΡˆΠΈΡ‚Π΅ прилоТСния работят ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Ρ‚Π°Π·ΠΈ ОБ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΊΠ°Π·Π²Π°ΠΌ "Linux", ΠΏΡ€Π΅Π· ΠΏΠΎ-голямата част ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ с увСрСност Π΄Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅, Ρ‡Π΅ става Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° всички Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми ΠΊΠ°Ρ‚ΠΎ цяло. ВсС ΠΏΠ°ΠΊ, Π½Π΅ съм тСствал придруТаващия ΠΊΠΎΠ΄ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ систСми. Π’Π°ΠΊΠ° Ρ‡Π΅, Π°ΠΊΠΎ Π²ΠΈ интСрСсуват FreeBSD ΠΈΠ»ΠΈ OpenBSD, Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π°Ρ€ΠΈΡ€Π°. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π²Π°ΠΌ Π½Π΅Ρ‰ΠΎ спСцифично Π·Π° Linux, Π°Π· Π³ΠΎ посочвам.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΡ‚ΠΈΡ‚Π΅ знания, Π·Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ Π½ΡƒΠ»Π°Ρ‚Π°, ΠΈ Ρ‚ΠΎ Ρ‰Π΅ бъдС нСвСроятно ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΎ, Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° Π½Π΅ Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΡ‚Π΅. Ако Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π½ΠΎΠ² ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ Π½Π° C ΠΈΠ»ΠΈ C++ Π·Π° бизнСс ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° организация, възмоТно Π΅ Π΄Π° Π΅ послСдният Π²ΠΈ Π΄Π΅Π½ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°. ВсС ΠΏΠ°ΠΊ, ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° структурата Π½Π° Ρ‚Π΅Π·ΠΈ прилоТСния Ρ‰Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΏΡ€ΠΈ ΠΈΠ·Π±ΠΎΡ€Π° Π½Π° Π²Π΅Ρ‡Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ. Π©Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сравняватС систСми, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° процСси, с Ρ‚Π°ΠΊΠΈΠ²Π°, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΠΏΠΎΡ‚ΠΎΡ†ΠΈ, Π° ΡΡŠΡ‰ΠΎ ΠΈ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. Π©Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΈ ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ Π·Π°Ρ‰ΠΎ Nginx Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΎΡ‚ Apache httpd, Π·Π°Ρ‰ΠΎ Python ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° Tornado, ΠΌΠΎΠΆΠ΅ Π΄Π° обслуТва ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π² сравнСниС с Python ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° Django.

ZeroHTTPd: ΡƒΡ‡Π΅Π±Π΅Π½ инструмСнт

ZeroHTTPdΒ β€” ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€, ΠΊΠΎΠΉΡ‚ΠΎ написах ΠΎΡ‚ Π½ΡƒΠ»Π°Ρ‚Π° Π½Π° C ΠΊΠ°Ρ‚ΠΎ ΡƒΡ‡Π΅Π±Π΅Π½ инструмСнт. Няма външни зависимости, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Redis. НиС стартирамС собствСни Redis ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ. ΠŸΠΎΠ²Π΅Ρ‡Π΅ информация ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° обсъТдамС тСория дълго Π²Ρ€Π΅ΠΌΠ΅, няма Π½ΠΈΡ‰ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎ ΠΎΡ‚ Ρ‚ΠΎΠ²Π° Π΄Π° напишСм ΠΊΠΎΠ΄, Π΄Π° Π³ΠΎ стартирамС ΠΈ Π΄Π° сравним Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-очСвидният ΠΌΠ΅Ρ‚ΠΎΠ΄. Π—Π°Ρ‚ΠΎΠ²Π° Ρ‰Π΅ пишСм прост ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ ZeroHTTPd, ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‰ всяка ΠΎΡ‚ слСднитС ΠΌΠΎΠ΄Π΅Π»ΠΈ: Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° процСси, ΠΏΠΎΡ‚ΠΎΡ†ΠΈ ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. Π©Π΅ тСствамС всСки ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ работят Π² сравнСниС ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си. ZeroHTTPd Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π² Π΅Π΄ΠΈΠ½ C Ρ„Π°ΠΉΠ». Π‘ΡŠΡΡ‚Π°Π²ΡŠΡ‚ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π²ΠΊΠ»ΡŽΡ‡Π²Π° uthash, ΠΎΡ‚Π»ΠΈΡ‡Π½Π° рСализация Π½Π° Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π°, която сС прСдоставя Π² Π΅Π΄ΠΈΠ½ Π·Π°Π³Π»Π°Π²Π΅Π½ Ρ„Π°ΠΉΠ». Π’ останалитС случаи няма зависимости, Π·Π° Π΄Π° Π½Π΅ сС услоТнява ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚.

Π’ ΠΊΠΎΠ΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ, Π·Π° Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚ ΠΏΡ€ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ. Π‘ΡƒΠ΄Π΅ΠΉΠΊΠΈ прост ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ Π² няколко Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄, ZeroHTTPd прСдставлява ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π·Π° ΡƒΠ΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. Има ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° функционалност, Π½ΠΎ Π΅ способСн Π΄Π° ΠΈΠ·Π΄Π°Π²Π° статични Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ прости β€žΠ΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΈβ€œ страници. Врябва Π΄Π° ΠΊΠ°ΠΆΠ°, Ρ‡Π΅ ZeroHTTPd Π΅ подходящ Π·Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π΄Π° сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ високопроизводитСлни Linux прилоТСния. По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ, ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΡƒΠ΅Π± услуги Ρ‡Π°ΠΊΠ°Ρ‚ заявкитС, провСряват Π³ΠΈ ΠΈ Π³ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚. ИмСнно Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΏΡ€Π°Π²ΠΈ ZeroHTTPd. Π’ΠΎΠ²Π° Π΅ инструмСнт Π·Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, Π° Π½Π΅ Π·Π° продукция. НС Π΅ особСно Π΄ΠΎΠ±ΡŠΡ€ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π΅Π΄Π²Π° Π»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΡ…Π²Π°Π»ΠΈ с Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π·Π° сигурност (ΠΎ Π΄Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ… strcpy) ΠΈΠ»ΠΈ с ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‚Ρ€ΡŽΠΊΠ°ΠΌΠΈ Π½Π° C. Но я надСюсь, Ρ‚ΠΎΠΉ Π΅ справится с Π·Π°Π΄Π°Ρ‡Π΅ΠΉ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния Π½Π° Linux. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Начална страница Π½Π° ZeroHTTPd. Π’ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° прСдоставя Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ изобраТСния.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΊΠ½ΠΈΠ³Π° с гости.

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ ΡƒΠ΅Π± прилоТСния ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π΅ сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‚ Π΄ΠΎ статични Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Π’Π΅ ΠΈΠΌΠ°Ρ‚ слоТни взаимодСйствия с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, кСшовС ΠΈ Ρ‚.Π½. Π—Π°Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ просто ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΎ β€žΠšΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡ‚ΠΈβ€œ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ посСтитСлитС оставят записи с ΠΈΠΌΠ΅Π½Π°Ρ‚Π° си. Π’ ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π·Π° гости сС Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚ записи, оставСни ΠΏΠΎ-Ρ€Π°Π½ΠΎ. Има ΠΈ брояч Π½Π° посСтитСлитС Π² Π΄ΠΎΠ»Π½Π°Ρ‚Π° част Π½Π° страницата.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния Π½Π° Linux. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π£Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β€žΠšΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡ‚ΠΈβ€œ Π½Π° ZeroHTTPd.

Π‘Ρ€ΠΎΡΡ‡ΡŠΡ‚ Π½Π° посСтитСлитС ΠΈ записитС Π² ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π·Π° гости сС съ хранят Π² Redis. Π—Π° комуникация с Redis са Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ собствСни ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ зависят ΠΎΡ‚ външна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. НС съм голям ΠΏΡ€ΠΈΠ²ΡŠΡ€ΠΆΠ΅Π½ΠΈΠΊ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° самодСлни ΠΊΠΎΠ΄ΠΎΠ²Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΈ ΠΈ Π΄ΠΎΠ±Ρ€Π΅ тСствани Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Но Ρ†Π΅Π»Ρ‚Π° Π½Π° ZeroHTTPd Π΅ Π΄Π° изслСдва производитСлността Π½Π° Linux ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ външни услуги, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° HTTP заявки сСриозно влияС Π½Π° производитСлността. Врябва Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ пълСн ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π°Π΄ комуникацията с Redis във всяка ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. Π’ Π΅Π΄Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ΠΈ повиквания, Π² Π΄Ρ€ΡƒΠ³ΠΈ - ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° външна клиСнтска Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Redis Π½Π΅ Π±ΠΈ осигурило Ρ‚Π°ΠΊΡŠΠ² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ». ОсвСн Ρ‚ΠΎΠ²Π°, Π½Π°ΡˆΠΈΡΡ‚ малък ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Redis изпълнява само няколко Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅, настройка ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡŽΡ‡Π°; ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ ΠΈ добавянС към масив). Π’ допълнСниС, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΡŠΡ‚ Π½Π° Redis Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΅Π»Π΅Π³Π°Π½Ρ‚Π΅Π½ ΠΈ прост. НС Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΡ€ΠΈ спСциално Π΄Π° сС ΡƒΡ‡ΠΈ. Π€Π°ΠΊΡ‚ΡŠΡ‚, Ρ‡Π΅ цялата Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° с ΠΎΠΊΠΎΠ»ΠΎ сто Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄, ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠ±Ρ€Π΅ Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½.

На слСдващата схСма са ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ дСйствията Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ (Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΡŠΡ‚) ΠΏΡ€Π°Π²ΠΈ заявка. /guestbookURL.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния Π½Π° Linux. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° ΠΊΠ½ΠΈΠ³Π° с гости.

ΠšΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·Π΄Π°Π΄Π΅ страница Π½Π° ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π·Π° гости, сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π΅Π΄ΠΈΠ½ ΠΏΠΎΠ²ΠΈΠΊ към Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма, Π·Π° Π΄Π° сС ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅ ΡˆΠ°Π±Π»ΠΎΠ½ΡŠΡ‚ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΈ Ρ‚Ρ€ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ° към Redis. Π€Π°ΠΉΠ»ΡŠΡ‚ Π½Π° шаблона ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° голяма част ΠΎΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° HTML Π·Π° страницата, ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° Π΅ΠΊΡ€Π°Π½Π° Π² Π³ΠΎΡ€Π½Π°Ρ‚Π° част. Π’Π°ΠΌ ΠΈΠΌΠ° ΠΈ спСциални Π·Π°ΠΏΡŠΠ»Π²Π°Ρ‰ΠΈ мСста Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Π°Ρ‚Π° част ΠΎΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ: записи ΠΈ Π±Ρ€ΠΎΠΉ посСтитСли. НиС Π³ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΎΡ‚ Redis, вмъквамС Π³ΠΈ Π½Π° страницата ΠΈ ΠΈΠ·Π΄Π°Π²Π°ΠΌΠ΅ напълно ΠΎΡ„ΠΎΡ€ΠΌΠ΅Π½ΠΎΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π’Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ към Redis ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Redis Π²Ρ€ΡŠΡ‰Π° Π½ΠΎΠ²ΠΎΡ‚ΠΎ стойност Π½Π° ΠΊΠ»ΡŽΡ‡Π° ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π·Π° нашия ΡΡŠΡ€Π²ΡŠΡ€ с асинхронна Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, мноТСството ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ повиквания Π΅ Π΄ΠΎΠ±Ρ€ΠΎ ΠΈΠ·ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ Π² ΡƒΡ‡Π΅Π±Π½ΠΈ Ρ†Π΅Π»ΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π½ΠΈΠ΅ отбСлязвамС, Ρ‡Π΅ Redis Π½Π΅ Π½ΠΈ Π΄Π°Π²Π° стойността Π½Π° броя Π½Π° посСтитСлитС ΠΈ Π³ΠΎ Π·Π°ΠΏΠΈΡ‚Π²Π°ΠΌΠ΅ с ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅.

Π‘ΡŠΡ€Π²ΡŠΡ€Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ ZeroHTTPd

НиС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°ΠΌΠ΅ сСдСм вСрсии Π½Π° ZeroHTTPd с Π΅Π΄Π½Π°ΠΊΠ²Π° функционалност, Π½ΠΎ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ:

  • Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°
  • Π€ΠΎΡ€ΠΊ ΡΡŠΡ€Π²ΡŠΡ€ (Π΅Π΄ΠΈΠ½ Π΄ΡŠΡ‰Π΅Ρ€Π΅Π½ процСс Π·Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅)
  • ΠŸΡ€Π΅-Ρ„ΠΎΡ€ΠΊ ΡΡŠΡ€Π²ΡŠΡ€ (ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ„ΠΎΡ€ΠΊΠΈΡ€Π°Π½Π΅ Π½Π° процСситС)
  • Π‘ΡŠΡ€Π²ΡŠΡ€ с нишки (Π΅Π΄Π½Π° нишка Π·Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅)
  • Π‘ΡŠΡ€Π²ΡŠΡ€ с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ създадСни нишки
  • АрхитСктура Π½Π° Π±Π°Π·Π° poll()
  • АрхитСктура Π½Π° Π±Π°Π·Π° epoll

Π˜Π·ΠΌΠ΅Ρ€Π²Π°ΠΌΠ΅ производитСлността Π½Π° всяка Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, ΠΊΠ°Ρ‚ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°ΠΌΠ΅ ΡΡŠΡ€Π²ΡŠΡ€Π° с HTTP запитвания. Но ΠΏΡ€ΠΈ сравнСниС Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ с висока стСпСн Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ, броят Π½Π° запитванията сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°. ВСстовамС Ρ‚Ρ€ΠΈ ΠΏΡŠΡ‚ΠΈ ΠΈ изчислявамС срСдното.

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ Π·Π° тСстванС

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния Π½Π° Linux. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Настройка Π·Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Ρ‚Π΅Π»Π½ΠΎ тСстванС Π½Π° ZeroHTTPd

Π’Π°ΠΆΠ½ΠΎ Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚Π΅ тСстовСтС, всички ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π΄Π° Π½Π΅ работят Π½Π° Π΅Π΄Π½Π° машина. Π’ Ρ‚ΠΎΠ·ΠΈ случай ОБ носи Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ Π·Π° ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ сС ΡΡŠΡΡ‚Π΅Π·Π°Π²Π°Ρ‚ Π·Π° CPU. Π˜Π·ΠΌΠ΅Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма с всяка ΠΎΡ‚ ΠΈΠ·Π±Ρ€Π°Π½ΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ Π΅ Π΅Π΄Π½Π° ΠΎΡ‚ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡ‚Π΅ Ρ†Π΅Π»ΠΈ Π½Π° Ρ‚ΠΎΠ²Π° ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅. ДобавянСто Π½Π° ΠΏΠΎ-голям Π±Ρ€ΠΎΠΉ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Ρ‰Π΅ бъдС ΠΏΠ°Π³ΡƒΠ±Π½ΠΎ Π·Π° процСса. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, настройката Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ-Π³ΠΎΡ€Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π΅.

Какво ΠΏΡ€Π°Π²ΠΈ всСки ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ

  • load.unixism.net: Ρ‚ΡƒΠΊ стартирамС ab, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° Apache Benchmark. Вя Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡ‚ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π·Π° тСстванС Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ.
  • nginx.unixism.net: понякога искамС Π΄Π° стартирамС ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ СкзСмпляр Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°. Π—Π° Ρ†Π΅Π»Ρ‚Π° ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Nginx с подходящитС настройки Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ балансировчик Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ, ΠΈΠ΄Π²Π°Ρ‰ΠΎ ΠΎΡ‚ ab Π½Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ процСси.
  • zerohttpd.unixism.net: Ρ‚ΡƒΠΊ стартирамС Π½Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π½Π° сСдСм Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ, ΠΏΠΎ Π΅Π΄Π½Π° Π½Π° вСднъТ.
  • redis.unixism.net: Π½Π° Ρ‚ΠΎΠ·ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄Π΅ΠΌΠΎΠ½ Redis, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ записитС Π² гостната ΠΊΠ½ΠΈΠ³Π° ΠΈ брояча Π½Π° посСтитСлитС.

Всички ΡΡŠΡ€Π²ΡŠΡ€ΠΈ работят Π½Π° Π΅Π΄Π½ΠΎ ядро Π½Π° процСсора. Π˜Π΄Π΅ΡΡ‚Π° Π΅ Π΄Π° сС ΠΎΡ†Π΅Π½ΠΈ максималната производитСлност Π½Π° всяка ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈΡ‚Π΅. ПонСТС всички ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ сС тСстват Π½Π° Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅, Ρ‚ΠΎΠ²Π° Π΅ Π±Π°Π·ΠΎΠ²ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π·Π° тяхното сравнСниС. ΠœΠΎΡΡ‚Π° тСстова инсталация сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, Π½Π°Π΅Ρ‚ΠΈ ΠΎΡ‚ Digital Ocean.

Какво ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°ΠΌΠ΅?

ΠœΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. ΠžΡ†Π΅Π½ΡΠ²Π°ΠΌΠ΅ производитСлността Π½Π° всяка Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π² Ρ‚Π°Π·ΠΈ конфигурация, Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°ΠΉΠΊΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ с заявки Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½ΠΈΠ²Π° Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ: Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ нараства ΠΎΡ‚ 20 Π΄ΠΎ 15 000 Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ.

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΎΡ‚ тСстовСтС

На слСдващата Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° производитСлността Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Π°Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½ΠΈΠ²Π° Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ. По оста y – Π±Ρ€ΠΎΠΉ заявки Π² сСкунда, ΠΏΠΎ оста x – ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния Π½Π° Linux. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния Π½Π° Linux. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния Π½Π° Linux. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

По-Π΄ΠΎΠ»Ρƒ Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Π° с Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅.

заявки Π² сСкунда

ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ
ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½
Ρ„ΠΎΡ€ΠΊ
ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ създаванС
ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π΅Π½
ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π΅Π½
poll
epoll

20
7
112
2100
1800
2250
1900
2050

50
7
190
2200
1700
2200
2000
2000

100
7
245
2200
1700
2200
2150
2100

200
7
330
2300
1750
2300
2200
2100

300
–
380
2200
1800
2400
2250
2150

400
–
410
2200
1750
2600
2000
2000

500
–
440
2300
1850
2700
1900
2212

600
–
460
2400
1800
2500
1700
2519

700
–
460
2400
1600
2490
1550
2607

800
–
460
2400
1600
2540
1400
2553

900
–
460
2300
1600
2472
1200
2567

1000
–
475
2300
1700
2485
1150
2439

1500
–
490
2400
1550
2620
900
2479

2000
–
350
2400
1400
2396
550
2200

2500
–
280
2100
1300
2453
490
2262

3000
–
280
1900
1250
2502
голямо Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅
2138

5000
–
голямо Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅
1600
1100
2519
–
2235

8000
–
–
1200
голямо Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅
2451
–
2100

10Β 000
–
–
голямо Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅
–
2200
–
2200

11Β 000
–
–
–
–
2200
–
2122

12Β 000
–
–
–
–
970
–
1958

13Β 000
–
–
–
–
730
–
1897

14Β 000
–
–
–
–
590
–
1466

15Β 000
–
–
–
–
532
–
1281

ΠžΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ‚Π° ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° става ясно, Ρ‡Π΅ Π½Π°Π΄ 8000 Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ заявки остават само Π΄Π²Π°ΠΌΠ° участници: ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ създаванС ΠΈ epoll. Π‘ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° poll Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ-Π·Π»Π΅ ΠΎΡ‚ многопоточния. АрхитСктурата с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ създаванС Π½Π° ΠΏΠΎΡ‚ΠΎΡ†ΠΈ прСдставлява достойна конкурСнция Π½Π° epoll: Ρ‚ΠΎΠ²Π° свидСтСлства Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠ±Ρ€Π΅ Linux ядрото ΠΏΠ»Π°Π½ΠΈΡ€Π° голям Π±Ρ€ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ.

Π˜Π·Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Π½Π° ZeroHTTPd

Π˜Π·Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Π½Π° ZeroHTTPd Ρ‚ΡƒΠΊ.. Π—Π° всяка Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈΠΌΠ° ΠΎΡ‚Π΄Π΅Π»Π½Π° дирСктория.

ZeroHTTPd
β”‚
β”œβ”€β”€ 01_iterative
β”‚   β”œβ”€β”€ main.c
β”œβ”€β”€ 02_forking
β”‚   β”œβ”€β”€ main.c
β”œβ”€β”€ 03_preforking
β”‚   β”œβ”€β”€ main.c
β”œβ”€β”€ 04_threading
β”‚   β”œβ”€β”€ main.c
β”œβ”€β”€ 05_prethreading
β”‚   β”œβ”€β”€ main.c
β”œβ”€β”€ 06_poll
β”‚   β”œβ”€β”€ main.c
β”œβ”€β”€ 07_epoll
β”‚    └── main.c
β”œβ”€β”€ Makefile
β”œβ”€β”€ public
β”‚   β”œβ”€β”€ index.html
β”‚   └── tux.png
└── templates
    └── guestbook
        └── index.html

Π’ допълнСниС към сСдСмтС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° всички Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ, Π² основната дирСктория ΠΈΠΌΠ° ΠΎΡ‰Π΅ Π΄Π²Π΅: public ΠΈ templates. Π’ ΠΏΡŠΡ€Π²Π°Ρ‚Π° сС Π½Π°ΠΌΠΈΡ€Π° Ρ„Π°ΠΉΠ»ΡŠΡ‚ index.html ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ Π΅ΠΊΡ€Π°Π½Π½Π° снимка. Π’Π°ΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° поставитС ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ, ΠΈ ZeroHTTPd трябва Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΄Π° прСдостави Ρ‚Π΅Π·ΠΈ статични Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Ако ΠΏΡŠΡ‚ΡΡ‚ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° съвпада с ΠΏΡŠΡ‚Ρ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° public, ZeroHTTPd Ρ‚ΡŠΡ€ΡΠΈ Ρ„Π°ΠΉΠ»Π° index.html Π² Ρ‚Π°Π·ΠΈ дирСктория. Π‘ΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° гостовата ΠΊΠ½ΠΈΠ³Π° сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ. Вя ΠΈΠΌΠ° само Π³Π»Π°Π²Π½Π° страница, Ρ‡ΠΈΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ сС основава Π½Π° Ρ„Π°ΠΉΠ»Π° β€˜templates/guestbook/index.html’. Π’ ZeroHTTPd Π΅ лСсно Π΄Π° сС добавят Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΈ страници Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ. Π˜Π΄Π΅ΡΡ‚Π° Π΅, Ρ‡Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° добавят шаблони Π² Ρ‚Π°Π·ΠΈ дирСктория ΠΈ Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Ρ‚ ZeroHTTPd ΠΏΡ€ΠΈ нСобходимост.

Π—Π° Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚Π΅ всички сСдСм ΡΡŠΡ€Π²ΡŠΡ€Π°, стартирайтС make all ΠΎΡ‚ основната дирСктория β€” ΠΈ всички Π±ΠΈΠ»Π΄ΠΎΠ²Π΅ Ρ‰Π΅ сС появят Π² Ρ‚Π°Π·ΠΈ дирСктория. Π˜ΡΠΏΡŠΠ»Π½ΠΈΠΌΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Ρ‚ΡŠΡ€ΡΡΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈΡ‚Π΅ public ΠΈ templates Π² дирСкторията, ΠΎΡ‚ която сС стартират.

Linux API

Π—Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ информацията Π² Ρ‚ΠΎΠ·ΠΈ Ρ†ΠΈΠΊΡŠΠ» ΠΎΡ‚ статии, Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ ΠΎΠΏΠΈΡ‚ с Linux API. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΠΎ Ρ‚Π΅ΠΌΠ°Ρ‚Π°, Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ справочни рСсурси. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Ρ‰Π΅ сС докоснСм Π΄ΠΎ няколко ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π½Π° Linux API, Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½ΠΈ Ρ‰Π΅ бъдС ΡΡŠΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡Π΅Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΈΠΌΠ½ΠΎ Π²ΡŠΡ€Ρ…Ρƒ процСситС, Π½ΠΈΡˆΠΊΠΈΡ‚Π΅, ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π° ΠΈ мрСТовия стСк. ОсвСн ΠΊΠ½ΠΈΠ³ΠΈΡ‚Π΅ ΠΈ статиитС Π·Π° Linux API, ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ ΡΡŠΡ‰ΠΎ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΌΠ°Π½ΠΈΡ‚Π΅ Π·Π° систСмнитС повиквания ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ ΠΈ мащабируСмост

Π•Π΄ΠΈΠ½ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ относно производитСлността ΠΈ мащабируСмостта. Π’Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ тях няма Π²Ρ€ΡŠΠ·ΠΊΠ°. МоТС Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ ΡƒΠ΅Π± услуга, която Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅, с Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ ΠΎΡ‚ няколко милисСкунди, Π½ΠΎ която Π½Π΅ Π΅ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠ°. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° Π·Π»Π΅ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎ ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ изисква няколко сСкунди Π·Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€, Π½ΠΎ ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π° Π΄ΠΎ дСсСтки Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° дСсСтки хиляди Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ. ВсС ΠΏΠ°ΠΊ, ΡΡŠΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° висока производитСлност ΠΈ мащабируСмост Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΡ‰Π½ΠΎ. ВисокопроизводитСлни прилоТСния, ΠΊΠ°Ρ‚ΠΎ цяло, пСстят рСсурси ΠΈ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ обслуТват ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, намалявайки Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅.

Π—Π°Π΄Π°Ρ‡ΠΈ CPU ΠΈ I/O

Накрая, Π² изчислСнията Π²ΠΈΠ½Π°Π³ΠΈ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚ Π΄Π²Π° възмоТни Ρ‚ΠΈΠΏΠ° Π·Π°Π΄Π°Ρ‡ΠΈ: Π·Π° I/O ΠΈ CPU. ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° заявки ΠΏΡ€Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ (ΠΌΡ€Π΅ΠΆΠΎΠ² Π²Ρ…ΠΎΠ΄-ΠΈΠ·Ρ…ΠΎΠ΄), обслуТванС Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ (ΠΌΡ€Π΅ΠΆΠΎΠ² ΠΈ дисков Π²Ρ…ΠΎΠ΄-ΠΈΠ·Ρ…ΠΎΠ΄), комуникация с Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ (ΠΌΡ€Π΅ΠΆΠΎΠ² ΠΈ дисков Π²Ρ…ΠΎΠ΄-ΠΈΠ·Ρ…ΠΎΠ΄) β€” всичко Ρ‚ΠΎΠ²Π° са дСйствия I/O. Някои заявки към Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π»Π΅ΠΊΠΎ Π΄Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Ρ‚ CPU (сортировка, изчисляванС Π½Π° срСдното Π°Ρ€ΠΈΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‡Π½ΠΎ Π½Π° ΠΌΠΈΠ»ΠΈΠΎΠ½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΈ Ρ‚.Π½.). ΠŸΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΡƒΠ΅Π± прилоТСния са ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ ΠΏΠΎ максимално възмоТСн I/O, Π° ΠΏΡ€ΠΎΡ†Π΅ΡΠΎΡ€ΡŠΡ‚ рядко сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° пълна мощност. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ Π² някаква Π·Π°Π΄Π°Ρ‡Π° Π·Π° Π²Ρ…ΠΎΠ΄-ΠΈΠ·Ρ…ΠΎΠ΄ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ CPU, Ρ‚ΠΎΠ²Π° Π½Π°ΠΉ-вСроятно Π΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Π½Π° лоша Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ рСсурситС Π½Π° CPU сС Ρ…Π°Ρ€Ρ‡Π°Ρ‚ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° процСситС ΠΈ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° контСкста β€” ΠΈ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ особСно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. Ако ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° изобраТСния, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° Π°ΡƒΠ΄ΠΈΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈΠ»ΠΈ машинно ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ изисква ΠΌΠΎΡ‰Π½ΠΈ рСсурси CPU. Но Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ прилоТСния Π½Π΅ Π΅ Ρ‚Π°ΠΊΠ°.

По-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π·Π° сСрвСрнитС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ

  1. Част I. Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°
  2. Част II. Π€ΠΎΡ€ΠΊ-ΡΡŠΡ€Π²ΡŠΡ€ΠΈ
  3. Част III. ΠŸΡ€Π΅Ρ„ΠΎΡ€ΠΊ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ
  4. Част IV. Π‘ΡŠΡ€Π²ΡŠΡ€ΠΈ с ΠΏΠΎΡ‚ΠΎΡ†ΠΈ Π½Π° изпълнСниС
  5. Част V. Π‘ΡŠΡ€Π²ΡŠΡ€ΠΈ с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ създадСни ΠΏΠΎΡ‚ΠΎΡ†ΠΈ
  6. Част VI. АрхитСктура Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° poll
  7. Част VII. АрхитСктура Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° epoll

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster