ලිනක්ස් ජාල යෙදුම් කාර්ය සාධනය. හැදින්වීම

වෙබ් යෙදුම් දැන් සෑම තැනකම භාවිතා වන අතර සියලුම ප්‍රවාහන ප්‍රොටෝකෝල අතර HTTP සිංහයාගේ කොටස හිමි වේ. වෙබ් යෙදුම් සංවර්ධනයේ සූක්ෂ්ම කරුණු අධ්‍යයනය කරන විට, බොහෝ අය මෙම යෙදුම් සැබවින්ම ක්‍රියාත්මක වන මෙහෙයුම් පද්ධතිය කෙරෙහි ඉතා අඩු අවධානයක් යොමු කරයි. සංවර්ධනය (Dev) සහ මෙහෙයුම් (Ops) වෙන් කිරීම තත්වය වඩාත් නරක අතට හැරුණි. නමුත් DevOps සංස්කෘතියේ නැඟීමත් සමඟ, සංවර්ධකයින් ඔවුන්ගේ යෙදුම් ක්ලවුඩ් තුළ ක්‍රියාත්මක කිරීම සඳහා වගකිව යුතු වේ, එබැවින් ඔවුන්ට මෙහෙයුම් පද්ධතියේ පසුතලය පිළිබඳව හොඳින් හුරුපුරුදු වීම ඉතා ප්‍රයෝජනවත් වේ. ඔබ එකවර සම්බන්ධතා දහස් ගණනක් හෝ දස දහස් ගණනක් සඳහා පද්ධතියක් යෙදවීමට උත්සාහ කරන්නේ නම් මෙය විශේෂයෙන් ප්රයෝජනවත් වේ.

වෙබ් සේවාවන්හි සීමාවන් අනෙකුත් යෙදුම්වල ඇති සීමාවන්ට බෙහෙවින් සමාන ය. එය load balancers හෝ database servers වේවා, මෙම යෙදුම් සියල්ලටම ඉහළ කාර්ය සාධන පරිසරයක් තුළ සමාන ගැටළු ඇත. මෙම මූලික සීමාවන් අවබෝධ කර ගැනීම සහ පොදුවේ ඒවා ජය ගන්නේ කෙසේද යන්න ඔබේ වෙබ් යෙදුම්වල කාර්ය සාධනය සහ පරිමාණය ඇගයීමට උපකාරී වේ.

මම මෙම ලිපි මාලාව ලියන්නේ හොඳින් දැනුවත් පද්ධති ගෘහ නිර්මාණ ශිල්පීන් වීමට කැමති තරුණ සංවර්ධකයින්ගේ ප්‍රශ්නවලට පිළිතුරු වශයෙනි. මෙහෙයුම් පද්ධති මට්ටමින් ක්‍රියා කරන ආකාරය පිළිබඳ මූලික කරුණු වෙත කිමිදීමකින් තොරව ලිනක්ස් යෙදුම් ප්‍රශස්තකරණ ශිල්පීය ක්‍රම පැහැදිලිව තේරුම් ගත නොහැක. යෙදුම් වර්ග බොහොමයක් ඇතත්, මෙම ලිපි මාලාවේදී මට අවශ්‍ය වන්නේ බ්‍රව්සරයක් හෝ පෙළ සංස්කාරකයක් වැනි ඩෙස්ක්ටොප් යෙදුම් වලට වඩා වෙබ් පාදක යෙදුම් ගවේෂණය කිරීමට ය. මෙම ද්‍රව්‍යය Linux හෝ Unix වැඩසටහන් ක්‍රියා කරන ආකාරය සහ ඉහළ කාර්ය සාධනයක් සඳහා ඒවා සකස් කරන්නේ කෙසේද යන්න තේරුම් ගැනීමට අවශ්‍ය සංවර්ධකයින් සහ ගෘහ නිර්මාණ ශිල්පීන් සඳහා අදහස් කෙරේ.

ලිනක්ස් වේ සේවාදායක කාමරය මෙහෙයුම් පද්ධතිය, සහ බොහෝ විට ඔබගේ යෙදුම් මෙම OS මත ධාවනය වේ. මම "ලිනක්ස්" කීවත්, බොහෝ විට ඔබට ආරක්ෂිතව උපකල්පනය කළ හැක්කේ මා අදහස් කරන්නේ සාමාන්‍යයෙන් යුනික්ස් වැනි සියලුම මෙහෙයුම් පද්ධති බවයි. කෙසේ වෙතත්, මම වෙනත් පද්ධතිවල මේ සමඟ ඇති කේතය පරීක්ෂා කර නැත. එබැවින්, ඔබ FreeBSD හෝ OpenBSD ගැන උනන්දුවක් දක්වන්නේ නම්, ඔබේ ප්රතිඵල වෙනස් විය හැක. මම ලිනක්ස් විශේෂිත දෙයක් උත්සාහ කරන විට, මම එය පෙන්වා දෙමි.

මුල සිටම යෙදුමක් තැනීමට ඔබට මෙම දැනුම භාවිතා කළ හැකි අතර එය පරිපූර්ණ ලෙස ප්‍රශස්ත වනු ඇත, එය නොකිරීමට හොඳම වේ. ඔබ ඔබේ ආයතනයේ ව්‍යාපාරික යෙදුම සඳහා C හෝ C++ හි නව වෙබ් සේවාදායකයක් ලියන්නේ නම්, මෙය ඔබගේ රැකියාවේ අවසන් දිනය විය හැක. කෙසේ වෙතත්, මෙම යෙදුම්වල ව්‍යුහය දැන ගැනීම දැනට පවතින වැඩසටහන් තෝරාගැනීමට උපකාරී වේ. ඔබට ක්‍රියාවලි පාදක පද්ධති නූල් මත පදනම් වූ පද්ධති මෙන්ම සිදුවීම් පදනම් වූ පද්ධති සමඟ සංසන්දනය කිරීමට හැකි වනු ඇත. Nginx Apache httpd ට වඩා හොඳින් ක්‍රියා කරන්නේ මන්දැයි ඔබ තේරුම් ගෙන අගය කරනු ඇත, Tornado පදනම් වූ Python යෙදුමකට Django පදනම් වූ Python යෙදුමකට සාපේක්ෂව වැඩි පරිශීලකයින්ට සේවය කළ හැක්කේ මන්දැයි යන්න.

ZeroHTTPd: ඉගෙනුම් මෙවලම

ZeroHTTPd මම ඉගැන්වීමේ මෙවලමක් ලෙස C වලින් මුල සිටම ලියූ වෙබ් සේවාදායකයකි. එයට Redis වෙත ප්‍රවේශය ඇතුළුව බාහිර පරායත්තතා නොමැත. අපි අපේම රෙඩිස් ක්‍රියා පටිපාටි ක්‍රියාත්මක කරමු. වැඩි විස්තර සඳහා පහත බලන්න.

අපට න්‍යාය දීර්ඝ වශයෙන් සාකච්ඡා කළ හැකි වුවද, කේතය ලිවීම, එය ක්‍රියාත්මක කිරීම සහ සියලු සේවාදායක ගෘහ නිර්මාණ ශිල්පය එකිනෙක සංසන්දනය කිරීම තරම් හොඳ දෙයක් නැත. මෙය වඩාත් පැහැදිලි ක්රමයකි. එබැවින්, අපි එක් එක් මාදිලිය භාවිතා කරමින් සරල ZeroHTTPd වෙබ් සේවාදායකයක් ලියන්නෙමු: ක්‍රියාවලි මත පදනම් වූ, නූල් මත පදනම් වූ සහ සිදුවීම් පදනම් කරගත්. අපි මෙම එක් එක් සේවාදායකයන් පරීක්ෂා කර ඒවා එකිනෙකට සාපේක්ෂව ක්‍රියා කරන ආකාරය බලමු. ZeroHTTPd තනි C ගොනුවක් තුළ ක්‍රියාත්මක වේ. සිදුවීම් පාදක සේවාදායකය ඇතුළත් වේ uthash, තනි ශීර්ෂ ගොනුවක එන විශිෂ්ට හැෂ් වගු ක්‍රියාත්මක කිරීමකි. වෙනත් අවස්ථාවල දී, ව්යාපෘතිය සංකීර්ණ නොවන පරිදි, යැපීම් නොමැත.

ඔබට තේරුම් ගැනීමට උපකාර වන බොහෝ අදහස් කේතයේ ඇත. කේත පේළි කිහිපයකින් සරල වෙබ් සේවාදායකයක් වීම, ZeroHTTPd වෙබ් සංවර්ධනය සඳහා අවම රාමුවක් ද වේ. එය සීමිත ක්‍රියාකාරීත්වයක් ඇත, නමුත් ස්ථිතික ගොනු සහ ඉතා සරල "ගතික" පිටු සේවය කිරීමට හැකියාව ඇත. ඉහළ ක්‍රියාකාරී ලිනක්ස් යෙදුම් නිර්මාණය කරන්නේ කෙසේදැයි ඉගෙන ගැනීමට ZeroHTTPd හොඳ බව මට පැවසිය යුතුය. විශාල වශයෙන්, බොහෝ වෙබ් සේවා ඉල්ලීම් සඳහා බලා සිටීම, ඒවා පරීක්ෂා කිරීම සහ ඒවා සැකසීම. ZeroHTTPd කරන්නේ මෙයයි. මෙය ඉගෙනීමට මෙවලමක් මිස නිෂ්පාදනය නොවේ. දෝෂ හැසිරවීමේදී එය විශිෂ්ට නොවන අතර හොඳම ආරක්ෂක භාවිතයන් ගැන පුරසාරම් දෙඩීමට අපහසුය (ඔව් ඔව්, මම භාවිතා කළා strcpy) හෝ C භාෂාවේ දක්ෂ උපක්‍රම.නමුත් එය එහි කාර්යය හොඳින් කරයි යැයි මම බලාපොරොත්තු වෙමි.

ලිනක්ස් ජාල යෙදුම් කාර්ය සාධනය. හැදින්වීම
ZeroHTTPd මුල් පිටුව. එය පින්තූර ඇතුළු විවිධ ගොනු වර්ග ප්රතිදානය කළ හැක

අමුත්තන්ගේ පොත් අයදුම්පත

නවීන වෙබ් යෙදුම් සාමාන්‍යයෙන් ස්ථිතික ගොනු වලට සීමා නොවේ. ඔවුන්ට විවිධ දත්ත සමුදායන්, හැඹිලි ආදිය සමඟ සංකීර්ණ අන්තර්ක්‍රියා ඇත. එබැවින් අපි අමුත්තන් ඔවුන්ගේ නම් යටතේ ඇතුළත් කිරීම් තබන "ආගන්තුක පොත" නමින් සරල වෙබ් යෙදුමක් සාදන්නෙමු. අමුත්තන්ගේ පොත කලින් තැබූ ඇතුළත් කිරීම් ගබඩා කරයි. පිටුවේ පතුලේ අමුත්තන් කවුන්ටරයක් ​​ද ඇත.

ලිනක්ස් ජාල යෙදුම් කාර්ය සාධනය. හැදින්වීම
වෙබ් යෙදුම "ආගන්තුක පොත" ZeroHTTPd

අමුත්තන්ගේ කවුන්ටරය සහ අමුත්තන්ගේ පොත් ඇතුළත් කිරීම් Redis හි ගබඩා කර ඇත. Redis සමඟ සන්නිවේදනය සඳහා, තමන්ගේම ක්රියා පටිපාටි ක්රියාත්මක කරනු ලැබේ; ඒවා බාහිර පුස්තකාලය මත රඳා නොපවතී. මම ප්‍රසිද්ධියේ ලබා ගත හැකි සහ හොඳින් පරීක්‍ෂා කරන ලද විසඳුම් ඇති විට homebrew කේතය එළිදැක්වීමේ විශාල රසිකයෙක් නොවේ. නමුත් ZeroHTTPd හි අරමුණ වන්නේ Linux කාර්ය සාධනය සහ බාහිර සේවා වෙත ප්‍රවේශය අධ්‍යයනය කිරීම වන අතර HTTP ඉල්ලීම් සඳහා බරපතල කාර්ය සාධන බලපෑමක් ඇති කරයි. අපගේ එක් එක් සේවාදායක ගෘහ නිර්මාණ ශිල්පය තුළ අපි Redis සමඟ සන්නිවේදනය සම්පූර්ණයෙන්ම පාලනය කළ යුතුය. සමහර ගෘහ නිර්මාණ ශිල්පයන්හි අපි අවහිර කරන ඇමතුම් භාවිතා කරන අතර අනෙක් ඒවා අපි සිදුවීම් මත පදනම් වූ ක්‍රියා පටිපාටි භාවිතා කරමු. බාහිර Redis සේවාදායක පුස්තකාලයක් භාවිතා කිරීමෙන් මෙම පාලනය ලබා නොදේ. මීට අමතරව, අපගේ කුඩා Redis සේවාලාභියා ඉටු කරන්නේ කාර්යයන් කිහිපයක් පමණි (යතුරක් ලබා ගැනීම, සැකසීම සහ වැඩි කිරීම; අරාවක් ලබා ගැනීම සහ එකතු කිරීම). මීට අමතරව, Redis ප්රොටෝකෝලය අතිශයින්ම අලංකාර සහ සරල ය. ඔබට එය විශේෂයෙන් ඉගැන්වීමට පවා අවශ්ය නැත. ප්‍රොටෝකෝලය සියළුම කාර්යයන් කේත පේළි සියයකින් පමණ සිදු කරන බව පෙන්නුම් කරන්නේ එය කෙතරම් හොඳින් සිතා බලා තිබේද යන්නයි.

සේවාදායකයා (බ්‍රවුසරය) ඉල්ලා සිටින විට යෙදුම කරන්නේ කුමක්ද යන්න පහත රූපයේ දැක්වේ /guestbookURL.

ලිනක්ස් ජාල යෙදුම් කාර්ය සාධනය. හැදින්වීම
ආගන්තුක පොත් යෙදුම ක්‍රියා කරන ආකාරය

ආගන්තුක පොත් පිටුවක් නිකුත් කිරීමට අවශ්‍ය වූ විට, සැකිල්ල මතකයට කියවීමට ගොනු පද්ධතියට එක් ඇමතුමක් සහ Redis වෙත ජාල ඇමතුම් තුනක් ඇත. ඉහත තිර පිටුවේ ඇති පිටුව සඳහා බොහෝ HTML අන්තර්ගතයන් අච්චු ගොනුවේ අඩංගු වේ. අන්තර්ගතයේ ගතික කොටස සඳහා විශේෂ ස්ථාන දරන්නන් ද ඇත: පළ කිරීම් සහ අමුත්තන්ගේ කවුන්ටරය. අපි ඒවා Redis වෙතින් ලබා ගනිමු, ඒවා පිටුවට ඇතුළු කර සේවාදායකයාට සම්පූර්ණයෙන් සෑදූ අන්තර්ගතය ලබා දෙන්නෙමු. Redis වෙත තුන්වන ඇමතුම වැළැක්විය හැක්කේ Redis වැඩි කළ විට නව යතුරු අගය ලබා දෙන බැවිනි. කෙසේ වෙතත්, අසමමුහුර්ත සිදුවීම් මත පදනම් වූ ගෘහ නිර්මාණ ශිල්පයක් ඇති අපගේ සේවාදායකය සඳහා, බොහෝ ජාල ඇමතුම් ඉගෙනුම් අරමුණු සඳහා හොඳ පරීක්ෂණයකි. එබැවින් අපි අමුත්තන්ගේ සංඛ්‍යාවේ Redis return අගය ඉවත දමා එය වෙනම ඇමතුමකින් විමසන්නෙමු.

Server architectures ZeroHTTPd

අපි ZeroHTTPd හි අනුවාද හතක් එකම ක්‍රියාකාරීත්වයක් සහිත නමුත් වෙනස් ගෘහ නිර්මාණ ශිල්පයක් සමඟ ගොඩනඟමු:

  • පුනරාවර්තන
  • ෆෝක් සේවාදායකය (ඉල්ලීමකට එක් ළමා ක්‍රියාවලියක්)
  • පෙර-ෆෝක් සේවාදායකය (ක්‍රියාවලි පෙර-ෆෝක් කිරීම)
  • ක්‍රියාත්මක නූල් සහිත සේවාදායකය (ඉල්ලීමකට එක් නූල් එකක්)
  • පෙර-නූල් නිර්මාණය සමඟ සේවාදායකය
  • ගෘහ නිර්මාණ ශිල්පය පදනම් කරගත් poll()
  • ගෘහ නිර්මාණ ශිල්පය පදනම් කරගත් epoll

HTTP ඉල්ලීම් සමඟ සේවාදායකය පූරණය කිරීමෙන් අපි එක් එක් ගෘහ නිර්මාණ ශිල්පයේ කාර්ය සාධනය මනිමු. නමුත් ඉතා සමාන්තර ගෘහ නිර්මාණ ශිල්පය සංසන්දනය කිරීමේදී විමසුම් ගණන වැඩි වේ. අපි තුන් වතාවක් පරීක්ෂා කර සාමාන්යය ගණනය කරමු.

පරීක්ෂණ ක්‍රමවේදය

ලිනක්ස් ජාල යෙදුම් කාර්ය සාධනය. හැදින්වීම
ZeroHTTPd පැටවුම් පරීක්ෂණ සැකසුම

පරීක්ෂණ ක්‍රියාත්මක කිරීමේදී සියලුම සංරචක එකම යන්ත්‍රයක ක්‍රියාත්මක නොවීම වැදගත් වේ. මෙම අවස්ථාවෙහිදී, සංරචක CPU සඳහා තරඟ කරන බැවින් මෙහෙයුම් පද්ධතියට අමතර උපලේඛන පොදු කාර්ය භාරයක් සිදු වේ. තෝරාගත් එක් එක් සේවාදායක ගෘහ නිර්මාණ ශිල්පය සඳහා මෙහෙයුම් පද්ධතියේ පොදු කාර්ය මැනීම මෙම අභ්‍යාසයේ වැදගත්ම ඉලක්කයකි. තවත් විචල්‍යයන් එකතු කිරීම ක්‍රියාවලියට අහිතකර වනු ඇත. එමනිසා, ඉහත පින්තූරයේ ඇති සැකසුම වඩාත් හොඳින් ක්රියා කරයි.

මෙම එක් එක් සේවාදායකයන් කරන්නේ කුමක්ද?

  • load.unixism.net: මේක තමයි අපි දුවන්නේ ab, Apache Benchmark උපයෝගීතාව. එය අපගේ සේවාදායක ගෘහනිර්මාණ පරීක්ෂා කිරීමට අවශ්‍ය බර ජනනය කරයි.
  • nginx.unixism.net: සමහර විට අපට සේවාදායක වැඩසටහනක අවස්ථා එකකට වඩා ධාවනය කිරීමට අවශ්‍ය වේ. මෙය සිදු කිරීම සඳහා, සුදුසු සැකසුම් සහිත Nginx සේවාදායකයෙන් එන load balancer එකක් ලෙස ක්‍රියා කරයි ab අපගේ සේවාදායක ක්‍රියාවලීන් වෙත.
  • zerohttpd.unixism.net: මෙහිදී අපි අපගේ සේවාදායක වැඩසටහන් විවිධ ගෘහ නිර්මාණ ශිල්පයන් හතක් මත එකින් එක ක්‍රියාත්මක කරමු.
  • redis.unixism.net: මෙම සේවාදායකය Redis daemon ධාවනය කරයි, එහිදී අමුත්තන්ගේ පොත් ඇතුළත් කිරීම් සහ අමුත්තන්ගේ කවුන්ටර ගබඩා කර ඇත.

සියලුම සේවාදායකයන් එකම ප්‍රොසෙසර හරය මත ක්‍රියාත්මක වේ. අදහස වන්නේ එක් එක් ගෘහ නිර්මාණ ශිල්පයේ උපරිම කාර්ය සාධනය ඇගයීමයි. සියලුම සේවාදායක වැඩසටහන් එකම දෘඪාංගයක් මත පරීක්ෂා කර ඇති බැවින්, මෙය සැසඳීම සඳහා මූලික පදනමකි. මගේ පරීක්ෂණ සැකසුම ඩිජිටල් සාගරයෙන් කුලියට ගත් අතථ්‍ය සේවාදායකයන්ගෙන් සමන්විත වේ.

අපි මොනවද මනින්නේ?

ඔබට විවිධ දර්ශක මැනිය හැකිය. අපි ලබා දී ඇති වින්‍යාසය තුළ එක් එක් ගෘහ නිර්මාණ ශිල්පයේ ක්‍රියාකාරීත්වය ඇගයීමට ලක් කරන්නේ සමාන්තර මට්ටම්වල විවිධ මට්ටම්වල ඉල්ලීම් සහිත සේවාදායකයන් පූරණය කිරීමෙනි: භාරය සමගාමී පරිශීලකයින් 20 සිට 15 දක්වා වර්ධනය වේ.

පරීක්ෂණ ප්‍රති .ල

පහත ප්‍රස්ථාරයෙන් දැක්වෙන්නේ විවිධ සමාන්තර මට්ටම්වල විවිධ ගෘහනිර්මාණවල සේවාදායකයන්ගේ ක්‍රියාකාරීත්වයයි. y අක්ෂය යනු තත්පරයකට ඉල්ලීම් ගණන, x අක්ෂය සමාන්තර සම්බන්ධතා වේ.

ලිනක්ස් ජාල යෙදුම් කාර්ය සාධනය. හැදින්වීම

ලිනක්ස් ජාල යෙදුම් කාර්ය සාධනය. හැදින්වීම

ලිනක්ස් ජාල යෙදුම් කාර්ය සාධනය. හැදින්වීම

පහත දැක්වෙන්නේ ප්රතිඵල සහිත වගුවකි.

තත්පරයට ඉල්ලීම්

සමාන්තරකරණය
පුනරාවර්තන
දෙබලක
පෙර දෙබලක
ධාරාව
පූර්ව ප්‍රවාහය
ඡන්දය
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 කි
-
-
විශාල පැතිරීම
-
2200
-
2200

11 කි
-
-
-
-
2200
-
2122

12 කි
-
-
-
-
970
-
1958

13 කි
-
-
-
-
730
-
1897

14 කි
-
-
-
-
590
-
1466

15 කි
-
-
-
-
532
-
1281

ප්‍රස්ථාරයෙන් සහ වගුවෙන් පෙනෙන්නේ එකවර ඉල්ලීම් 8000කට වැඩි ප්‍රමාණයකට අපට ඉතිරිව ඇත්තේ ක්‍රීඩකයන් දෙදෙනකු පමණක් බවයි: පෙර-ෆෝක් සහ ඊපෝල්. භාරය වැඩි වන විට, ඡන්ද මත පදනම් වූ සේවාදායකයක් ප්‍රවාහයකට වඩා නරක ලෙස ක්‍රියා කරයි. නූල්-නිර්මාණයට පෙර ගෘහ නිර්මාණ ශිල්පය epoll සඳහා සුදුසු තරඟකරුවෙකු වන අතර, Linux කර්නලය නූල් විශාල සංඛ්‍යාවක් උපලේඛනගත කරන්නේ කෙසේද යන්න පිළිබඳ සාක්ෂියකි.

ZeroHTTPd මූලාශ්‍ර කේතය

ZeroHTTPd මූලාශ්‍ර කේතය මෙහි. එක් එක් ගෘහ නිර්මාණ ශිල්පය සඳහා වෙනම නාමාවලියක් ඇත.

ZeroHTTPd │ ├── 01_පුනරාවර්තන 02_ නූල් දැමීම │ ├── main.c ├── 03_පෙර ත්‍යාගය │ ├── main.c ├── 04_poll ├── දර්ශකය .html │ └── ටක්ස් png └── සැකිලි └── Guestbook └── index.html

සියලුම ගෘහ නිර්මාණ ශිල්පය සඳහා නාමාවලි හතකට අමතරව, ඉහළ මට්ටමේ නාමාවලියෙහි තවත් දෙකක් තිබේ: පොදු සහ සැකිලි. පළමුවැන්නෙහි index.html ගොනුව සහ පළමු තිර පිටපතේ රූපය අඩංගු වේ. ඔබට වෙනත් ගොනු සහ ෆෝල්ඩර එහි තැබිය හැකි අතර ZeroHTTPd එම ස්ථිතික ගොනු කිසිදු ගැටළුවක් නොමැතිව සේවය කළ යුතුය. බ්‍රවුසරයේ ඇති මාර්ගය පොදු ෆෝල්ඩරයේ ඇති මාර්ගයට ගැලපේ නම්, ZeroHTTPd මෙම නාමාවලියෙහි index.html ගොනුව සොයයි. අමුත්තන්ගේ පොත සඳහා අන්තර්ගතය ගතිකව ජනනය වේ. එහි මුල් පිටුවක් පමණක් ඇති අතර, එහි අන්තර්ගතය 'templates/guestbook/index.html' ගොනුව මත පදනම් වේ. ZeroHTTPd පහසුවෙන් දිගුව සඳහා ගතික පිටු එක් කරයි. අදහස නම් පරිශීලකයින්ට මෙම නාමාවලියට සැකිලි එකතු කර අවශ්‍ය පරිදි ZeroHTTPd දිගු කළ හැකි බවයි.

සර්වර් හතම තැනීමට, ධාවනය කරන්න make all ඉහළ මට්ටමේ නාමාවලියෙන් - සහ සියලුම ගොඩනැගීම් මෙම නාමාවලියෙහි දිස්වනු ඇත. ක්‍රියාත්මක කළ හැකි ගොනු ඒවා දියත් කරන ලද නාමාවලියෙහි ඇති පොදු සහ සැකිලි නාමාවලි සොයයි.

Linux API

මෙම ලිපි මාලාවේ තොරතුරු තේරුම් ගැනීමට ඔබ Linux API පිළිබඳ මනා දැනුමක් තිබීම අවශ්‍ය නොවේ. කෙසේ වෙතත්, මෙම මාතෘකාව පිළිබඳ වැඩිදුර කියවීමට මම නිර්දේශ කරමි; අන්තර්ජාලයේ බොහෝ විමර්ශන සම්පත් තිබේ. අපි Linux API වර්ග කිහිපයක් ස්පර්ශ කළද, අපගේ අවධානය මූලික වශයෙන් ක්‍රියාවලි, නූල්, සිදුවීම් සහ ජාල තොගය කෙරෙහි යොමු වනු ඇත. Linux API පිළිබඳ පොත් සහ ලිපි වලට අමතරව, භාවිතා කරන පද්ධති ඇමතුම් සහ පුස්තකාල කාර්යයන් සඳහා mana කියවීම ද මම නිර්දේශ කරමි.

කාර්ය සාධනය සහ පරිමාණය

කාර්ය සාධනය සහ පරිමාණය පිළිබඳ එක් සටහනක්. න්යායාත්මකව, ඔවුන් අතර සම්බන්ධයක් නොමැත. ඔබට ඉතා හොඳින් ක්‍රියා කරන වෙබ් සේවාවක් තිබිය හැක, ප්‍රතිචාර දැක්වීමේ කාලය මිලි තත්පර කිහිපයකි, නමුත් එය කිසිසේත් පරිමාණය නොවේ. ඒ හා සමානව, ප්‍රතිචාර දැක්වීමට තත්පර කිහිපයක් ගතවන දුර්වල ක්‍රියාකාරී වෙබ් යෙදුමක් තිබිය හැක, නමුත් සමගාමී පරිශීලකයින් දස දහස් ගණනක් හැසිරවීමට එය දසයකින් පරිමාණය කරයි. කෙසේ වෙතත්, ඉහළ කාර්ය සාධනය සහ පරිමාණයේ සංයෝජනය ඉතා බලවත් සංයෝජනයකි. ඉහළ කාර්ය සාධන යෙදුම් සාමාන්‍යයෙන් සම්පත් අරපිරිමැස්මෙන් භාවිතා කරන අතර එමඟින් කාර්යක්ෂමව සේවාදායකයේ සමගාමී පරිශීලකයින්ට පිරිවැය අඩු කරයි.

CPU සහ I/O කාර්යයන්

අවසාන වශයෙන්, පරිගණකකරණයේදී සෑම විටම හැකි ආකාරයේ කාර්යයන් දෙකක් තිබේ: I/O සහ CPU සඳහා. අන්තර්ජාලය හරහා ඉල්ලීම් ලැබීම (ජාල I/O), ගොනු සේවා කිරීම (ජාල සහ තැටි I/O), දත්ත සමුදාය සමඟ සන්නිවේදනය කිරීම (ජාල සහ තැටි I/O) සියල්ල I/O ක්‍රියාකාරකම් වේ. සමහර දත්ත සමුදා විමසුම් ටිකක් CPU තීව්‍ර විය හැකිය (වර්ග කිරීම, සාමාන්‍ය ප්‍රතිඵල මිලියනයක්, ආදිය). බොහෝ වෙබ් යෙදුම් හැකි උපරිම I/O වලින් සීමා කර ඇති අතර, ප්‍රොසෙසරය සම්පූර්ණ ධාරිතාවයෙන් භාවිතා වන්නේ කලාතුරකිනි. සමහර I/O කාර්යයක් බොහෝ CPU භාවිතා කරන බව ඔබ දකින විට, එය බොහෝ විට දුර්වල යෙදුම් ගෘහ නිර්මාණ ශිල්පයේ සලකුණකි. ක්‍රියාවලි කළමනාකරණය සහ සන්දර්භය මාරු කිරීමේදී CPU සම්පත් අපතේ යන බව මෙයින් අදහස් විය හැක - මෙය සම්පූර්ණයෙන්ම ප්‍රයෝජනවත් නොවේ. ඔබ රූප සැකසීම, ශ්‍රව්‍ය ගොනු පරිවර්තනය හෝ යන්ත්‍ර ඉගෙනීම වැනි දෙයක් කරන්නේ නම්, යෙදුමට බලවත් CPU සම්පත් අවශ්‍ය වේ. නමුත් බොහෝ යෙදුම් සඳහා මෙය එසේ නොවේ.

සේවාදායක ගෘහ නිර්මාණ ශිල්පය ගැන තව දැනගන්න

  1. I කොටස: පුනරාවර්තන ගෘහ නිර්මාණ ශිල්පය
  2. II කොටස. ෆෝක් සර්වර්
  3. III කොටස. පෙර-ෆෝක් සේවාදායකයන්
  4. IV කොටස. ක්රියාත්මක කිරීමේ නූල් සහිත සේවාදායකයන්
  5. V කොටස. පෙර නූල් සර්වර්
  6. VI කොටස. Pol-පාදක ගෘහ නිර්මාණ ශිල්පය
  7. VII කොටස. epoll මත පදනම් වූ ගෘහ නිර්මාණ ශිල්පය

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න