Mahinga tono whatunga Linux. Kupu Whakataki

Kei te whakamahia nga tono Tukutuku inaianei ki nga waahi katoa, a, i roto i nga tikanga kawe waka katoa, kei te noho a HTTP i te wahanga o te raiona. I te wa e ako ana i nga ahuatanga o te whakawhanaketanga tono paetukutuku, he iti noa te aro o te nuinga o nga tangata ki te punaha whakahaere e whakahaere ana enei tono. Ko te wehenga o te whanaketanga (Dev) me nga mahi (Ops) i kino noa iho te ahuatanga. Engari i te pikinga ake o te ahurea DevOps, kei te noho haepapa nga kaiwhakawhanake ki te whakahaere i a raatau tono i roto i te kapua, na reira he tino whai hua mo ratou kia tino mohio ki te tuara o te punaha whakahaere. He tino whai hua tenei mena kei te ngana koe ki te tuku punaha mo nga mano tini, tekau mano ranei o nga hononga tukutahi.

He rite tonu nga here i roto i nga ratonga tukutuku ki era atu tono. Ahakoa he taurite kawenga, he kaimau raraunga ranei, he rite nga raru o enei tono katoa i roto i te taiao mahi nui. Ma te mohio ki enei here taketake me pehea te wikitoria i te nuinga o te waa ka awhina koe ki te arotake i te mahinga me te whakawhanui o o tono paetukutuku.

Kei te tuhi au i tenei raupapa tuhinga hei whakautu i nga patai a nga kaiwhakawhanake rangatahi e hiahia ana kia noho hei tohunga hoahoa punaha mohio. Kaore e taea te maarama ki nga tikanga arotautanga tono Linux me te kore e ruku ki nga kaupapa o te mahi i te taumata o te punaha whakahaere. Ahakoa he maha nga momo tono, kei roto i tenei raupapa e hiahia ana ahau ki te tuhura i nga tono a-tukutuku, kaua ki nga tono papamahi penei i te kaitirotiro, te kaiwhakatika tuhinga ranei. Ko tenei rauemi mo nga kaiwhakawhanake me nga kaihoahoa e hiahia ana ki te mohio ki te mahi a nga kaupapa Linux, Unix ranei, me pehea hoki te hanga mo nga mahi teitei.

Ko Linux te ruma tūmau punaha whakahaere, me te nuinga o nga wa ka rere o tono i runga i tenei OS. Ahakoa e kii ana ahau "Linux", i te nuinga o te waa ka taea e koe te kii marie ko taku tikanga ko nga punaha whakahaere-rite katoa ki te Unix. Heoi ano, kaore au i whakamatau i te waehere e hono ana ki etahi atu punaha. Na, ki te hiahia koe ki te FreeBSD, OpenBSD ranei, ka rereke pea o hua. Ka whakamatau ahau i tetahi mea Linux-motuhake, ka tohu ahau.

Ahakoa ka taea e koe te whakamahi i tenei matauranga ki te hanga i tetahi taupānga mai i te timatanga ka tino arotauhia, he pai ake kia kaua e mahi. Mena ka tuhia e koe he tūmau tukutuku hou ki C, C++ ranei mo te tono pakihi a to whakahaere, koinei pea to ra whakamutunga mo te mahi. Heoi, ma te mohio ki te hanganga o enei tono ka awhina koe ki te whiriwhiri i nga kaupapa o naianei. Ka taea e koe te whakataurite i nga punaha-a-tukanga me nga punaha miro tae atu ki nga kaupapa-a-kaupapa. Ka mohio koe, ka maioha hoki he aha te pai ake o te mahi a Nginx i a Apache httpd, he aha te tono a Tornado i runga i te Python ka nui ake nga kaiwhakamahi ka whakatauritea ki te tono Python i hangaia e Django.

ZeroHTTPd: Utauta Ako

KoreHTTPd he tūmau tukutuku nāku i tuhi mai i te wahanga C hei taputapu whakaako. Kaore he herenga o waho, tae atu ki te uru atu ki a Redis. Ka whakahaerehia e matou a maatau ake tikanga Redis. Tirohia i raro mo etahi atu korero.

Ahakoa ka roa te roa o taatau korero mo te ariā, kaore he mea pai atu i te tuhi waehere, te whakahaere, me te whakataurite i nga hoahoanga tūmau katoa ki a raatau ano. Koinei te tikanga tino kitea. Na reira, ka tuhia e matou he tūmau tukutuku ZeroHTTPd ngawari ma te whakamahi i ia tauira: i runga i te tukanga, i te miro, me te kaupapa. Kia tirohia ia o enei tūmau ka kite i te ahua o te mahi ki a raatau. Ka whakatinanahia a ZeroHTTPd i roto i te konae C kotahi. Kei roto i te tūmau-a-kaupapa Uthash, he whakatinanatanga ripanga hash nui ka puta mai i roto i te konae pane kotahi. I etahi atu take, kaore he whakawhirinaki, kia kore ai e whakararu i te kaupapa.

He maha nga korero kei roto i te waehere hei awhina i a koe ki te mohio. I te mea he tūmau tukutuku ngawari i roto i etahi rarangi waehere, ko ZeroHTTPd he anga iti mo te whanaketanga paetukutuku. He iti noa te mahi, engari he kaha ki te mahi i nga konae pateko me nga wharangi "hihiri" tino ngawari. Me kii atu ahau he pai a ZeroHTTPd mo te ako me pehea te hanga tono Linux tino mahi. Ko te nuinga, ko te nuinga o nga ratonga tukutuku e tatari ana mo nga tono, tirohia me te tukatuka. Koinei tonu te mahi a ZeroHTTPd. He taputapu tenei mo te ako, ehara i te hanga. Ehara i te pai ki te whakahaere hapa me te kore pea e whakamanamana i nga mahi haumarutanga pai (aue, i whakamahia e au strcpy) ko nga tinihanga mohio ranei o te reo C. Engari ko taku tumanako ka pai tana mahi.

Mahinga tono whatunga Linux. Kupu Whakataki
ZeroHTTPd page home. Ka taea e ia te whakaputa momo momo konae tae atu ki nga whakaahua

Tono Pukapuka Manuhiri

Ko nga tono tukutuku hou e kore e whakawhäitihia ki nga konae pateko. He uaua o raatau taunekeneke me nga momo papaa raraunga, keteroki, aha atu. Na ka hanga he tono tukutuku ngawari e kiia nei ko "Buka Manuhiri" ka waiho e nga manuhiri nga urunga ki raro i o raatau ingoa. Kei te toa pukapuka manuhiri nga urunga i mahue i mua. He porotiti manuhiri kei raro o te wharangi.

Mahinga tono whatunga Linux. Kupu Whakataki
Tono Tukutuku "Buka Manuhiri" ZeroHTTPd

Kei Redis te kaute manuhiri me nga pukapuka manuhiri. Mo nga whakawhitiwhiti korero me Redis, ka whakatinanahia nga tikanga ake; kaore e whakawhirinaki ki te whare pukapuka o waho. Ehara ahau i te tino powhiriwhiri ki te huri i te waehere homebrew ina he watea ma te whanui nga otinga kua whakamatauria. Engari ko te kaupapa o ZeroHTTPd ko te ako i nga mahi Linux me te uru atu ki nga ratonga o waho, i te wa e pa ana te mahi ki nga tono HTTP. Me tino whakahaere tatou i nga whakawhitiwhitinga korero me Redis i roto i ia hoahoanga tūmau. I etahi hoahoa ka whakamahi matou i nga waea aukati, i etahi atu ka whakamahia e matou nga tikanga e pa ana ki nga huihuinga. Ma te whakamahi i te whare pukapuka kiritaki Redis o waho e kore e hoatu tenei mana. Hei taapiri, he iti noa nga mahi a ta maatau kaihoko Redis iti (te tiki, te whakarite, me te whakanui ake i te kii; te tiki me te taapiri atu ki te rarangi). I tua atu, he tino huatau me te ngawari te kawa Redis. Kaore koe e hiahia ki te whakaako motuhake. Ko te meka e mahia ana e te kawa nga mahi katoa i roto i te kotahi rau rarangi o te waehere e whakaatu ana i te pai o te whakaaro.

Ko te ahua e whai ake nei e whakaatu ana he aha te mahi a te tono ina tono te kiritaki (kaitirotiro). /guestbookURL.

Mahinga tono whatunga Linux. Kupu Whakataki
Me pehea te mahi a te tono pukapuka manuhiri

Ina tukuna he wharangi pukapuka manuhiri, kotahi te waea ki te punaha konae ki te panui i te tauira ki te mahara me nga waea whatunga e toru ki a Redis. Kei roto i te konae tauira te nuinga o nga ihirangi HTML mo te wharangi kei te whakaahua o runga ake nei. He waahi motuhake ano mo te waahanga hihiri o te ihirangi: nga pou me te kaute manuhiri. Ka whakawhiwhia e matou mai i a Redis, whakauruhia ki roto i te wharangi ka whakawhiwhia ki te kaihoko nga ihirangi kua oti te hanga. Ko te karanga tuatoru ki a Redis ka taea te karo na te mea ka whakahokia e Redis te uara matua hou ina piki ake. Heoi, mo ta maatau tūmau, he hoahoanga-a-hanganga-a-hanganga, he maha nga waea whatunga he whakamatautau pai mo nga kaupapa ako. Na ka makahia e matou te uara whakahoki a Redis o te maha o nga manuhiri ka patai ki te waea motuhake.

Nga hoahoanga tūmau ZeroHTTPd

Kei te hanga e matou nga putanga e whitu o ZeroHTTPd he rite te mahi engari he rereke nga hoahoanga:

  • He tukurua
  • Tūmau marau (kotahi te tukanga tamaiti mo ia tono)
  • Tūmau i mua i te marau (i mua i te marau o nga tukanga)
  • Tūmau whai miro mahi (kotahi miro mo ia tono)
  • Tūmau me te hanga miro-mua
  • Ko te hoahoanga poll()
  • Ko te hoahoanga epoll

Ka inehia e matou te mahinga o ia hoahoanga ma te utaina i te tūmau me nga tono HTTP. Engari ka whakatairitehia nga hoahoanga tino whakarara, ka piki te maha o nga patai. E toru nga wa ka whakamatautauhia ka tatauhia te toharite.

Tikanga whakamatautau

Mahinga tono whatunga Linux. Kupu Whakataki
ZeroHTTPd tatūnga whakamātautau kawenga

He mea nui ka whakahaere nga whakamatautau, kaore nga waahanga katoa e rere i runga i te miihini kotahi. I tenei keehi, ka tukuna e te OS etahi atu whakaritenga mo te wa e whakataetae ana nga waahanga mo te PTM. Ko te ine i te punaha whakahaere o runga ake o ia hoahoanga tūmau kua tohua ko tetahi o nga tino whainga o tenei mahi. Ko te taapiri i etahi atu taurangi ka kino ki te mahi. Na reira, ko te tautuhinga i te pikitia i runga ake ka tino pai.

He aha te mahi a ia o enei tūmau?

  • load.unixism.net: Koinei te waahi ka oma matou ab, whaipainga Tohu Paerewa Apache. Ka mahia e ia te kawenga e hiahiatia ana hei whakamatautau i o maatau hoahoanga tūmau.
  • nginx.unixism.net: I etahi wa ka hiahia matou ki te whakahaere neke atu i te kotahi tauira o te kaupapa tūmau. Ki te mahi i tenei, ka mahi te tūmau Nginx me nga tautuhinga e tika ana hei taurite kawenga e puta mai ana ab ki a tatou tukanga tūmau.
  • zerohttpd.unixism.net: I konei ka whakahaerehia e matou a matou kaupapa tūmau i runga i nga hoahoanga rereke e whitu, kotahi i te wa.
  • redis.unixism.net: Ka whakahaerehia e tenei tūmau te Redis daemon, kei reira nga pukapuka manuhiri me nga porotiti manuhiri e rongoa ai.

Ka rere nga tūmau katoa i runga i te kaupapa pūtukatuka kotahi. Ko te whakaaro ko te arotake i te tino mahi o ia hoahoanga. I te mea ka whakamatauria nga papatono tūmau katoa i runga i te taputapu kotahi, he rarangi turanga tenei mo te whakataurite. Ko taku tatūnga whakamātautau he tūmau mariko i riihitia mai i Digital Ocean.

He aha ta tatou e ine ana?

Ka taea e koe te ine i nga tohu rereke. Ka arotakehia e matou nga mahi o ia hoahoanga i roto i tetahi whirihoranga ma te uta i nga kaitoro me nga tono ki nga taumata whakarara rereke: ka piki te kawenga mai i te 20 ki te 15 nga kaiwhakamahi kotahi.

Nga hua whakamatautau

Ko te tūtohi e whai ake nei e whakaatu ana i te mahinga o nga kaitoro i runga i nga hoahoanga rereke i nga taumata whakarara rereke. Ko te tuaka-y te maha o nga tono mo ia hekona, ko te tuaka-x he hononga whakarara.

Mahinga tono whatunga Linux. Kupu Whakataki

Mahinga tono whatunga Linux. Kupu Whakataki

Mahinga tono whatunga Linux. Kupu Whakataki

Kei raro nei he ripanga me nga hua.

tono mo ia hekona

whakaahuru
tukurua
marau
mua-marau
roma
i mua i te roma
porowhita
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
horapa nui
2138

5000
-
horapa nui
1600
1100
2519
-
2235

8000
-
-
1200
horapa nui
2451
-
2100

10
-
-
horapa nui
-
2200
-
2200

11
-
-
-
-
2200
-
2122

12
-
-
-
-
970
-
1958

13
-
-
-
-
730
-
1897

14
-
-
-
-
590
-
1466

15
-
-
-
-
532
-
1281

Mai i te kauwhata me te ripanga ka kitea kei runga ake i te 8000 nga tono tukutahi, e rua noa nga kaitakaro e toe ana: mua-marau me te epoll. I te piki haere o te uta, he kino ake te mahi a te kaitoro i runga i te pooti i to tarere. Ko te hoahoanga miro i mua i te hangahanga he kaiwhakataetae pai ki te whiriwhiri, he tohu mo te pai o te whakatakotoranga a te kernel Linux i te maha o nga miro.

Waehere Pūtake ZeroHTTPd

Waehere Pūtake ZeroHTTPd konei. He whaiaronga motuhake mo ia hoahoanga.

ZeroHTTPd │ ├── 01_iterative │ ├── matua.c ├── 02_forking │ ├── main.c ├── 03_preforking ─ ─ ─ ─ ─ ─ . miro │ ├── matua.c ├── 04_prethreading │ ├── main.c ├── 05_poll │ ├── main.c ├── 06_epoll │ └── Main.c ─ ├ kōnae matua ├── taupū .html │ └── tux png └── tauira └── pukapuka manuhiri └── index.html

I tua atu i nga raarangi e whitu mo nga hoahoanga katoa, e rua ano kei roto i te raarangi o runga: te iwi whanui me nga tauira. Kei te tuatahi te konae index.html me te ahua mai i te whakaahua tuatahi. Ka taea e koe te whakatakoto i etahi atu konae me nga kōpaki ki reira, a me mahi a ZeroHTTPd i aua konae pateko kaore he raru. Mena ka rite te ara i roto i te kaitirotiro ki te ara i roto i te kōpaki whanui, ka rapu a ZeroHTTPd i te konae index.html kei roto i tenei raarangi. Ko nga ihirangi mo te pukapuka manuhiri he mea hanga hihiri. He wharangi kainga noa tana, a ko ona ihirangi kei runga i te konae 'templates/guestbook/index.html'. He ngawari te taapiri a ZeroHTTPd i nga wharangi hihiri mo te toronga. Ko te whakaaro ka taea e nga kaiwhakamahi te taapiri i nga tauira ki tenei raarangi me te whakawhānui ake i te ZeroHTTPd ina hiahiatia.

Hei hanga i nga tūmau e whitu, rere make all mai i te whaiaronga taumata-runga - ka puta nga hanga katoa ki tenei raarangi. Ko nga konae whakahaere e rapu ana i nga raarangi mo te marea me nga tauira i roto i te raarangi i whakarewahia ai.

API Linux

Kaore koe e hiahia kia tino mohio koe ki te API Linux kia mohio ai koe ki nga korero o tenei raupapa tuhinga. Heoi, ka tūtohu ahau ki te panui ake mo tenei kaupapa; he maha nga rauemi tohutoro kei runga i te Ipurangi. Ahakoa ka pa atu matou ki nga waahanga maha o nga API Linux, ko ta matou arotahi ka aro nui ki nga tukanga, nga miro, nga huihuinga, me te puranga whatunga. I tua atu i nga pukapuka me nga tuhinga mo te API Linux, ka tūtohu ano ahau ki te panui mana mo nga waea punaha me nga mahi whare pukapuka e whakamahia ana.

Mahinga me te Whakanuia

Kotahi te korero mo te mahi me te tauineine. Ko te tikanga, kaore he hononga i waenganui i a raatau. Ka taea e koe he ratonga tukutuku e mahi pai ana, me te wa whakautu mo etahi manomano hēkona, engari karekau e tauine. Waihoki, tera pea he tono tukutuku he iti te mahi, he iti noa nga hēkona hei whakautu, engari ka whakatauhia ma te tekau ki te hapai i nga mano tini o nga kaiwhakamahi kotahi. Engari, ko te huinga o te mahi nui me te tauine he huinga tino kaha. I te nuinga o te waa he iti noa te whakamahi rauemi a nga tono mahi teitei, na reira ka pai ake te mahi ki nga kaiwhakamahi i runga i te tūmau, ka whakaiti i nga utu.

Nga mahi PTM me I/O

Ka mutu, i roto i te mahi rorohiko e rua tonu nga momo mahi: mo I/O me te PTM. Ko te whiwhi tono mai i te Ipurangi (whatunga I/O), te tuku i nga konae (whatunga me te kōpae I/O), te whakawhiti korero me te papaa raraunga (whatunga me te kōpae I/O) he mahi I/O katoa. Ko etahi o nga paatai ​​​​papaunga raraunga ka tino kaha ki te PTM (te whakariterite, te toharite miriona hua, me etahi atu). Ko te nuinga o nga tono tukutuku e whakawhäitihia ana e te I/O morahi e taea ana, a he uaua te whakamahi i te tukatuka i te kaha katoa. Ina kite koe kei te whakamahi etahi mahi I/O i te maha o te PTM, tera pea he tohu mo te hoahoanga tono ngoikore. Ko te tikanga tenei ka moumou rawa nga rauemi CPU i runga i te whakahaere tukanga me te whakawhiti horopaki - a kaore tenei i te tino whai hua. Mena kei te mahi koe i tetahi mea penei i te tukatuka whakaahua, te hurihanga ororongo, te ako miihini ranei, katahi ka hiahia te tono ki nga rauemi CPU kaha. Engari mo te nuinga o nga tono kaore tenei i te keehi.

Ako atu mo nga hoahoanga tūmau

  1. Wāhanga I: Hangahanga Tuturu
  2. Wahi II. Tūmau marau
  3. Wahi III. Tuhinga o mua marau
  4. Wahi IV. Tūmau whai miro mahi
  5. Wāhanga V. Tuhinga o mua miro
  6. Wahi VI. Ko te hoahoanga-pol
  7. Wahi VII. hoahoanga epoll-based

Source: will.com

Tāpiri i te kōrero