உண்மையான நேரத்தில் PHP ஸ்கிரிப்ட்களின் புள்ளிவிவரங்கள் மற்றும் கண்காணிப்பு. ClickHouse மற்றும் Grafana பின்பாவின் உதவிக்கு வருகின்றன

pinba_engine மற்றும் pinboard க்கு பதிலாக clickhouse மற்றும் Grafana உடன் pinba ஐ எவ்வாறு பயன்படுத்துவது என்பதை இந்தக் கட்டுரையில் கூறுகிறேன்.

PHP திட்டத்தில், செயல்திறனில் என்ன நடக்கிறது என்பதைப் புரிந்துகொள்ள பின்பா மட்டுமே நம்பகமான வழியாகும். உண்மை, பின்பா பொதுவாக சிக்கல்கள் ஏற்கனவே கவனிக்கப்பட்டால் மட்டுமே செயல்படுத்தப்படுகிறது மற்றும் "எங்கே தோண்டுவது" என்பது தெளிவாக இல்லை.

இந்த அல்லது அந்த ஸ்கிரிப்ட் ஒரு வினாடி/நிமிடத்திற்கு எத்தனை முறை அழைக்கப்படுகிறது என்பது பெரும்பாலும் யாருக்கும் தெரியாது, மேலும் அவை தர்க்கரீதியாகத் தோன்றும் இடங்களிலிருந்து தொடங்கி "தொடுதல் மூலம்" மேம்படுத்தத் தொடங்குகின்றன.

சிலர் nginx பதிவுகளை பகுப்பாய்வு செய்கிறார்கள், மற்றவர்கள் மெதுவான தரவுத்தள வினவல்களை பகுப்பாய்வு செய்கிறார்கள்.

நிச்சயமாக, பின்பா மிதமிஞ்சியதாக இருக்காது, ஆனால் ஒவ்வொரு திட்டத்திற்கும் அது இல்லாததற்கு பல காரணங்கள் உள்ளன.

உண்மையான நேரத்தில் PHP ஸ்கிரிப்ட்களின் புள்ளிவிவரங்கள் மற்றும் கண்காணிப்பு. ClickHouse மற்றும் Grafana பின்பாவின் உதவிக்கு வருகின்றன

மற்றும் முதல் காரணம் நிறுவல் ஆகும்.

பின்பாவை செயல்படுத்துவதில் இருந்து அதிகமாகவோ அல்லது குறைவாகவோ சில வகையான "எக்ஸாஸ்ட்" பெற, கடைசி நிமிடங்களுக்கு மட்டுமல்ல, நீண்ட காலத்திற்கும் (நாட்கள் முதல் மாதங்கள் வரை) அளவீடுகளைப் பார்ப்பது மிகவும் விரும்பத்தக்கது.

இதற்கு நீங்கள் தேவை:

  • phpக்கான நீட்டிப்பை நிறுவவும் (மற்றும் நீங்கள் nginxக்கு ஒரு தொகுதியை விரும்பலாம்)
  • mysql க்கான நீட்டிப்பை தொகுக்கவும்
  • பின்போர்டை நிறுவி கிரானை உள்ளமைக்கவும்

பின்பாவைப் பற்றிய சிறிய தகவல்களால், பலருக்கு இது PHP5 இல் மட்டுமே வேலை செய்தது மற்றும் நீண்ட காலமாக கடந்த காலத்தின் ஒரு விஷயமாக உள்ளது, ஆனால் நாம் பின்னர் பார்ப்போம், இது அப்படி இல்லை.

முதல் படி எளிமையானது, நீங்கள் செய்ய வேண்டியது கட்டளையை இயக்க வேண்டும்:

apt install php-pinba

இந்த நீட்டிப்பு php 7.3 வரை உள்ள களஞ்சியங்களில் கிடைக்கிறது மேலும் நீங்கள் எதையும் தொகுக்க வேண்டியதில்லை.

நிறுவல் கட்டளையை இயக்கிய பிறகு, வடிவமைப்பில் உள்ள ஒவ்வொரு ஸ்கிரிப்ட்டுக்கும் (இயங்கும் நேரம், நினைவகம் போன்றவை) அளவீடுகளை சேகரித்து அனுப்பும் ஒரு வேலை நீட்டிப்பை உடனடியாகப் பெறுகிறோம். protobuf udp வழியாக 127.0.0.1:30002.

இதுவரை யாரும் இந்த UDP பாக்கெட்டுகளைப் பிடிக்கவில்லை அல்லது செயலாக்கவில்லை, ஆனால் இது உங்கள் PHP ஸ்கிரிப்ட்களின் வேகம் அல்லது நிலைத்தன்மையை எந்த வகையிலும் எதிர்மறையாக பாதிக்காது.

சமீப காலம் வரை, இந்த UDP பாக்கெட்டுகளைப் பிடித்து செயலாக்கக்கூடிய ஒரே பயன்பாடு மட்டுமே பின்பா_இன்ஜின். விளக்கம் "எளிய மற்றும் சுருக்கமான"நிறுவல் எப்போதாவது படித்து அதை மீண்டும் ஆராய்வதற்கான விருப்பத்தை ஊக்கப்படுத்துகிறது. கிலோமீட்டர் நீளமுள்ள சார்புகளின் பட்டியல்கள் தொகுப்புகளின் பெயர்கள் மற்றும் நிரல்களின் பெயர்கள் மற்றும் அவற்றின் நிறுவலுடன் தனிப்பட்ட பக்கங்களுக்கான இணைப்புகள் இரண்டையும் கொண்டிருக்கும், மேலும் அவை மற்ற சார்புகளுடன் அவற்றின் சொந்த இணைப்புகளைக் கொண்டுள்ளன. இந்த அவலத்தை சமாளிக்க யாருக்கும் நேரமும் விருப்பமும் இல்லை.

நிறுவல் செயல்முறை பின்பா2 செய்யவில்லை குறிப்பாக எளிதாக.

ஒருவேளை ஒருநாள் pinba10 ஐ ஒன்று அல்லது இரண்டு கட்டளைகளுடன் நிறுவுவது சாத்தியமாகும், மேலும் அதை எப்படி செய்வது என்பதைப் புரிந்துகொள்ள ஒரு சில விஷயங்களைப் படிக்க வேண்டியதில்லை, ஆனால் இப்போதைக்கு இது அவ்வாறு இல்லை.

நீங்கள் pinba_engine ஐ நிறுவினால், இது பாதி போர் மட்டுமே. எல்லாவற்றிற்கும் மேலாக, இல்லாமல் பின்போர்டு கடந்த சில நிமிடங்களில் உள்ள தரவுகளுக்கு உங்களை நீங்கள் கட்டுப்படுத்திக் கொள்ள வேண்டும் அல்லது தரவை நீங்களே ஒருங்கிணைத்து, சேமித்து, காட்சிப்படுத்த வேண்டும். பின்போர்டு பயன்படுத்த மிகவும் எளிமையானது நல்லது நிறுவல்.

php இலிருந்து அனைத்து அளவீடுகளும் ஏற்கனவே புரோட்டோபஃப் வடிவத்தில் udp போர்ட்டிற்கு அனுப்பப்பட்டிருந்தால், அவற்றைப் பிடித்து ஒருவித சேமிப்பகத்தில் வைக்கும் ஒரு விண்ணப்பத்தை எழுதினால் மட்டும் ஏன் இத்தகைய துன்பம்? வெளிப்படையாக, இந்த யோசனையுடன் வந்த அந்த டெவலப்பர்கள் உடனடியாக தங்கள் சொந்த யோசனைகளை எழுத அமர்ந்தனர், அவற்றில் சில GitHub இல் முடிந்தது.

சேமிப்பகத்தில் அளவீடுகளைச் சேமிக்கும் நான்கு ஓப்பன் சோர்ஸ் திட்டங்களின் மேலோட்டம் கீழே உள்ளது, அதிலிருந்து இந்தத் தரவை எளிதாக மீட்டெடுக்கலாம் மற்றும் காட்சிப்படுத்தலாம், எடுத்துக்காட்டாக, கிராஃபானாவைப் பயன்படுத்தி.

olegfedoseev/pinba-server (நவம்பர் 2017)

udp சர்வர் பயணத்தின்போது அளவீடுகளை OpenTSDB இல் சேமிக்கிறது. ஒருவேளை நீங்கள் ஏற்கனவே உங்கள் திட்டத்தில் OpenTSDB ஐப் பயன்படுத்துகிறீர்கள் என்றால், இந்த தீர்வு உங்களுக்கு பொருந்தும், இல்லையெனில் அதை அனுப்ப பரிந்துரைக்கிறேன்.

olegfedoseev/pinba-influxdb (ஜூன் 2018)

udp சர்வர் ஆன் கோ, அதே இருந்து உலாவி, இந்த முறை InfluxDB இல் அளவீடுகளை சேமிக்கிறது. பல திட்டங்கள் ஏற்கனவே கண்காணிப்புக்கு InfluxDB ஐப் பயன்படுத்துகின்றன, எனவே இந்த தீர்வு அவர்களுக்கு சரியானதாக இருக்கலாம்.

நன்மை:

  • InfluxDB அது அனுமதிக்கிறது பெறப்பட்ட அளவீடுகளை ஒருங்கிணைத்து, குறிப்பிட்ட நேரத்திற்குப் பிறகு அசலை நீக்கவும்.

தீமைகள்:

கிளிக்ஹவுஸ்-நிஞ்ஜா/புரோட்டான் (ஜனவரி 2019)

udp சேவையகம் பயணத்தில் உள்ளது, இது கிளிக்ஹவுஸில் அளவீடுகளைச் சேமிக்கிறது. இது எனது நண்பரின் தீர்வு. பழகிய பிறகுதான் பின்புவையும் கிளிக்ஹவுஸையும் எடுக்க வேண்டிய நேரம் இது என்று முடிவு செய்தேன்.

நன்மை:

  • கிளிக்ஹவுஸ் இது போன்ற பணிகளுக்கு ஏற்றது; இது தரவுகளை சுருக்குவதற்கு உங்களை அனுமதிக்கிறது, திரட்டல்கள் இல்லாமல் கூட அனைத்து மூல தரவையும் சேமிக்க முடியும்.
  • தேவைப்பட்டால், நீங்கள் பெறப்பட்ட அளவீடுகளை எளிதாக தொகுக்கலாம்
  • கிராஃபனாவுக்கான ஆயத்த வார்ப்புரு
  • டைமர்களில் தகவலைச் சேமிக்கிறது

தீமைகள்:

  • கொடிய குறைபாடு
  • தரவுத்தளம் மற்றும் அட்டவணைகளின் பெயர், சேவையகத்தின் முகவரி மற்றும் போர்ட் ஆகியவற்றை நீங்கள் கட்டமைக்கக்கூடிய கட்டமைப்பு எதுவும் இல்லை.
  • மூலத் தரவைச் சேமிக்கும் போது, ​​பக்கம் மற்றும் டொமைன் முகவரிகளைச் சேமிக்க துணை அகராதி அட்டவணை பயன்படுத்தப்படுகிறது, இது அடுத்தடுத்த வினவல்களை சிக்கலாக்கும்
  • முதல் மைனஸிலிருந்து வரும் மற்ற சிறிய விஷயங்கள்

பின்பா-சர்வர்/பின்பா-சர்வர் (ஏப்ரல் 2019)

php இல் udp சேவையகம், இது ClickHouse இல் அளவீடுகளைச் சேமிக்கிறது. இது எனது தீர்வு, இது பின்பா, கிளிக்ஹவுஸ் மற்றும் புரோட்டோபஃப் பற்றி அறிந்து கொள்வதன் விளைவாகும். நான் இந்த முழு தொகுப்பையும் வரிசைப்படுத்தும் போது, ​​நான் ஒரு "கருத்துக்கான ஆதாரம்" எழுதினேன், இது எனக்கு எதிர்பாராத விதமாக, குறிப்பிடத்தக்க ஆதாரங்களை பயன்படுத்தவில்லை (30 MB ரேம் மற்றும் எட்டு செயலி கோர்களில் ஒன்றில் 1% க்கும் குறைவாக), அதனால் நான் அதை மக்களிடம் பகிர்ந்து கொள்ள முடிவு செய்தார்.

நன்மைகள் முந்தைய தீர்வைப் போலவே உள்ளன, அசல் pinba_engine இலிருந்து வழக்கமான பெயர்களையும் பயன்படுத்தினேன். வெவ்வேறு அட்டவணைகளில் அளவீடுகளைச் சேமிப்பதற்காக ஒரே நேரத்தில் பல பின்பேஸ் சேவையக நிகழ்வுகளைத் தொடங்க உங்களை அனுமதிக்கும் கட்டமைப்பையும் சேர்த்துள்ளேன் - நீங்கள் php இலிருந்து மட்டுமல்ல, nginx இலிருந்தும் தரவைச் சேகரிக்க விரும்பினால் இது பயனுள்ளதாக இருக்கும்.
குறைபாடுகள் - "அபாய குறைபாடு" மற்றும் தனிப்பட்ட முறையில் உங்களுக்குப் பொருந்தாத சிறிய விஷயங்கள், ஆனால் எனது தீர்வு "ஒரு ஸ்லிப்பர் போல எளிமையானது" மற்றும் சுமார் 100 வரிக் குறியீடுகளை மட்டுமே கொண்டுள்ளது, எனவே எந்த PHP டெவலப்பரும் தனக்குப் பிடிக்காததை மாற்ற முடியும். ஓரிரு நிமிடங்களில்.

இது எப்படி வேலை

UDP போர்ட் 30002 கேட்கப்பட்டது. அனைத்து உள்வரும் பாக்கெட்டுகளும் புரோட்டோபஃப் திட்டத்தின் படி டிகோட் செய்யப்பட்டு ஒருங்கிணைக்கப்படுகின்றன. நிமிடத்திற்கு ஒருமுறை, pinba.requests அட்டவணையில் கிளிக்ஹவுஸில் ஒரு பாக்கெட் செருகப்படும். (அனைத்து அளவுருக்கள் உள்ளமைக்கப்பட்டுள்ளன கட்டமைப்பு)

கிளிக்ஹவுஸ் பற்றி கொஞ்சம்

கிளிக்ஹவுஸ் வெவ்வேறு தரவு சேமிப்பக இயந்திரங்களை ஆதரிக்கிறது. மிகவும் பொதுவாக பயன்படுத்தப்படும் ஒன்று MergeTree ஆகும்.

சில சமயங்களில் நீங்கள் ஒருங்கிணைக்கப்பட்ட தரவை எல்லா நேரத்திலும் சேமிக்க முடிவு செய்தால், கடைசி நேரத்தில் மட்டுமே மூலத் தரவைச் சேமிக்க முடிவு செய்தால், நீங்கள் குழுவாக்கத்தின் மூலம் ஒரு மெட்டீரியல் காட்சியை உருவாக்கலாம், மேலும் முக்கிய pinba.requests அட்டவணையை அவ்வப்போது சுத்தம் செய்யலாம், அதே நேரத்தில் எல்லா தரவும் இருக்கும். பொருள்படுத்தப்பட்ட பார்வை. மேலும், pinba.requests அட்டவணையை உருவாக்கும் போது, ​​நீங்கள் "இயந்திரம் = பூஜ்யம்" என்பதைக் குறிப்பிடலாம், பின்னர் மூலத் தரவு வட்டில் சேமிக்கப்படாது, அதே நேரத்தில் அது மெட்டீரியல் காட்சியில் முடிவடையும் மற்றும் ஒருங்கிணைக்கப்படும். . நான் இந்த திட்டத்தை nginx அளவீடுகளுக்குப் பயன்படுத்துகிறேன், ஏனெனில் phpஐ விட nginx இல் எனக்கு 50 மடங்கு அதிகமான கோரிக்கைகள் உள்ளன.

எனவே, நீங்கள் வெகுதூரம் வந்துவிட்டீர்கள், உங்களை பாதியிலேயே விட்டுச் செல்ல நான் விரும்பவில்லை, எனவே எனது தீர்வின் நிறுவல் மற்றும் உள்ளமைவு மற்றும் உங்களுக்குத் தேவையான அனைத்தும், அத்துடன் ஒன்றுக்கு மேற்பட்ட கப்பல்களை ஏற்படுத்திய ஆபத்துகள் பற்றிய விரிவான விளக்கம் பின்வருமாறு. செயலிழக்க. முழு நிறுவல் செயல்முறையும் Ubuntu 18.04 LTS மற்றும் Centos 7 க்கு விவரிக்கப்பட்டுள்ளது; மற்ற விநியோகங்கள் மற்றும் பதிப்புகளில் செயல்முறை சிறிது வேறுபடலாம்.

நிறுவல்

தேவையான அனைத்து கட்டளைகளையும் நான் உள்ளிடுகிறேன் டோக்கர்ஃபைல் அறிவுறுத்தல்களின் மறுஉருவாக்கத்தை எளிதாக்குவதற்கு. குறைகள் மட்டுமே கீழே விவரிக்கப்படும்.

php-pinba

நிறுவிய பின், /etc/php/7.2/fpm/conf.d/20-pinba.ini கோப்பில் நீங்கள் அனைத்து விருப்பங்களையும் கருத்துத் தெரிவிக்கவில்லை என்பதை உறுதிப்படுத்தவும். சில விநியோகங்களில் (எ.கா. சென்டோஸ்) அவர்கள் கருத்து தெரிவிக்கப்படலாம்.

extension=pinba.so
pinba.enabled=1
pinba.server=127.0.0.1:30002

கிளிக்ஹவுஸ்

நிறுவலின் போது, ​​இயல்புநிலை பயனருக்கான கடவுச்சொல்லை அமைக்க கிளிக்ஹவுஸ் கேட்கும். இயல்பாக, இந்தப் பயனரை எல்லா ஐபிகளிலிருந்தும் அணுக முடியும், எனவே உங்கள் சர்வரில் ஃபயர்வால் இல்லை என்றால், அதற்கான கடவுச்சொல்லை அமைக்க மறக்காதீர்கள். இதை /etc/clickhouse-server/users.xml கோப்பில் நிறுவிய பிறகும் செய்யலாம்.

கிளிக்ஹவுஸ் 9000 உட்பட பல போர்ட்களைப் பயன்படுத்துகிறது என்பதும் குறிப்பிடத்தக்கது. இந்த போர்ட் சில விநியோகங்களில் php-fpm க்கும் பயன்படுத்தப்படுகிறது (எடுத்துக்காட்டாக, சென்டோஸ்). நீங்கள் ஏற்கனவே இந்த போர்ட்டைப் பயன்படுத்தினால், அதை /etc/clickhouse-server/config.xml கோப்பில் மற்றொன்றுக்கு மாற்றலாம்.

கிளிக்ஹவுஸ் சொருகி கொண்ட கிராஃபானா

Grafana ஐ நிறுவிய பின், உள்நுழைவு நிர்வாகி மற்றும் கடவுச்சொல் நிர்வாகியைப் பயன்படுத்தவும். நீங்கள் முதல் முறையாக உள்நுழையும்போது, ​​புதிய கடவுச்சொல்லை அமைக்குமாறு கிராஃபனா கேட்கும்.

அடுத்து, “+” -> இறக்குமதி மெனுவுக்குச் சென்று, இறக்குமதிக்கான டாஷ்போர்டு எண்ணைக் குறிப்பிடவும் 10011. இந்த டேஷ்போர்டை நீங்கள் மீண்டும் செய்ய வேண்டாம் என்று நான் தயார் செய்து பதிவேற்றினேன்.

மூன்றாம் தரப்பு செருகுநிரல் மூலம் கிளிக்ஹவுஸுடன் வேலை செய்வதை கிராஃபானா ஆதரிக்கிறது, ஆனால் மூன்றாம் தரப்பு செருகுநிரல்களுக்கான விழிப்பூட்டல்கள் கிராஃபானாவிடம் இல்லை (பல ஆண்டுகளாக இதற்கான டிக்கெட் உள்ளது).

பின்பா-சேவையகம்

protobuf மற்றும் libevent ஐ நிறுவுவது விருப்பமானது, ஆனால் pinba-server செயல்திறனை மேம்படுத்துகிறது. /opt தவிர வேறு ஒரு கோப்புறையில் பின்பா-சேவையகத்தை நிறுவினால், நீங்கள் சரி செய்ய வேண்டும் systemd ஸ்கிரிப்ட் கோப்பு.

nginx க்கான பின்பா தொகுதி

ஒரு தொகுதியைத் தொகுக்க, உங்கள் சேவையகத்தில் ஏற்கனவே நிறுவப்பட்ட nginx இன் அதே பதிப்பின் மூலக் குறியீடுகளும், அதே தொகுத்தல் விருப்பங்களும் தேவை, இல்லையெனில் உருவாக்கம் வெற்றிகரமாக இருக்கும், ஆனால் தொகுதியை இணைக்கும்போது, ​​​​ஒரு பிழை ஏற்படும். "தொகுதி பைனரி இணக்கமாக இல்லை." nginx -V கட்டளையைப் பயன்படுத்தி தொகுத்தல் விருப்பங்களைப் பார்க்கலாம்

வாழ்க்கை ஹேக்ஸ்

எனது எல்லா தளங்களும் https இல் மட்டுமே வேலை செய்கின்றன. ஸ்கீமா புலம் அர்த்தமற்றதாகிவிடும், எனவே இணையம்/கன்சோலைப் பிரிக்க இதைப் பயன்படுத்துகிறேன்.

நான் பயன்படுத்தும் இணையத்திலிருந்து அணுகக்கூடிய ஸ்கிரிப்ட்களில்:

if (ini_get('pinba.enabled')) {
    pinba_schema_set('web');
}

மற்றும் கன்சோல் ஸ்கிரிப்ட்களில் (எடுத்துக்காட்டாக, கிரான் ஸ்கிரிப்டுகள்):

if (ini_get('pinba.enabled')) {
    pinba_schema_set('console');
}

கிராஃபனாவில் உள்ள எனது டாஷ்போர்டில் புள்ளிவிவரங்களைத் தனித்தனியாகப் பார்ப்பதற்கு இணையம்/கன்சோல் சுவிட்ச் உள்ளது.

உங்கள் குறிச்சொற்களை பின்பாவிற்கும் அனுப்பலாம், எடுத்துக்காட்டாக:

pinba_tag_set('country', $countryCode);

அவ்வளவுதான்.

கட்டுரைக்கு கீழே உள்ள கருத்துக்கணிப்புகளுக்கு பதிலளிக்கவும்.

வழக்கம் போல், ஹப்ர் மற்றும் சமூக வலைப்பின்னல்களில் தனிப்பட்ட செய்திகள் மூலம் நான் ஆலோசனை அல்லது உதவி செய்ய மாட்டேன் என்று எச்சரிக்கிறேன்.

Github இல் டிக்கெட்டை உருவாக்கவும்.

மேலும் விருப்பங்களுடன் ஆதரவு தரவும் ஆங்கில பிரதி இந்த கட்டுரை ரெடிட்டில்.

பதிவு செய்த பயனர்கள் மட்டுமே கணக்கெடுப்பில் பங்கேற்க முடியும். உள்நுழையவும், தயவு செய்து.

சர்வரில் நீங்கள் எந்த OS ஐப் பயன்படுத்துகிறீர்கள்?

  • உபுண்டு

  • CentOS

  • டெபியன்

  • ஜென்டூ

  • , Red Hat

  • ஃபெடோரா

  • OpenSUSE

  • சுவிட்சர்லாந்து

  • யூனிக்ஸ்

  • விண்டோஸ்

  • மற்ற

114 பயனர்கள் வாக்களித்தனர். 11 பயனர்கள் வாக்களிக்கவில்லை.

சர்வரில் php இன் எந்தப் பதிப்பைப் பயன்படுத்துகிறீர்கள்?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • மற்ற

105 பயனர்கள் வாக்களித்தனர். 17 பயனர்கள் வாக்களிக்கவில்லை.

நீங்கள் எப்போதாவது பின்பாவைப் பயன்படுத்தியுள்ளீர்களா?

  • ஆம்

  • இல்லை, ஆனால் நான் விரும்புகிறேன்

  • இல்லை மற்றும் நான் விரும்பவில்லை

  • இல்லை மற்றும் அவளைப் பற்றி கேள்விப்பட்டதில்லை

100 பயனர்கள் வாக்களித்தனர். 14 பயனர்கள் வாக்களிக்கவில்லை.

பின்பா சர்வரின் எந்தப் பதிப்பை முயற்சிக்க விரும்புகிறீர்கள்?

  • pinba_engine (mysql இயந்திரம்)

  • pinba2 (mysql இயந்திரம்)

  • பின்போர்டு (php + mysql)

  • olegfedoseev/pinba-server (go + OpenTSDB)

  • olegfedoseev/pinba-influxdb (go + influxdb)

  • pinba-server/pinba-server (go + clickhouse)

  • pinba-server/pinba-server (php + clickhouse)

  • என்னுடையதை நானே எழுதுகிறேன்

  • மற்ற

39 பயனர்கள் வாக்களித்தனர். 47 பயனர்கள் வாக்களிக்கவில்லை.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்