Π‘Π»Π΅Π΄ Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½ΠΎΠ²Π° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅Π½ HTTP ΡΡΡΠ²ΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅Π½ ΠΏΡΠΎΠΊΡΠΈ ΡΡΡΠ²ΡΡ , ΠΊΠΎΡΡΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡΠ°, Π½Π°ΡΡΡΠΏΠ°Π½ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ 1.17.x. Π Π±ΡΠ΄Π΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΡΠ°Π±ΠΈΠ»Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ 1.18 ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. Π‘ΠΊΠΎΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π° Π²Π΅ΡΡΠΈΡ nginx 1.19, Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠ° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ΅ Π½ΡΠΆΠ΄Π°ΡΡ ΠΎΡ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΡΡΠ΅ΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ, Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ, Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΊΠΎΡΡΠΎ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΡΠΈ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ΅ ΡΠΎΡΠΌΡΠ»ΠΈΡΠ°Ρ ΠΈΠ·Π΄Π°Π½ΠΈΡ Π½Π° ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡ Nginx Plus.
Π ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Netcraft nginx ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° 19.56% ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΈ ΡΠ°ΠΉΡΠΎΠ²Π΅ (ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° 20.73%, ΠΏΡΠ΅Π΄ΠΈ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ 21.02%), ΠΊΠΎΠ΅ΡΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° Π²ΡΠΎΡΠΎ ΠΌΡΡΡΠΎ ΠΏΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡ Π² ΡΠ°Π·ΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ (Π΄ΡΠ»ΡΡ Π½Π° Apache Π΅ 27.64%, Google β 10.03%, Microsoft IIS β 4.77%). ΠΡΠΈ ΡΠΎΠ²Π°, ΠΏΡΠΈ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ°ΠΉΡΠΎΠ²Π΅, nginx Π·Π°ΠΏΠ°Π·Π²Π° Π»ΠΈΠ΄Π΅ΡΡΡΠ²ΠΎΡΠΎ ΠΈ Π·Π°Π΅ΠΌΠ° 36.91% ΠΎΡ ΠΏΠ°Π·Π°ΡΠ° (ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° 27.52%), Π΄ΠΎΠΊΠ°ΡΠΎ Π΄Π΅Π»ΡΡ Π½Π° Apache Π΅ 24.73%, Microsoft IIS β 12.85%, Google β 3.42%.
ΠΠ΅ΠΆΠ΄Ρ Π½Π°ΠΉ-ΠΏΠΎΡΠ΅ΡΠ°Π²Π°Π½ΠΈΡΠ΅ ΡΠ°ΠΉΡΠΎΠ²Π΅ Π² ΡΠ²Π΅ΡΠ° Π΄Π΅Π»ΡΡ Π½Π° nginx Π΅ 25.54% (ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° 26.22%, ΠΏΡΠ΅Π΄ΠΈ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ 23.76%). Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° nginx ΡΠ°Π±ΠΎΡΡΡ ΠΎΠΊΠΎΠ»ΠΎ 459 ΠΌΠ»Π½. ΡΠ°ΠΉΡΠ° (ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° 397 ΠΌΠ»Π½.). ΠΠΎ W3Techs nginx ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° 31.9% ΠΎΡ ΡΠ°ΠΉΡΠΎΠ²Π΅ΡΠ΅ ΡΡΠ΅Π΄ ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Π½Π°ΠΉ-ΠΏΠΎΡΠ΅ΡΠ°Π²Π°Π½ΠΈ, ΠΏΡΠ΅Π· Π°ΠΏΡΠΈΠ» ΠΌΠΈΠ½Π°Π»Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠΎΠ·ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π» Π±Π΅ΡΠ΅ 41.8%, ΠΏΡΠ΅Π΄ΠΈ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ β 38% (ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΎΠ±ΡΡΠ½Π΅Π½ΠΎ Ρ ΠΏΡΠ΅Ρ ΠΎΠ΄Π° ΠΊΡΠΌ ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° http-ΡΡΡΠ²ΡΡΠ° Cloudflare). ΠΡΠ»ΡΡ Π½Π° Apache Π·Π° Π³ΠΎΠ΄ΠΈΠ½Π°ΡΠ° ΡΠΏΠ°Π΄Π½Π° ΠΎΡ 43.6% Π΄ΠΎ 38.9%, Π° Π΄Π΅Π»ΡΡ Π½Π° Microsoft IIS ΠΎΡ 8.6% Π΄ΠΎ 8.3%. Π Π ΡΡΠΈΡ nginx ΡΠ΅ ΡΡΠ΅ΡΠ° Π½Π° 78.9% ΠΎΡ Π½Π°ΠΉ-ΠΏΠΎΡΠ΅ΡΠ°Π²Π°Π½ΠΈΡΠ΅ ΡΠ°ΠΉΡΠΎΠ²Π΅ (ΠΏΡΠ΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° β 81%).
ΠΠ°ΠΉ-Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΏΡΠΈ ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ 1.17.x:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° , ΠΊΠΎΠΉΡΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΡΠΎΠ±Π΅Π½ ΡΡΠ°ΡΡ, Π² ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π° ΠΈΠ½ΡΠ΅Π½Π·ΠΈΡΠ΅Ρ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ (Π±Π΅Π· rate limit), Π½ΠΎ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° ΡΠ΅ ΡΠ»Π΅Π΄ΠΈ Π±ΡΠΎΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·Π»ΠΈΠ·Π°Ρ ΠΈΠ·Π²ΡΠ½ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ Π»ΠΈΠΌΠΈΡΠΈ Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° , ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π°ΡΠ° ΠΌΠΎΠ΄ΡΠ»Π° ngx_http_limit_conn_module Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΡΠΎΠ±Π΅Π½ ΠΎΠΏΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ Π±ΡΠΎΡΡ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡΡΠ° Π½Π΅ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½, Π½ΠΎ ΡΠ΅ ΠΎΡΡΠΈΡΠ°;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ββ, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΠ΅ Π·Π° Π½Π΅Π°Π²ΡΠΎΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Ρ ΠΊΠΎΠ΄ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ 401 Π·Π° Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΠΎΠ΄Π±ΠΎΡΠ° Π½Π° ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΈ Π·Π°ΡΠΈΡΠ° ΠΎΡ , ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ (timing attack) ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ, Π΄ΠΎΡΡΡΠΏΡΡ Π΄ΠΎ ΠΊΠΎΠΈΡΠΎ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ , ΠΈΠ»ΠΈ (JSON Web Token);
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅ Β«limit_rateΒ» ΠΈ Β«limit_rate_afterΒ», ΠΊΠ°ΠΊΡΠΎ ΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅ Β«proxy_upload_rateΒ» ΠΈ Β«proxy_download_rateΒ» Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° stream;
- Π Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π°Π΄ΡΠ΅ΡΠ°. ΠΠΊΠΎ Π°Π΄ΡΠ΅ΡΡΡ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ ΠΊΠ°ΡΠΎ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌΠ΅, ΠΈΠΌΠ΅ΡΠΎ ΡΠ΅ ΡΡΡΡΠΈ ΡΡΠ΅Π΄ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠ΅ Π³ΡΡΠΏΠΈ ΡΡΡΠ²ΡΡΠΈ ΠΈ, Π°ΠΊΠΎ Π½Π΅ Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ, ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° resolverβa;
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ , ΠΊΠΎΠΈΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Ρ Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΠΏΠΎΡΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ ΠΎΡ Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° PROXY;
- Π ΠΌΠΎΠ΄ΡΠ»Π° Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° , ΠΊΠΎΡΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π±ΡΠΎΡ Π½Π° Π²ΡΡΠ·ΠΊΠΈΡΠ΅: PASSED, REJECTED ΠΈΠ»ΠΈ REJECTED_DRY_RUN;
- Π ΠΌΠΎΠ΄ΡΠ»Π° Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° , ΠΊΠΎΡΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π°ιΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠΎΡΡΡΠΏΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ: PASSED, DELAYED, REJECTED, DELAYED_DRY_RUN ΠΈΠ»ΠΈ REJECTED_DRY_RUN;
- ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° ;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ βlocationβ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° $r->internal_redirect(), ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½ ΠΎΡ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Perl. Π’ΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π³Π° ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° URI Ρ Π΅ΠΊΡΠ°Π½ΠΈΡΠ°Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ;
- ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² Π±Π»ΠΎΠΊΠ° ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Β«upstreamΒ» Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° «» Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Ρ ΠΏΡΠΈΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊΡΠΌ ΡΡΡΠ²ΡΡΠ°, ΡΠ΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅ ΠΏΡΠ°Π·Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΠΊΠ»ΡΡΠ°, ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° (round-robin);
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ioctl(FIONREAD), Π°ΠΊΠΎ Π΅ Π½Π°Π»ΠΈΡΠ΅Π½, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΡΠ΅ΡΠ΅Π½Π΅ ΠΎΡ Π±ΡΡΠ·Π° Π²ΡΡΠ·ΠΊΠ° Π·Π° Π΄ΡΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
