{"id":35106,"date":"2019-10-31T22:02:22","date_gmt":"2019-10-31T19:02:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/proizvoditelnost-setevyh-prilozhenij-linux-vvedenie\/"},"modified":"2019-10-31T22:02:22","modified_gmt":"2019-10-31T19:02:22","slug":"proizvoditelnost-setevyh-prilozhenij-linux-vvedenie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/proizvoditelnost-setevyh-prilozhenij-linux-vvedenie","title":{"rendered":"Linuxi v\u00f5rgu rakenduste j\u00f5udlus. Sissejuhatus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Veebirakendusi kasutatakse praegu igal pool ja HTTP domineeib k\u00f5iki edastusprotokolle. Veebirakenduste arendamise n\u00fcansse uurides p\u00f6\u00f6ravad paljud t\u00e4helepanu v\u00e4ga v\u00e4he sellele operatsioonis\u00fcsteemile, kus need rakendused tegelikult t\u00f6\u00f6tavad. Arenduse (Dev) ja opereerimise (Ops) eristaminen on olukorda veelgi halvendanud. Kuid DevOpsi kultuuri levikuga hakkavad arendajad vastutama oma rakenduste k\u00e4ivitamise eest pilves, seega on v\u00e4ga kasulik s\u00fcveneda operatsioonis\u00fcsteemi tausts\u00fcsteemi tundmisse. See on eriti kasulik, kui proovite \u00fcles seada s\u00fcsteemi tuhandete v\u00f5i k\u00fcmnete tuhandete samaaegsete \u00fchenduste jaoks.<\/p>\n<p>Veebiteenuste piirangud on v\u00e4ga sarnased teiste rakenduste piirangutega. Olgu need koormuse tasakaalustajad v\u00f5i andmebaasiserverid, k\u00f5ikidel neil rakendustel on sarnased probleemid k\u00f5rge j\u00f5udlusega keskkonnas. Nende p\u00f5hiliste piirangute m\u00f5istmine ja nende \u00fcletamise viiside leidmine v\u00f5imaldab \u00fcldiselt hinnata teie veebirakenduste j\u00f5udlust ja skaleeritavust.<\/p>\n<p>Kirjutan seda artiklite seeriat vastuseks noorte arendajate k\u00fcsimustele, kes soovivad saada teadlikeks s\u00fcsteemi arhitektideks. Linuxi rakenduste optimeerimise meetodeid ei saa selgelt m\u00f5ista, kui ei s\u00fc\u00fcvi nende alusp\u00f5him\u00f5tetesse, kuidas need t\u00f6\u00f6tavad operatsioonis\u00fcsteemi tasemel. Kuigi rakenduste t\u00fc\u00fcpe on palju, soovin antud ts\u00fcklis uurida just v\u00f5rgu rakendusi, mitte t\u00f6\u00f6lauarakendusi nagu brauserid v\u00f5i tekstiredaktorid. See materjal on m\u00f5eldud arendajatele ja arhitektidele, kes soovivad m\u00f5ista, kuidas t\u00f6\u00f6tavad Linuxi v\u00f5i Unix programmid ning kuidas neid k\u00f5rge j\u00f5udluse nimel struktureerida.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nLinux on <i>serverip\u00f5hine<\/i> operatsioonis\u00fcsteem, ja k\u00f5ige sagedamini t\u00f6\u00f6tavad teie rakendused just sellel OS-il. Kuigi r\u00e4\u00e4gin \"Linuxist\", v\u00f5ite suurema osa ajast kindlalt eeldada, et silmas peetakse k\u00f5iki Unix-t\u00fc\u00fcpi operatsioonis\u00fcsteeme. Siiski, ma ei ole kaasnevat koodi testinud teistel s\u00fcsteemidel. Nii et kui teid huvitab FreeBSD v\u00f5i OpenBSD, v\u00f5ivad tulemused erineda. Kui proovin midagi, mis on Linuxile spetsiifiline, annan sellest teada.<\/p>\n<p>Kuigi saate omandatud teadmisi kasutada rakenduse loomiseks nullist, mis on suurep\u00e4raselt optimeeritud, ei ole soovitatav seda teha. Kui kirjutate oma organisatsiooni \u00e4rirakendusele uue veebi-serveri C v\u00f5i C++ keeles, v\u00f5ib see olla teie viimane t\u00f6\u00f6p\u00e4ev. Siiski aitab selliste rakenduste struktuuri tundmine valida juba olemasolevaid programme. Saate v\u00f5rrelda protsessip\u00f5hiseid s\u00fcsteeme voogude- ja s\u00fcndmusp\u00f5histe s\u00fcsteemidega. Te m\u00f5istate ja hindate, miks Nginx t\u00f6\u00f6tab paremini kui Apache httpd, miks Python Tornado baasil t\u00f6\u00f6tav rakendus suudab teenindada rohkem kasutajaid v\u00f5rreldes Python Django baasil t\u00f6\u00f6tava rakendusega.<\/p>\n<h1>ZeroHTTPd: \u00f5ppevahend<\/h1>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shuveb\/zerohttpd\">ZeroHTTPd<\/a><\/noindex>\u00a0\u2014 veebi-server, mille kirjutasin nullist C keeles \u00f5ppevahendina. Sellel ei ole v\u00e4liseid s\u00f5ltuvusi, sealhulgas juurdep\u00e4\u00e4su Redis'ele. K\u00e4ivitame oma Redise protseduurid. Lisainfot leiate allpool.<\/p>\n<p>Kuigi me v\u00f5iksime pikka aega arutada teooriat, ei ole miski parem kui kirjutada kood, k\u00e4ivitada see ja v\u00f5rrelda erinevaid serveri arhitektuure. See on k\u00f5ige n\u00e4itlikum meetod. Seet\u00f5ttu kirjutame lihtsa veebiserveri ZeroHTTPd, rakendades igat mudelit: protsesside, niitide ja s\u00fcndmuste p\u00f5hjal. Kontrollime iga\u00fcht neist serveritest ja vaatame, kuidas nad omavahel v\u00f5rreldes toimivad. ZeroHTTPd on teostatud \u00fches C-failis. S\u00fcndmusp\u00f5hise serveri koosseisu kuulub <noindex><a rel=\"nofollow\" href=\"https:\/\/troydhanson.github.io\/uthash\/\">uthash<\/a><\/noindex>, suurep\u00e4rane hash-tabeli teostus, mis tarnitakse \u00fches p\u00e4istefailis. Muude osade puhul ei ole mingeid s\u00f5ltuvusi, et mitte projekti keeruliseks teha.<\/p>\n<p>Koodis on palju kommentaare, mis aitavad arusaamist. ZeroHTTPd on lihtne veebiserver, mis koosneb vaid m\u00f5nest koodireast ja esindab ka minimaalset raamistikku veebiarenduseks. Selle funktsionaalsus on piiratud, kuid see suudab serveerida staatilisi faile ja v\u00e4ga lihtsaid 'd\u00fcnaamilisi' lehti. Pean \u00fctlema, et ZeroHTTPd sobib h\u00e4sti \u00f5ppimiseks, kuidas luua k\u00f5rge j\u00f5udlusega Linuxi rakendusi. \u00dcldiselt ootavad enamik veebiteenuseid p\u00e4ringute t\u00e4itmist, kontrollivad neid ja t\u00f6\u00f6tlevad. Just seda teebki ZeroHTTPd. See on \u00f5ppevahend, mitte tootmisriist. See ei ole tugev vigade t\u00f6\u00f6tlemises ja ei pruugi uhkustada parimate turvapraktikatega (oh jah, ma kasutasin <code>strcpy<\/code>) v\u00f5i keerukate C-keele trikkidega. Kuid ma loodan, et see t\u00e4idab oma \u00fclesannet h\u00e4sti.<\/p>\n<p><img decoding=\"async\" alt=\"Linuxi v\u00f5rgu rakenduste j\u00f5udlus. Sissejuhatus\" src=\"\/wp-content\/uploads\/33fd0a5353667001523d5d4c8ada9ecf.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>ZeroHTTPd pealeht. See suudab esitada erinevaid failit\u00fc\u00fcpe, sealhulgas pilte.<\/i><\/p>\n<h1>K\u00fclastusraamatu rakendus<\/h1>\n<p>\nKaasaegsed veebirakendused ei piirdu tavaliselt staatiliste failidega. Neil on keerukad interaktsioonid erinevate andmebaaside, cache'ide jne. Seet\u00f5ttu loome lihtsa veebirakenduse nimega \u201eK\u00fclastusraamat\u201d, kus k\u00fclastajad saavad j\u00e4tta oma nime all kirjeid. K\u00fclastusraamat hoiab varasemaid kirjeid. Lehe alumises osas on ka k\u00fclastajate loendur.<\/p>\n<p><img decoding=\"async\" alt=\"Linuxi v\u00f5rgu rakenduste j\u00f5udlus. Sissejuhatus\" src=\"\/wp-content\/uploads\/ed8e828e8567d3d114875520988742d7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Veebirakendus \u201eK\u00fclastusraamat\u201d ZeroHTTPd<\/i><\/p>\n<p>K\u00fclastuste arvesti ja k\u00fclalisteraamatu salvestamine toimub Redis'is. Kommunikatsioonide haldamiseks Redis'iga on v\u00e4lja t\u00f6\u00f6tatud kohandatud protseduurid, mis ei s\u00f5ltu v\u00e4listest raamatukogudest. Ma ei ole suur kodarenduse koodi pooldaja, kui on olemas avalikult saadaval ja h\u00e4sti testitud lahendusi. Kuid ZeroHTTPd eesm\u00e4rk on uurida Linuxi j\u00f5udlust ja juurdep\u00e4\u00e4su v\u00e4listel teenustele, samas kui HTTP-p\u00e4ringute t\u00f6\u00f6tlemine m\u00f5jutab j\u00f5udlust t\u00f5siselt. Me peame t\u00e4ielikult kontrollima suhtlust Redis'iga igas meie serveri arhitektuuris. \u00dches arhitektuuris kasutame blokeerivaid kalle, teistes aga s\u00fcndmuste p\u00f5hiseid protseduure. V\u00e4list Redis'i kliendi raamatukogu kasutamine ei anna sellist kontrolli. Lisaks t\u00e4idab meie v\u00e4ike Redis'i klient vaid m\u00f5ningaid funktsioone (v\u00f5tme saamine, seadmine ja suurendamine; massiivi saamine ja lisamine). Samuti on Redis'i protokoll \u00e4\u00e4rmiselt elegantne ja lihtne. Selle \u00f5ppimiseks ei pea isegi spetsiaalselt pingutama. Fakt, et kogu t\u00f6\u00f6 protokoll teeb umbes sada koodi rida, n\u00e4itab, kui h\u00e4sti see on l\u00e4bi m\u00f5eldud.<\/p>\n<p>J\u00e4rgmises joonises on n\u00e4idatud rakenduse toimingud, kui klient (brauser) teeb p\u00e4ringu <code>\/guestbookURL<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"Linuxi v\u00f5rgu rakenduste j\u00f5udlus. Sissejuhatus\" src=\"\/wp-content\/uploads\/5c5e6740419384b7232aeead95db491b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>K\u00fclalisraamatukirjelduste rakenduse t\u00f6\u00f6mehhanism<\/i><\/p>\n<p>Kui k\u00fclalisraamatu lehte tuleb v\u00e4lja anda, toimub \u00fcks failis\u00fcsteemi kutsumine \u0448\u0430\u0431\u043b\u043e\u043dite lugemiseks m\u00e4llu ning kolm v\u00f5rgu kutsumist Redis'esse. \u0428\u0430\u0431\u043b\u043e\u043difail sisaldab suure osa HTML-i sisust, mis on \u00fclemisel ekraanipildil. Seal on ka spetsiaalsed t\u00e4itjatel d\u00fcnaamilise sisu osa jaoks: postitused ja k\u00fclastajate loendur. Me saame need Redis'est, paigutame lehele ja v\u00e4ljastame kliendile t\u00e4ielikult vormistatud sisu. Kolmandat Redis'e kutsumist saab v\u00e4ltida, kuna Redis tagastab v\u00f5tme uue v\u00e4\u00e4rtuse suurendamisel. Kuid meie s\u00fcndmustep\u00f5hise as\u00fcnkroonne arhitektuuri korral pakuvad paljud v\u00f5rgu kutsumised h\u00e4sti \u00f5ppimise eesm\u00e4rkidel. Seega ei kasuta me k\u00fclastajate arvu Redis'elt tagastatud v\u00e4\u00e4rtust, vaid k\u00fcsime seda eraldi kutsumisega.<\/p>\n<h1>Serveri arhitektuurid ZeroHTTPd<\/h1>\n<p>\nMe ehitame seitse ZeroHTTPd versiooni sama funktsionaalsusega, kuid erineva arhitektuuriga:<\/p>\n<ul>\n<li>Iteratiivne\n<\/li>\n<li>Fork server (\u00fcks alamprotsess p\u00e4ringu kohta)\n<\/li>\n<li>Eelseise server (protsesside eelne vormimine)\n<\/li>\n<li>Server, kus on t\u00e4itmisvoogudes (\u00fcks l\u00f5ng p\u00e4ringu kohta)\n<\/li>\n<li>Server, kus on eelnevalt loodud vood\n<\/li>\n<li>Arhitektuur, millel on <code>poll()<\/code>\n<\/li>\n<li>Arhitektuur, millel on <code>epoll<\/code><\/li>\n<\/ul>\n<p>\nM\u00f5\u00f5dame iga arhitektuuri j\u00f5udlust, laadides serverit HTTP p\u00e4ringutega. Kuid k\u00f5rge paralleelsuse korral suureneb p\u00e4ringute arv. Testime kolm korda ja arvutame keskmise.<\/p>\n<h1>Testimise metoodika<\/h1>\n<p>\n<img decoding=\"async\" alt=\"Linuxi v\u00f5rgu rakenduste j\u00f5udlus. Sissejuhatus\" src=\"\/wp-content\/uploads\/aa4f337b6e90fa032fbef5374fac8f53.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>ZeroHTTPd koormustestimise seadistamine<\/i> <\/p>\n<p>Oluline on, et k\u00f5iki komponente ei k\u00e4itataks samal masinal testide ajal. Sel juhul kannab operatsioonis\u00fcsteem t\u00e4iendavaid kulusid ajakava t\u00f5ttu, kuna komponendid konkureerivad CPU \u00fcle. Operatsioonis\u00fcsteemi kulude m\u00f5\u00f5tmine igas valitud serveri arhitektuuris on selle harjutuse \u00fcks olulisemaid eesm\u00e4rke. Rohkemate muutujate lisamine halvendab protsessi. Seega t\u00f6\u00f6tab \u00fclaltoodud seadistus k\u00f5ige paremini.<\/p>\n<h3>Mis teeb iga nende serverite puhul<\/h3>\n<p><\/p>\n<ul>\n<li>load.unixism.net: siin k\u00e4itame <code>ab<\/code>, Apache Benchmark utiliiti. See genereerib koormuse, mis on vajalik meie serveri arhitektuuride testimiseks.\n<\/li>\n<li>nginx.unixism.net: m\u00f5nikord soovime k\u00e4itada rohkem kui \u00fchte serveriprogrammi eksemplari. Selleks t\u00f6\u00f6tab Nginx server koos vastavate seadistustega koormuse jaoturina, mis jagab koormust <i>ab<\/i> meie serveriprotsessidele.\n<\/li>\n<li>zerohttpd.unixism.net: siin k\u00e4itame meie serveriprogramme seitsme erineva arhitektuuri peal, \u00fchte korraga.\n<\/li>\n<li>redis.unixism.net: sel serveril t\u00f6\u00f6tab Redis deemon, kus hoitakse k\u00fclalisteraamatu kirjeid ja k\u00fclastajate arvestit.<\/li>\n<\/ul>\n<p>\nK\u00f5ik serverid t\u00f6\u00f6tavad \u00fche protsessori tuuma peal. Idee on hinnata iga arhitektuuri maksimaalset j\u00f5udlust. Kuna k\u00f5ik serveriprogrammid testitakse sama riistvaral, on see nende v\u00f5rdlemiseks alus. Minu testimisseade koosneb Digitaalsetest Ookeanist renditud virtuaalserveritest.<\/p>\n<h3>Mida me m\u00f5\u00f5dame?<\/h3>\n<p>\nSaame m\u00f5\u00f5ta erinevaid n\u00e4itajaid. Hindame iga arhitektuuri j\u00f5udlust antud konfiguratsioonis, koormates servereid erinevatel tasanditel: koormus t\u00f5useb 20-st kuni 15 000 samal ajal oleva kasutaja juurde.<\/p>\n<h1>Testide tulemused<\/h1>\n<p>\nJ\u00e4rgmisel diagrammil on kujutatud serverite j\u00f5udlust erinevates arhitektuurides erinevatel paralleelsuse tasemetel. Y-telg n\u00e4itab sekundis tehtavaid p\u00e4ringute arvu, X-telg aga paralleelseid \u00fchendusi.<\/p>\n<p><img decoding=\"async\" alt=\"Linuxi v\u00f5rgu rakenduste j\u00f5udlus. Sissejuhatus\" src=\"\/wp-content\/uploads\/3415bcfb66503152d644130f68bd19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Linuxi v\u00f5rgu rakenduste j\u00f5udlus. Sissejuhatus\" src=\"\/wp-content\/uploads\/ba457b671eb758f3226e0eeafaadc6aa.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Linuxi v\u00f5rgu rakenduste j\u00f5udlus. Sissejuhatus\" src=\"\/wp-content\/uploads\/aea06856d61d4d4bdda9814c53a28d4a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAllpool on tabel tulemuste kohta.<\/p>\n<p> p\u00e4ringut sekundis <\/p>\n<p><strong>paralleelsus<\/strong><br \/>\n<strong>iteraatiivne<\/strong><br \/>\n<strong>forki<\/strong><br \/>\n<strong>eelnevalt forkitud<\/strong><br \/>\n<strong>keeruline<\/strong><br \/>\n<strong>eelnevalt keeruline<\/strong><br \/>\n<strong>poll<\/strong><br \/>\n<strong>epoll<\/strong><\/p>\n<p>20<br \/>\n7<br \/>\n112<br \/>\n2100<br \/>\n1800<br \/>\n2250<br \/>\n1900<br \/>\n2050<\/p>\n<p>50<br \/>\n7<br \/>\n190<br \/>\n2200<br \/>\n1700<br \/>\n2200<br \/>\n2000<br \/>\n2000<\/p>\n<p>100<br \/>\n7<br \/>\n245<br \/>\n2200<br \/>\n1700<br \/>\n2200<br \/>\n2150<br \/>\n2100<\/p>\n<p>200<br \/>\n7<br \/>\n330<br \/>\n2300<br \/>\n1750<br \/>\n2300<br \/>\n2200<br \/>\n2100<\/p>\n<p>300<br \/>\n\u2013<br \/>\n380<br \/>\n2200<br \/>\n1800<br \/>\n2400<br \/>\n2250<br \/>\n2150<\/p>\n<p>400<br \/>\n\u2013<br \/>\n410<br \/>\n2200<br \/>\n1750<br \/>\n2600<br \/>\n2000<br \/>\n2000<\/p>\n<p>500<br \/>\n\u2013<br \/>\n440<br \/>\n2300<br \/>\n1850<br \/>\n2700<br \/>\n1900<br \/>\n2212<\/p>\n<p>600<br \/>\n\u2013<br \/>\n460<br \/>\n2400<br \/>\n1800<br \/>\n2500<br \/>\n1700<br \/>\n2519<\/p>\n<p>700<br \/>\n\u2013<br \/>\n460<br \/>\n2400<br \/>\n1600<br \/>\n2490<br \/>\n1550<br \/>\n2607<\/p>\n<p>800<br \/>\n\u2013<br \/>\n460<br \/>\n2400<br \/>\n1600<br \/>\n2540<br \/>\n1400<br \/>\n2553<\/p>\n<p>900<br \/>\n\u2013<br \/>\n460<br \/>\n2300<br \/>\n1600<br \/>\n2472<br \/>\n1200<br \/>\n2567<\/p>\n<p>1000<br \/>\n\u2013<br \/>\n475<br \/>\n2300<br \/>\n1700<br \/>\n2485<br \/>\n1150<br \/>\n2439<\/p>\n<p>1500<br \/>\n\u2013<br \/>\n490<br \/>\n2400<br \/>\n1550<br \/>\n2620<br \/>\n900<br \/>\n2479<\/p>\n<p>2000<br \/>\n\u2013<br \/>\n350<br \/>\n2400<br \/>\n1400<br \/>\n2396<br \/>\n550<br \/>\n2200<\/p>\n<p>2500<br \/>\n\u2013<br \/>\n280<br \/>\n2100<br \/>\n1300<br \/>\n2453<br \/>\n490<br \/>\n2262<\/p>\n<p>3000<br \/>\n\u2013<br \/>\n280<br \/>\n1900<br \/>\n1250<br \/>\n2502<br \/>\nsuure ulatusega<br \/>\n2138<\/p>\n<p>5000<br \/>\n\u2013<br \/>\nsuure ulatusega<br \/>\n1600<br \/>\n1100<br \/>\n2519<br \/>\n\u2013<br \/>\n2235<\/p>\n<p>8000<br \/>\n\u2013<br \/>\n\u2013<br \/>\n1200<br \/>\nsuure ulatusega<br \/>\n2451<br \/>\n\u2013<br \/>\n2100<\/p>\n<p>10\u00a0000<br \/>\n\u2013<br \/>\n\u2013<br \/>\nsuure ulatusega<br \/>\n\u2013<br \/>\n2200<br \/>\n\u2013<br \/>\n2200<\/p>\n<p>11\u00a0000<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n2200<br \/>\n\u2013<br \/>\n2122<\/p>\n<p>12\u00a0000<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n970<br \/>\n\u2013<br \/>\n1958<\/p>\n<p>13\u00a0000<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n730<br \/>\n\u2013<br \/>\n1897<\/p>\n<p>14\u00a0000<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n590<br \/>\n\u2013<br \/>\n1466<\/p>\n<p>15\u00a0000<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n532<br \/>\n\u2013<br \/>\n1281<\/p>\n<p>\nDiagrammist ja tabelist on n\u00e4ha, et \u00fcle 8000 samaaegse p\u00e4ringu juures j\u00e4\u00e4vad meil alles vaid kaks arhitektuuri: eelnevalt forkitud ja epoll. Koormuse t\u00f5ustes t\u00f6\u00f6tab poll-iga server halvemini kui keeruline. Eelnevalt loodud keerud pakkuvad kvaliteetset konkurentsi epoll-le: see t\u00f5estab, kui h\u00e4sti Linuxi kernel suudab hallata suurt hulka keerukaid \u00fclesandeid.<\/p>\n<h1>ZeroHTTPd allikakood<\/h1>\n<p>\nZeroHTTPd allikakood <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shuveb\/zerohttpd\">siit<\/a><\/noindex>. Iga arhitektuuri jaoks on eraldi kataloog.<\/p>\n<pre>ZeroHTTPd\n\u2502\n\u251c\u2500\u2500 01_iterative\n\u2502   \u251c\u2500\u2500 main.c\n\u251c\u2500\u2500 02_forking\n\u2502   \u251c\u2500\u2500 main.c\n\u251c\u2500\u2500 03_preforking\n\u2502   \u251c\u2500\u2500 main.c\n\u251c\u2500\u2500 04_threading\n\u2502   \u251c\u2500\u2500 main.c\n\u251c\u2500\u2500 05_prethreading\n\u2502   \u251c\u2500\u2500 main.c\n\u251c\u2500\u2500 06_poll\n\u2502   \u251c\u2500\u2500 main.c\n\u251c\u2500\u2500 07_epoll\n\u2502    \u2514\u2500\u2500 main.c\n\u251c\u2500\u2500 Makefile\n\u251c\u2500\u2500 public\n\u2502   \u251c\u2500\u2500 index.html\n\u2502   \u2514\u2500\u2500 tux.png\n\u2514\u2500\u2500 templates\n    \u2514\u2500\u2500 guestbook\n        \u2514\u2500\u2500 index.html<\/pre>\n<p>\nLisaks seitsmele kataloogile, mis on m\u00f5eldud k\u00f5igile arhitektuuridele, on \u00fclemises kataloogis veel kaks: public ja templates. Esimeses asub fail index.html ja pilt esimeselt ekraanilt. Siia saab paigutada teisi faile ja kaustu ning ZeroHTTPd peaks probleemideta need staatilised failid v\u00e4lja andma. Kui brauseri path vastab public kausta teele, otsib ZeroHTTPd sellesse kataloogi faili index.html. K\u00fclastuste raamatu sisu genereeritakse d\u00fcnaamiliselt. Sellel on ainult peamine leht, mille sisu p\u00f5hineb failil \u2018templates\/guestbook\/index.html\u2019. ZeroHTTPd-s on lihtne lisada d\u00fcnaamilisi lehti laiendamiseks. Idee on, et kasutajad saavad selles kataloogis lisada malli ja laiendada ZeroHTTPd-d vastavalt vajadusele.<\/p>\n<p>Seitsme serveri ehitamiseks k\u00e4ivitage <code>make all<\/code> \u00fclemisest kataloogist \u2014 ja k\u00f5ik versioonid ilmuvad selle katalooge. T\u00e4itevfailid otsivad kaustu public ja templates selles kataloogis, kust need k\u00e4ivitatakse.<\/p>\n<h1>Linux API<\/h1>\n<p>\nSelle artiklite ts\u00fckli teabe m\u00f5istmiseks ei ole vajalik v\u00e4ga h\u00e4sti tunda Linux API-d. Soovitan siiski selle teema kohta rohkem lugeda, internetis on palju abimaterjale. Kuigi k\u00e4sitleme mitmeid Linux API kategooriaid, keskendume peamiselt protsessidele, l\u00f5imedele, s\u00fcndmustele ja v\u00f5rgu stack'ile. Lisaks Linux API raamatutele ja artiklitele soovitan tutvuda ka s\u00fcsteemik\u00f5nede ja kasutatavate teegifunktsioonide manuaalidega.<\/p>\n<h1>Toimivus ja skaleeritavus<\/h1>\n<p>\n\u00dcks t\u00e4helepanek j\u00f5udluse ja mastaapsuse kohta. Teoreetiliselt ei ole nende vahel mingit seost. Teil v\u00f5ib olla veebiteenus, mis t\u00f6\u00f6tab v\u00e4ga h\u00e4sti, reageerimisaeg m\u00f5ne millisekundi jooksul, kuid see ei ole \u00fcldse mastaapne. Samuti v\u00f5ib olla halvasti t\u00f6\u00f6tav veebirakendus, mis vajab vastamiseks mitmeid sekundeid, kuid see mastaapub k\u00fcmneteks, et jagada k\u00fcmneid tuhandeid samal ajal kasutajaid. Siiski on k\u00f5rge j\u00f5udluse ja mastaapsuse kombinatsioon v\u00e4ga v\u00f5imas. K\u00f5rge j\u00f5udlusega rakendused kasutavad \u00fcldiselt ressursse s\u00e4\u00e4stlikult ja seega suudavad t\u00f5husalt teenindada rohkem samal ajal olevaid kasutajaid serveris, v\u00e4hendades kulusid.<\/p>\n<h1>CPU ja I\/O \u00fclesanded<\/h1>\n<p>\nL\u00f5puks on arvutustes alati kaks v\u00f5imalikku \u00fclesannete t\u00fc\u00fcpi: I\/O ja CPU. Interneti kaudu p\u00e4ringute saamine (v\u00f5rgu sisend-v\u00e4ljund), failide haldamine (v\u00f5rgu ja ketta sisend-v\u00e4ljund), andmebaasiga suhtlemine (v\u00f5rgu ja ketta sisend-v\u00e4ljund) \u2014 k\u00f5ik need on I\/O toimingud. M\u00f5ned andmebaasi p\u00e4ringud v\u00f5ivad veidi koormata CPU-d (sorteerimine, miljoni tulemuse keskmise arvutamine jne). Enamik veebirakendusi on piiratud maksimaalse v\u00f5imaliku I\/O-ga, protsessorit kasutatakse harva t\u00e4ielikult. Kui n\u00e4ete, et mingisuguses sisend-v\u00e4ljundi \u00fclesandes kasutatakse palju CPU-d, on see t\u00f5en\u00e4oliselt halva rakenduse arhitektuuri m\u00e4rk. See v\u00f5ib t\u00e4hendada, et CPU ressursse kasutatakse protsesside haldamiseks ja konteksti vahetamiseks \u2014 ja see ei ole kuigi kasulik. Kui teete midagi, nagu piltide t\u00f6\u00f6tlemine, helifailide konverteerimine v\u00f5i masin\u00f5pe, siis vajab rakendus v\u00f5imsaid CPU ressursse. Aga enamik rakendusi ei vaja seda.<\/p>\n<h1>Rohkem teavet serveri arhitektuuride kohta<\/h1>\n<p><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-i-iterative-servers\/\">Osa I. Iteratiivne arhitektuur<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-ii-forking-servers\/\">Osa II. Fork-serverid<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-iii-preforked-servers\/\">Osa III. Pre-fork serverid<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-iv-threaded-servers\/\">Neljandik osa. T\u00e4idete serverid<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-v-pre-threaded-servers\/\">Viiendik osa. Eelt\u00e4idete serverid<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-vi-polling-servers\/\">Kuues osa. Poll-p\u00f5hine arhitektuur<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-vii-epoll-servers\/\">Seitsmes osa. Epoll-p\u00f5hine arhitektuur<\/a><\/noindex><\/li>\n<\/ol>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/455212\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u044b\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e, \u0430 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043b\u044c\u0432\u0438\u043d\u0443\u044e \u0434\u043e\u043b\u044e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 HTTP. \u0418\u0437\u0443\u0447\u0430\u044f \u043d\u044e\u0430\u043d\u0441\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0443\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0433\u0434\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f. \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (Dev) \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 (Ops) \u043b\u0438\u0448\u044c \u0443\u0445\u0443\u0434\u0448\u0430\u043b\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u041d\u043e \u0441 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b DevOps \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043d\u0435\u0441\u0442\u0438 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35106","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u044b\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e, \u0430 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043b\u044c\u0432\u0438\u043d\u0443\u044e \u0434\u043e\u043b\u044e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 HTTP. \u0418\u0437\u0443\u0447\u0430\u044f \u043d\u044e\u0430\u043d\u0441\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0443\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0433\u0434\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f. \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (Dev) \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 (Ops) \u043b\u0438\u0448\u044c \u0443\u0445\u0443\u0434\u0448\u0430\u043b\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u041d\u043e \u0441 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b DevOps \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043d\u0435\u0441\u0442\u0438 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/proizvoditelnost-setevyh-prilozhenij-linux-vvedenie\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Linux. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u044b\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e, \u0430 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043b\u044c\u0432\u0438\u043d\u0443\u044e \u0434\u043e\u043b\u044e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 HTTP. \u0418\u0437\u0443\u0447\u0430\u044f \u043d\u044e\u0430\u043d\u0441\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0443\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0433\u0434\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f. \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (Dev) \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 (Ops) \u043b\u0438\u0448\u044c \u0443\u0445\u0443\u0434\u0448\u0430\u043b\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u041d\u043e \u0441 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b DevOps \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043d\u0435\u0441\u0442\u0438 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/proizvoditelnost-setevyh-prilozhenij-linux-vvedenie\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:02:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:02:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Linuxi v\u00f5rgurakenduste j\u00f5udlus. Sissejuhatus | ProHoster","description":"Veebirakendusi kasutatakse n\u00fc\u00fcd igal pool ning HTTP moodustab suure osa k\u00f5igist transportprotokollidest. Veebirakenduste arendamise n\u00fcansse uurides p\u00f6\u00f6rab enamik v\u00e4ga v\u00e4he t\u00e4helepanu operatsioonis\u00fcsteemile, kus need rakendused tegelikult t\u00f6\u00f6tavad. Arenduse (Dev) ja opereerimise (Ops) jagamine on olukorda vaid halvendanud. Kuid DevOpsi kultuuri levimisega hakkavad arendajad vastutama oma rakenduste k\u00e4ivitamise eest pilves, seet\u00f5ttu on...","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/proizvoditelnost-setevyh-prilozhenij-linux-vvedenie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Linux. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 | ProHoster","og:description":"\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u044b\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e, \u0430 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043b\u044c\u0432\u0438\u043d\u0443\u044e \u0434\u043e\u043b\u044e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 HTTP. \u0418\u0437\u0443\u0447\u0430\u044f \u043d\u044e\u0430\u043d\u0441\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0443\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0433\u0434\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f. \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (Dev) \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 (Ops) \u043b\u0438\u0448\u044c \u0443\u0445\u0443\u0434\u0448\u0430\u043b\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u041d\u043e \u0441 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b DevOps \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043d\u0435\u0441\u0442\u0438 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/proizvoditelnost-setevyh-prilozhenij-linux-vvedenie","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:02:22+00:00","article:modified_time":"2019-10-31T19:02:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35106","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 21:51:33","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:09:55","updated":"2026-01-21 21:51:33","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/35106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=35106"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/35106\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=35106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=35106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=35106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}