இணைய பயன்பாடுகள் இப்போது எல்லா இடங்களிலும் பயன்படுத்தப்படுகின்றன, மேலும் அனைத்து போக்குவரத்து நெறிமுறைகளிலும், HTTP சிங்கத்தின் பங்கை ஆக்கிரமித்துள்ளது. இணைய பயன்பாட்டு மேம்பாட்டின் நுணுக்கங்களைப் படிக்கும் போது, பெரும்பாலான மக்கள் இந்த பயன்பாடுகள் உண்மையில் இயங்கும் இயக்க முறைமைக்கு மிகக் குறைந்த கவனம் செலுத்துகிறார்கள். மேம்பாடு (தேவ்) மற்றும் செயல்பாடுகள் (ஓப்ஸ்) பிரிப்பது நிலைமையை மேலும் மோசமாக்கியது. ஆனால் DevOps கலாச்சாரத்தின் எழுச்சியுடன், டெவலப்பர்கள் தங்கள் பயன்பாடுகளை மேகக்கணியில் இயக்குவதற்கு பொறுப்பாகி வருகின்றனர், எனவே அவர்கள் இயக்க முறைமையின் பின்தளத்தை நன்கு அறிந்திருப்பது மிகவும் பயனுள்ளதாக இருக்கும். நீங்கள் ஆயிரக்கணக்கான அல்லது பல்லாயிரக்கணக்கான ஒரே நேரத்தில் இணைப்புகளுக்கு ஒரு அமைப்பை வரிசைப்படுத்த முயற்சிக்கிறீர்கள் என்றால் இது மிகவும் பயனுள்ளதாக இருக்கும்.
இணைய சேவைகளில் உள்ள வரம்புகள் மற்ற பயன்பாடுகளில் உள்ளதைப் போலவே இருக்கும். சுமை பேலன்சர்கள் அல்லது தரவுத்தள சேவையகங்கள் எதுவாக இருந்தாலும், இந்த பயன்பாடுகள் அனைத்தும் உயர் செயல்திறன் சூழலில் ஒரே மாதிரியான சிக்கல்களைக் கொண்டுள்ளன. இந்த அடிப்படை வரம்புகளைப் புரிந்துகொள்வது மற்றும் பொதுவாக அவற்றை எவ்வாறு சமாளிப்பது என்பது உங்கள் இணையப் பயன்பாடுகளின் செயல்திறன் மற்றும் அளவிடுதல் ஆகியவற்றை மதிப்பீடு செய்ய உதவும்.
நன்கு அறியப்பட்ட சிஸ்டம்ஸ் ஆர்க்கிடெக்ட் ஆக விரும்பும் இளம் டெவலப்பர்களின் கேள்விகளுக்கு பதிலளிக்கும் வகையில் இந்த தொடர் கட்டுரைகளை எழுதுகிறேன். இயக்க முறைமை மட்டத்தில் அவை எவ்வாறு செயல்படுகின்றன என்பதற்கான அடிப்படைகளில் மூழ்காமல், லினக்ஸ் பயன்பாட்டு மேம்படுத்தல் நுட்பங்களைத் தெளிவாகப் புரிந்து கொள்ள முடியாது. பல வகையான பயன்பாடுகள் இருந்தாலும், இந்த தொடரில் நான் உலாவி அல்லது உரை திருத்தி போன்ற டெஸ்க்டாப் பயன்பாடுகளை விட இணைய அடிப்படையிலான பயன்பாடுகளை ஆராய விரும்புகிறேன். லினக்ஸ் அல்லது யூனிக்ஸ் நிரல்கள் எவ்வாறு செயல்படுகின்றன மற்றும் உயர் செயல்திறனுக்காக அவற்றை எவ்வாறு கட்டமைப்பது என்பதைப் புரிந்துகொள்ள விரும்பும் டெவலப்பர்கள் மற்றும் கட்டிடக் கலைஞர்களுக்காக இந்த பொருள் வடிவமைக்கப்பட்டுள்ளது.
லினக்ஸ் ஆகும் சர்வர் அறை இயக்க முறைமை, மற்றும் பெரும்பாலும் உங்கள் பயன்பாடுகள் இந்த OS இல் இயங்குகின்றன. நான் "லினக்ஸ்" என்று சொன்னாலும், பொதுவாக யூனிக்ஸ் போன்ற அனைத்து இயங்குதளங்களையும் நான் சொல்கிறேன் என்று நீங்கள் பாதுகாப்பாகக் கொள்ளலாம். இருப்பினும், அதனுடன் உள்ள குறியீட்டை மற்ற கணினிகளில் நான் சோதிக்கவில்லை. எனவே, நீங்கள் FreeBSD அல்லது OpenBSD இல் ஆர்வமாக இருந்தால், உங்கள் முடிவுகள் மாறுபடலாம். நான் லினக்ஸ் சார்ந்த ஒன்றை முயற்சிக்கும்போது, அதைச் சுட்டிக்காட்டுகிறேன்.
புதிதாக ஒரு பயன்பாட்டை உருவாக்க இந்த அறிவை நீங்கள் பயன்படுத்தலாம் மற்றும் அது மிகச்சரியாக மேம்படுத்தப்படும், அதைச் செய்யாமல் இருப்பது நல்லது. உங்கள் நிறுவனத்தின் வணிக பயன்பாட்டிற்காக C அல்லது C++ இல் ஒரு புதிய இணைய சேவையகத்தை எழுதினால், இதுவே உங்களின் கடைசி நாளாக இருக்கலாம். இருப்பினும், இந்த பயன்பாடுகளின் கட்டமைப்பை அறிந்துகொள்வது ஏற்கனவே உள்ள நிரல்களைத் தேர்ந்தெடுக்க உதவும். நீங்கள் செயல்முறை அடிப்படையிலான அமைப்புகளை நூல் அடிப்படையிலான அமைப்புகள் மற்றும் நிகழ்வு அடிப்படையிலான அமைப்புகளுடன் ஒப்பிட முடியும். Nginx ஏன் Apache httpd ஐ விட சிறப்பாக செயல்படுகிறது என்பதை நீங்கள் புரிந்துகொண்டு பாராட்டுவீர்கள், ஏன் ஒரு டொர்னாடோ அடிப்படையிலான Python பயன்பாடு Django அடிப்படையிலான Python பயன்பாட்டுடன் ஒப்பிடும்போது அதிக பயனர்களுக்கு சேவை செய்ய முடியும்.
ZeroHTTPd: கற்றல் கருவி
ZeroHTTPd நான் ஒரு கற்பித்தல் கருவியாக C இல் புதிதாக எழுதிய ஒரு வலை சேவையகம். இதற்கு ரெடிஸ் அணுகல் உட்பட வெளிப்புற சார்புகள் இல்லை. நாங்கள் எங்கள் சொந்த ரெடிஸ் நடைமுறைகளை இயக்குகிறோம். மேலும் விவரங்களுக்கு கீழே பார்க்கவும்.
கோட்பாட்டை நாம் விரிவாக விவாதிக்க முடியும் என்றாலும், குறியீட்டை எழுதுவது, அதை இயக்குவது மற்றும் அனைத்து சர்வர் கட்டமைப்புகளையும் ஒன்றோடொன்று ஒப்பிடுவதை விட சிறந்தது எதுவுமில்லை. இது மிகவும் வெளிப்படையான முறையாகும். எனவே, ஒவ்வொரு மாதிரியையும் பயன்படுத்தி எளிய ZeroHTTPd வலை சேவையகத்தை எழுதுவோம்: செயல்முறை அடிப்படையிலான, நூல் அடிப்படையிலான மற்றும் நிகழ்வு அடிப்படையிலான. இந்த சேவையகங்கள் ஒவ்வொன்றையும் சரிபார்த்து, அவை எவ்வாறு செயல்படுகின்றன என்பதைப் பார்ப்போம். ZeroHTTPd ஒரு சி கோப்பில் செயல்படுத்தப்படுகிறது. நிகழ்வு அடிப்படையிலான சர்வரில் அடங்கும் உதாஷ், ஒற்றை தலைப்பு கோப்பில் வரும் ஒரு சிறந்த ஹாஷ் அட்டவணை செயல்படுத்தல். மற்ற சந்தர்ப்பங்களில், திட்டத்தை சிக்கலாக்காதபடி, சார்புகள் இல்லை.
நீங்கள் புரிந்து கொள்ள உதவும் குறியீட்டில் நிறைய கருத்துகள் உள்ளன. குறியீட்டின் சில வரிகளில் எளிமையான வலை சேவையகமாக இருப்பதால், ZeroHTTPd என்பது இணைய வளர்ச்சிக்கான ஒரு குறைந்தபட்ச கட்டமைப்பாகும். இது வரையறுக்கப்பட்ட செயல்பாட்டைக் கொண்டுள்ளது, ஆனால் நிலையான கோப்புகள் மற்றும் மிகவும் எளிமையான "டைனமிக்" பக்கங்களை வழங்கும் திறன் கொண்டது. உயர் செயல்திறன் கொண்ட லினக்ஸ் பயன்பாடுகளை எவ்வாறு உருவாக்குவது என்பதைக் கற்றுக்கொள்வதற்கு ZeroHTTPd நல்லது என்று நான் சொல்ல வேண்டும். பொதுவாக, பெரும்பாலான இணைய சேவைகள் கோரிக்கைகளுக்காகக் காத்திருக்கின்றன, அவற்றைச் சரிபார்த்து அவற்றைச் செயல்படுத்துகின்றன. இதைத்தான் ZeroHTTPd செய்யும். இது கற்றலுக்கான கருவி, உற்பத்தி அல்ல. இது பிழை கையாள்வதில் சிறப்பாக இல்லை மற்றும் சிறந்த பாதுகாப்பு நடைமுறைகளை பெருமைப்படுத்த வாய்ப்பில்லை (ஓ ஆமாம், நான் பயன்படுத்தினேன் strcpy) அல்லது சி மொழியின் புத்திசாலித்தனமான தந்திரங்கள்.ஆனால் அது தன் வேலையை நன்றாக செய்யும் என்று நம்புகிறேன்.
ZeroHTTPd முகப்புப் பக்கம். இது படங்கள் உட்பட பல்வேறு கோப்பு வகைகளை வெளியிடலாம்
விருந்தினர் புத்தக விண்ணப்பம்
நவீன வலை பயன்பாடுகள் பொதுவாக நிலையான கோப்புகளுக்கு மட்டுப்படுத்தப்படவில்லை. அவை பல்வேறு தரவுத்தளங்கள், தற்காலிக சேமிப்புகள் போன்றவற்றுடன் சிக்கலான தொடர்புகளைக் கொண்டுள்ளன. எனவே பார்வையாளர்கள் தங்கள் பெயர்களின் கீழ் உள்ளீடுகளை விட்டுச்செல்லும் "விருந்தினர் புத்தகம்" என்ற எளிய வலைப் பயன்பாட்டை உருவாக்குவோம். விருந்தினர் புத்தகம் முன்பு விடப்பட்ட உள்ளீடுகளை சேமிக்கிறது. பக்கத்தின் கீழே ஒரு பார்வையாளர் கவுண்டரும் உள்ளது.
இணைய பயன்பாடு "விருந்தினர் புத்தகம்" ZeroHTTPd
பார்வையாளர் கவுண்டர் மற்றும் விருந்தினர் புத்தக உள்ளீடுகள் Redis இல் சேமிக்கப்பட்டுள்ளன. Redis உடனான தகவல்தொடர்புகளுக்கு, சொந்த நடைமுறைகள் செயல்படுத்தப்படுகின்றன; அவை வெளிப்புற நூலகத்தை சார்ந்து இல்லை. பொதுவில் கிடைக்கும் மற்றும் நன்கு சோதிக்கப்பட்ட தீர்வுகள் இருக்கும்போது ஹோம்ப்ரூ குறியீட்டை வெளியிடுவதில் நான் பெரிய ரசிகன் இல்லை. ஆனால் ZeroHTTPd இன் நோக்கம் Linux செயல்திறன் மற்றும் வெளிப்புற சேவைகளுக்கான அணுகலைப் படிப்பதாகும், அதே நேரத்தில் HTTP கோரிக்கைகளை வழங்குவது தீவிர செயல்திறன் தாக்கத்தை ஏற்படுத்துகிறது. எங்கள் ஒவ்வொரு சர்வர் கட்டமைப்பிலும் Redis உடனான தகவல்தொடர்புகளை நாம் முழுமையாகக் கட்டுப்படுத்த வேண்டும். சில கட்டமைப்புகளில், அழைப்புகளைத் தடுப்பதைப் பயன்படுத்துகிறோம், மற்றவற்றில் நிகழ்வு அடிப்படையிலான நடைமுறைகளைப் பயன்படுத்துகிறோம். வெளிப்புற Redis கிளையன்ட் லைப்ரரியைப் பயன்படுத்துவது இந்தக் கட்டுப்பாட்டை வழங்காது. கூடுதலாக, எங்கள் சிறிய ரெடிஸ் கிளையன்ட் ஒரு சில செயல்பாடுகளை மட்டுமே செய்கிறது (ஒரு விசையைப் பெறுதல், அமைத்தல் மற்றும் அதிகரிப்பது; ஒரு வரிசையைப் பெறுதல் மற்றும் சேர்ப்பது). கூடுதலாக, ரெடிஸ் நெறிமுறை மிகவும் நேர்த்தியான மற்றும் எளிமையானது. நீங்கள் அதை குறிப்பாக கற்பிக்க வேண்டிய அவசியமில்லை. நெறிமுறை அனைத்து வேலைகளையும் சுமார் நூறு கோடுகளின் குறியீட்டில் செய்கிறது என்பது எவ்வளவு நன்றாக சிந்திக்கப்படுகிறது என்பதைக் காட்டுகிறது.
கிளையன்ட் (உலாவி) கோரும்போது பயன்பாடு என்ன செய்கிறது என்பதை பின்வரும் படம் காட்டுகிறது /guestbookURL.
விருந்தினர் புத்தக பயன்பாடு எவ்வாறு செயல்படுகிறது
விருந்தினர் புத்தகப் பக்கத்தை வழங்க வேண்டியிருக்கும் போது, டெம்ப்ளேட்டை நினைவகத்தில் படிக்க கோப்பு முறைமைக்கு ஒரு அழைப்பு மற்றும் ரெடிஸுக்கு மூன்று நெட்வொர்க் அழைப்புகள் உள்ளன. டெம்ப்ளேட் கோப்பில் மேலே உள்ள ஸ்கிரீன்ஷாட்டில் உள்ள பக்கத்திற்கான பெரும்பாலான HTML உள்ளடக்கம் உள்ளது. உள்ளடக்கத்தின் மாறும் பகுதிக்கான சிறப்பு ஒதுக்கிடங்களும் உள்ளன: இடுகைகள் மற்றும் பார்வையாளர் கவுண்டர். நாங்கள் ரெடிஸிடமிருந்து அவற்றைப் பெறுகிறோம், பக்கத்தில் அவற்றைச் செருகி, வாடிக்கையாளர்களுக்கு முழுமையாக உருவாக்கப்பட்ட உள்ளடக்கத்தை வழங்குகிறோம். Redis க்கு மூன்றாவது அழைப்பைத் தவிர்க்கலாம், ஏனெனில் Redis புதிய முக்கிய மதிப்பை அதிகரிக்கும் போது திரும்பும். எவ்வாறாயினும், ஒத்திசைவற்ற நிகழ்வு அடிப்படையிலான கட்டமைப்பைக் கொண்ட எங்கள் சேவையகத்திற்கு, கற்றல் நோக்கங்களுக்காக நிறைய நெட்வொர்க் அழைப்புகள் ஒரு நல்ல சோதனையாகும். எனவே பார்வையாளர்களின் எண்ணிக்கையின் ரெடிஸ் ரிட்டர்ன் மதிப்பை நிராகரித்து தனி அழைப்பின் மூலம் வினவுகிறோம்.
சேவையக கட்டமைப்புகள் ZeroHTTPd
ZeroHTTPd இன் ஏழு பதிப்புகளை ஒரே செயல்பாட்டுடன் வெவ்வேறு கட்டமைப்புகளுடன் உருவாக்குகிறோம்:
மீண்டும் மீண்டும் செய்யும்
ஃபோர்க் சர்வர் (ஒரு கோரிக்கைக்கு ஒரு குழந்தை செயல்முறை)
ப்ரீ-ஃபோர்க் சர்வர் (செயல்முறைகளின் முன்கூட்டியல்)
செயல்படுத்தல் நூல்கள் கொண்ட சேவையகம் (ஒரு கோரிக்கைக்கு ஒரு நூல்)
முன் நூல் உருவாக்கம் கொண்ட சேவையகம்
கட்டிடக்கலை அடிப்படையிலானது poll()
கட்டிடக்கலை அடிப்படையிலானது epoll
HTTP கோரிக்கைகளுடன் சேவையகத்தை ஏற்றுவதன் மூலம் ஒவ்வொரு கட்டமைப்பின் செயல்திறனையும் அளவிடுகிறோம். ஆனால் மிகவும் இணையான கட்டமைப்புகளை ஒப்பிடும் போது, வினவல்களின் எண்ணிக்கை அதிகரிக்கிறது. நாங்கள் மூன்று முறை சோதனை செய்து சராசரியை கணக்கிடுகிறோம்.
சோதனை முறை
ZeroHTTPd சுமை சோதனை அமைப்பு
சோதனைகளை இயக்கும் போது, அனைத்து கூறுகளும் ஒரே கணினியில் இயங்காது என்பது முக்கியம். இந்த வழக்கில், கூறுகள் CPU க்கு போட்டியிடுவதால், OS கூடுதல் திட்டமிடல் மேல்நிலையை செலுத்துகிறது. தேர்ந்தெடுக்கப்பட்ட ஒவ்வொரு சர்வர் கட்டமைப்புகளின் இயக்க முறைமையின் மேல்நிலையை அளவிடுவது இந்தப் பயிற்சியின் மிக முக்கியமான குறிக்கோள்களில் ஒன்றாகும். மேலும் மாறிகளைச் சேர்ப்பது செயல்முறைக்கு தீங்கு விளைவிக்கும். எனவே, மேலே உள்ள படத்தில் உள்ள அமைப்பு சிறப்பாக செயல்படுகிறது.
இந்த சேவையகங்கள் ஒவ்வொன்றும் என்ன செய்கிறது?
load.unixism.net: இங்குதான் நாம் இயங்குகிறோம் ab, அப்பாச்சி பெஞ்ச்மார்க் பயன்பாடு. இது எங்கள் சர்வர் கட்டமைப்புகளை சோதிக்க தேவையான சுமையை உருவாக்குகிறது.
nginx.unixism.net: சில நேரங்களில் நாம் சர்வர் புரோகிராமின் ஒன்றுக்கு மேற்பட்ட நிகழ்வுகளை இயக்க விரும்புகிறோம். இதைச் செய்ய, பொருத்தமான அமைப்புகளைக் கொண்ட Nginx சேவையகம் ஒரு சுமை சமநிலையாக செயல்படுகிறது ab எங்கள் சேவையக செயல்முறைகளுக்கு.
zerohttpd.unixism.net: இங்கே நாம் நமது சர்வர் புரோகிராம்களை ஏழு வெவ்வேறு கட்டமைப்புகளில் ஒரு நேரத்தில் இயக்குகிறோம்.
redis.unixism.net: இந்த சேவையகம் Redis டீமானை இயக்குகிறது, அங்கு விருந்தினர் புத்தக உள்ளீடுகள் மற்றும் பார்வையாளர் கவுண்டர்கள் சேமிக்கப்படும்.
அனைத்து சேவையகங்களும் ஒரே செயலி மையத்தில் இயங்குகின்றன. ஒவ்வொரு கட்டிடக்கலையின் அதிகபட்ச செயல்திறனை மதிப்பிடுவதே யோசனை. அனைத்து சேவையக நிரல்களும் ஒரே வன்பொருளில் சோதிக்கப்படுவதால், இது ஒப்பிடுவதற்கான அடிப்படையாகும். எனது சோதனை அமைப்பானது டிஜிட்டல் பெருங்கடலில் இருந்து வாடகைக்கு எடுக்கப்பட்ட மெய்நிகர் சேவையகங்களைக் கொண்டுள்ளது.
நாம் என்ன அளவிடுகிறோம்?
நீங்கள் வெவ்வேறு குறிகாட்டிகளை அளவிடலாம். வெவ்வேறு நிலைகளில் உள்ள கோரிக்கைகளுடன் சேவையகங்களை ஏற்றுவதன் மூலம் கொடுக்கப்பட்ட உள்ளமைவில் ஒவ்வொரு கட்டமைப்பின் செயல்திறனை மதிப்பீடு செய்கிறோம்: சுமை 20 முதல் 15 ஒரே நேரத்தில் பயனர்கள் வரை அதிகரிக்கிறது.
சோதனை முடிவுகள்
பின்வரும் விளக்கப்படம் வெவ்வேறு கட்டமைப்புகளில் உள்ள சேவையகங்களின் செயல்திறனை வெவ்வேறு நிலைகளில் இணையாகக் காட்டுகிறது. y-அச்சு என்பது ஒரு வினாடிக்கான கோரிக்கைகளின் எண்ணிக்கை, x-அச்சு என்பது இணை இணைப்புகள்.
முடிவுகளுடன் ஒரு அட்டவணை கீழே உள்ளது.
வினாடிக்கு கோரிக்கைகள்
இணைச் மீண்டும் மீண்டும் முள் கரண்டி முன் முட்கரண்டி ஸ்ட்ரீமிங் முன் ஸ்ட்ரீமிங் கருத்து கணிப்பு தேர்தல்
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 கோரிக்கைகளுக்கு மேல் எங்களிடம் இரண்டு வீரர்கள் மட்டுமே உள்ளனர் என்பதை வரைபடம் மற்றும் அட்டவணையில் இருந்து பார்க்க முடியும்: ப்ரீ-ஃபோர்க் மற்றும் எபோல். சுமை அதிகரிக்கும் போது, வாக்கெடுப்பு அடிப்படையிலான சர்வர் ஸ்ட்ரீமிங்கை விட மோசமாக செயல்படுகிறது. த்ரெட்-கிரியேஷனுக்கு முந்தைய கட்டமைப்பானது எபோலுக்கு தகுதியான போட்டியாளராக உள்ளது, இது லினக்ஸ் கர்னல் அதிக எண்ணிக்கையிலான த்ரெட்களை எவ்வளவு சிறப்பாக திட்டமிடுகிறது என்பதற்கான சான்றாகும்.
ZeroHTTPd மூலக் குறியீடு
ZeroHTTPd மூலக் குறியீடு இங்கே. ஒவ்வொரு கட்டிடக்கலைக்கும் ஒரு தனி அடைவு உள்ளது.
அனைத்து கட்டமைப்புகளுக்கும் ஏழு கோப்பகங்களுடன் கூடுதலாக, உயர்மட்ட கோப்பகத்தில் மேலும் இரண்டு உள்ளன: பொது மற்றும் டெம்ப்ளேட்கள். முதலில் index.html கோப்பு மற்றும் முதல் ஸ்கிரீன்ஷாட்டில் இருந்து படம் உள்ளது. நீங்கள் மற்ற கோப்புகள் மற்றும் கோப்புறைகளை அங்கு வைக்கலாம், மேலும் ZeroHTTPd எந்த பிரச்சனையும் இல்லாமல் அந்த நிலையான கோப்புகளை வழங்க வேண்டும். உலாவியில் உள்ள பாதை பொது கோப்புறையில் உள்ள பாதையுடன் பொருந்தினால், ZeroHTTPd இந்த கோப்பகத்தில் உள்ள index.html கோப்பைத் தேடுகிறது. விருந்தினர் புத்தகத்திற்கான உள்ளடக்கம் மாறும் வகையில் உருவாக்கப்படுகிறது. இது ஒரு முகப்புப் பக்கத்தை மட்டுமே கொண்டுள்ளது, மேலும் அதன் உள்ளடக்கம் 'templates/guestbook/index.html' கோப்பின் அடிப்படையில் அமைந்துள்ளது. ZeroHTTPd நீட்டிப்புக்கான டைனமிக் பக்கங்களை எளிதாக சேர்க்கிறது. பயனர்கள் இந்தக் கோப்பகத்தில் டெம்ப்ளேட்களைச் சேர்க்கலாம் மற்றும் தேவைக்கேற்ப ZeroHTTPdஐ நீட்டிக்கலாம் என்பது யோசனை.
ஏழு சேவையகங்களையும் உருவாக்க, இயக்கவும் make all மேல் நிலை கோப்பகத்தில் இருந்து - மற்றும் அனைத்து உருவாக்கங்களும் இந்த கோப்பகத்தில் தோன்றும். இயங்கக்கூடிய கோப்புகள் அவை தொடங்கப்பட்ட கோப்பகத்தில் உள்ள பொது மற்றும் டெம்ப்ளேட் கோப்பகங்களைத் தேடுகின்றன.
லினக்ஸ் ஏபிஐ
இந்தக் கட்டுரைத் தொடரில் உள்ள தகவல்களைப் புரிந்து கொள்ள, நீங்கள் Linux API-யை நன்கு அறிந்திருக்க வேண்டிய அவசியமில்லை. இருப்பினும், இந்த தலைப்பில் மேலும் படிக்க பரிந்துரைக்கிறேன்; இணையத்தில் பல குறிப்பு ஆதாரங்கள் உள்ளன. லினக்ஸ் ஏபிஐகளின் பல வகைகளை நாங்கள் தொடுவோம் என்றாலும், எங்கள் கவனம் முதன்மையாக செயல்முறைகள், இழைகள், நிகழ்வுகள் மற்றும் பிணைய அடுக்கில் இருக்கும். Linux API பற்றிய புத்தகங்கள் மற்றும் கட்டுரைகளுக்கு கூடுதலாக, கணினி அழைப்புகள் மற்றும் பயன்படுத்தப்படும் நூலக செயல்பாடுகளுக்கு மனாவைப் படிக்கவும் பரிந்துரைக்கிறேன்.
செயல்திறன் மற்றும் அளவிடுதல்
செயல்திறன் மற்றும் அளவிடுதல் பற்றிய ஒரு குறிப்பு. கோட்பாட்டளவில், அவர்களுக்கு இடையே எந்த தொடர்பும் இல்லை. சில மில்லி விநாடிகளின் மறுமொழி நேரத்துடன், மிகச் சிறப்பாகச் செயல்படும் இணையச் சேவையை நீங்கள் பெறலாம், ஆனால் அது அளவிடப்படவே இல்லை. அதேபோல், மோசமாகச் செயல்படும் இணையப் பயன்பாடானது பதிலளிப்பதற்குச் சில வினாடிகள் எடுக்கும், ஆனால் பல்லாயிரக்கணக்கான ஒரே நேரத்தில் பயனர்களைக் கையாளும் வகையில் அது பத்தாயிரம் அதிகரிக்கிறது. இருப்பினும், உயர் செயல்திறன் மற்றும் அளவிடுதல் ஆகியவற்றின் கலவையானது மிகவும் சக்திவாய்ந்த கலவையாகும். உயர்-செயல்திறன் பயன்பாடுகள் பொதுவாக வளங்களைச் சிக்கனமாகப் பயன்படுத்துகின்றன, இதனால் சேவையகத்தில் ஒரே நேரத்தில் இருக்கும் பயனர்களுக்கு திறமையாகச் சேவை செய்து, செலவுகளைக் குறைக்கிறது.
CPU மற்றும் I/O பணிகள்
இறுதியாக, கம்ப்யூட்டிங்கில் எப்போதும் இரண்டு வகையான பணிகள் உள்ளன: I/O மற்றும் CPU க்கு. இணையத்தில் கோரிக்கைகளைப் பெறுதல் (நெட்வொர்க் I/O), கோப்புகளை வழங்குதல் (நெட்வொர்க் மற்றும் வட்டு I/O), தரவுத்தளத்துடன் தொடர்புகொள்வது (நெட்வொர்க் மற்றும் வட்டு I/O) அனைத்தும் I/O செயல்பாடுகள். சில தரவுத்தள வினவல்கள் சற்று சிபியு தீவிரமானதாக இருக்கலாம் (வரிசைப்படுத்துதல், சராசரியாக ஒரு மில்லியன் முடிவுகள் போன்றவை). பெரும்பாலான இணைய பயன்பாடுகள் அதிகபட்ச சாத்தியமான I/O மூலம் வரையறுக்கப்பட்டுள்ளன, மேலும் செயலி முழு திறனில் அரிதாகவே பயன்படுத்தப்படுகிறது. சில I/O டாஸ்க் அதிக CPU ஐப் பயன்படுத்துவதை நீங்கள் பார்க்கும்போது, அது மோசமான பயன்பாட்டு கட்டமைப்பின் அறிகுறியாக இருக்கலாம். செயல்முறை மேலாண்மை மற்றும் சூழல் மாறுதலில் CPU வளங்கள் வீணடிக்கப்படுகின்றன என்று இது அர்த்தப்படுத்துகிறது - மேலும் இது முற்றிலும் பயனுள்ளதாக இல்லை. நீங்கள் பட செயலாக்கம், ஆடியோ கோப்பு மாற்றம் அல்லது இயந்திர கற்றல் போன்றவற்றைச் செய்கிறீர்கள் என்றால், பயன்பாட்டிற்கு சக்திவாய்ந்த CPU ஆதாரங்கள் தேவை. ஆனால் பெரும்பாலான பயன்பாடுகளுக்கு இது இல்லை.