የአንቀጽ ማውጫ
በድንገት የ Nginx's CPU አጠቃቀም በከፍተኛ ደረጃ እንደጨመረ በስራ ቦታ ደርሰውበታል? ይባስ ብሎ የNginx ብዙ ሰራተኛ ሂደቶች ሂደቶቹን በተመለከትኩ ቁጥር እንደ እብድ ያሉ ሀብቶችን እየበሉ ነው።
ይህንን ትዕይንት ሲመለከቱ ጭንቅላትዎ ይሞቃል፣ እና “አምላኬ ሆይ፣ አገልጋዩ ሊፈነዳ ነው ወይ?” ስትል አትጨነቅ፣ ይህ ማለት አገልጋይህ “ይጨርሳል” ማለት አይደለም። ግን Nginx አጠቃላይ ማመቻቸትን እንዲያደርጉ እንፈልጋለን!
ከመጠን በላይ የ Nginx ጭነት መንስኤዎች ትንተና

በመጀመሪያ፣ ንኪንክስ በድንገት "ኃይል ያጣው" ለምን እንደሆነ ማወቅ አለብን ። ለዚህ ችግር ብዙ ምክንያቶች አሉ፣ ስለዚህ አትጨነቁ፣ አብረን እንመርምራቸው።
1. ምክንያታዊ ያልሆነ ውቅር
በ Nginx ውቅር ፋይል ውስጥ በጣም አስፈላጊው ነጥብ ነው worker_processes. ይህ ግቤት በ Nginx የተጀመሩትን ሂደቶች ብዛት ይወስናል።
- በጣም ጥቂት የሰራተኛ ሂደቶችን ካዋቀሩ, የሲፒዩ ጭነት ይጨምራል, ብዙ ካዋቀሩ, በቂ ማህደረ ትውስታ አይኖርም.
- ሚዛናዊ ነጥብ ማግኘት አለብህ ለምሳሌ፡-የሰራተኛ_ሂደቶችን ከሲፒዩ ኮሮች ብዛት ከ1 እስከ 2 እጥፍ ያቀናብሩ.
- 4 ኮርሶች ካሉዎት ከዚያ ይሞክሩ
worker_processes 4ወይም በቀጥታ ያቀናብሩት።auto.
2. የጉብኝት ጭማሪ
አንዳንድ ጊዜ፣ በNginx ጭነት ላይ ድንገተኛ ጭማሪ የሚከሰተው በአሠራር ስህተቶች ምክንያት ሳይሆን ከመጠን በላይ በሆኑ ጥያቄዎች ምክንያት ነው። ከፍተኛ የሆነ የNginx የሰራተኛ ሂደቶችን ሊያሸንፍ ይችላል ፣ ይህም እያንዳንዱ ሂደት ከአቅሙ በላይ እንዲሠራ፣ ሲፒዩ እና ማህደረ ትውስታን እንዲወስድ ሊያደርግ ይችላል። በዚህ ሁኔታ፣ የአገልጋይ ሀብቶችን ማሻሻል ሊያስፈልግዎ ይችላል፣ ለምሳሌ የሲፒዩ ኮሮችን ቁጥር መጨመር ወይም ተጨማሪ ማህደረ ትውስታ መጨመር። ይህ ደግሞ እንደ ማሳሰቢያ ሆኖ ያገለግላል፡ የሲዲኤን ትራፊክ ስርጭትን ወይም የጭነት ሚዛንን ግምት ውስጥ ማስገባትዎን አይርሱ።
3. ተንኮል አዘል ጥቃቶች አጋጥመውታል።
በመስመር ላይ እጅግ በጣም ተወዳጅ መሆን ጥሩ አይደለም፤ ተንኮል አዘል ጥቃቶች በማንኛውም ጊዜ ኢላማ ሊያደርጉዎት ይችላሉ። ያልተለመደ ከፍተኛ የሲፒዩ አጠቃቀም እና አጠራጣሪ የአይፒ ጥያቄዎችን ካስተዋሉ፣ ድር ጣቢያዎ በዲዶኤስ ጥቃት ስር የመሆን ዕድሉ ከፍተኛ ነው። በዚህ ሁኔታ፣ ወዲያውኑ ፋየርዎልን ማሰማራት ወይም የመዳረሻ ድግግሞሽን መገደብ ያስፈልግዎታል ፣ ለምሳሌ የNginx አብሮገነብ የፍጥነት ገደብ ሞዱል መጠቀም ወይም የአይፒ ጥቁር መዝገብ ማዘጋጀት።
የ Nginx ሂደትን የከፍተኛ ማህደረ ትውስታ አጠቃቀምን ችግር እንዴት መፍታት ይቻላል?
ስለዚህ ጥያቄው የ Nginx ሰራተኛ ሂደት ለምን ብዙ ሀብቶችን ይወስዳል? በቅንጅቱ መጀመር እና ደረጃ በደረጃ ማመቻቸት አለብን.
የማዋቀር ዘዴ
Nginx ውቅር ፋይልን ክፈትብዙውን ጊዜ የ Nginx ዋና ውቅር ፋይል የሚገኘው በ
/etc/nginx/nginx.conf.አዘገጃጀት
worker_processesበማዋቀር ፋይል ውስጥ ይገኛል።eventsብሎኮች, ቅንብሮችworker_processesዋጋ. ካልሆነeventsአግድ, አንድ መፍጠር ያስፈልግዎታል.nginx events { worker_connections 1024; use epoll; # 或者适用于操作系统的其他事件模型 }
1. የሰራተኛ_ግንኙነቶችን በትክክል አቀናብር
nginx worker_connections መለኪያው እያንዳንዱ ሰራተኛ ሂደት የሚይዘውን ከፍተኛውን የግንኙነቶች ብዛት ይወስናል። በጣም ትንሽ ከሆነ, በጣም ትልቅ ከሆነ, በጣም ብዙ ሀብቶችን ሊፈጅ ይችላል.
ተገቢውን ዋጋ እንዴት ማስላት ይቻላል?
ባለ 4-ኮር ሲፒዩ እና 16 ጊባ ራም እንዳለህ ካሰብክ አስተማማኝ መነሻ ነጥብ ነው። worker_connections 4096.
ነገር ግን የእርስዎ ድር ጣቢያ ብዙ ትራፊክ ካለው፣ እያንዳንዱ ሂደት በቂ ጥያቄዎችን ማስተናገድ የሚችል መሆኑን ለማረጋገጥ ይህንን እሴት ወደ 8192 ለማሳደግ ያስቡበት።
events {
worker_connections 8192;
}
በዚህ መንገድ የ Nginx የማቀነባበሪያ ኃይል በእጅጉ ይሻሻላል.
2. የማቆየት_ጊዜ ማብቂያን ያስተካክሉ
ሌላው Nginx ጥያቄዎችን ለማስተናገድ የሚያስችል ቁልፍ መለኪያ ነው። keepalive_timeout.
ይህ ቅንብር ደንበኛው ከአገልጋዩ ጋር ያለው ግንኙነት ለምን ያህል ጊዜ እንደሚቆይ ይወስናል።
ርዝመቱን በጣም ረጅም ማድረግ የግንኙነት ሀብቶችን ከመጠን በላይ መጠቀምን ሊያስከትል ይችላል ።
መሞከር ትችላለህ keepalive_timeout ግንኙነቱን ለማቆየት እና ሃብቶችን ለመልቀቅ ወደ 15 ሰከንድ ያቀናብሩ።
keepalive_timeout 15;
3. የፋይል ገላጭ ገደቦችን ያሻሽሉ።
በነባሪነት፣ የሊኑክስ ስርዓቶች እያንዳንዱ ሂደት ሊከፍታቸው የሚችላቸውን የፋይል ገላጭዎች ብዛት ይገድባሉ።
Nginx ብዙ ቁጥር ያላቸውን ፋይሎች (እንደ የማይንቀሳቀሱ ሀብቶች ያሉ) ማሄድ ከፈለገ ከ Nginx ላይ ስህተት ሊያዩ ይችላሉ፣ ይህም ""too many open files".
ማለፍ ትችላለህ worker_rlimit_nofile የፋይል ገላጭ ገደብ ጨምርለምሳሌ ወደ 65535 ተቀናብሯል።
worker_rlimit_nofile 65535;
4. መሸጎጫ እና gzipን አንቃ
መሸጎጫ እና መጭመቅ ለድር ጣቢያ አፈጻጸም ማመቻቸት ሁለት ቁልፎች ናቸው።
የNginxን የመሸጎጫ ባህሪ በማንቃት፣ የማይንቀሳቀሱ ሀብቶች (እንደ ምስሎች እና የJS ፋይሎች ያሉ) በማህደረ ትውስታ ውስጥ ሊሸጎጡ ይችላሉ ፣ በዚህም የአገልጋይ ጭነትን በእጅጉ ይቀንሳሉ።
በተጨማሪም የ gzip መጭመቂያ ተግባርን ማብራት የሚተላለፈውን የውሂብ መጠን ይቀንሳል እና የድረ-ገጽ ፍጥነትን ያሻሽላል.
gzip on;
gzip_types text/plain application/javascript;
5. የNginx ሀብት አጠቃቀምን ይተንትኑ
በመጨረሻም፣ ሁሉንም ከላይ የተጠቀሱትን ማሻሻያዎች ካጠናቀቁ ነገር ግን Nginx አሁንም ብዙ ሲፒዩ ይወስዳል፣ ለጥልቅ ትንታኔ አንዳንድ መሳሪያዎችን መጠቀም ሊኖርብዎ ይችላል።
使用 top ወይም ፡፡ htop የሂደቱን የእውነተኛ ጊዜ የሃብት ፍጆታ ይመልከቱ, ማለፍ strace የስርዓት ጥሪዎችን መከታተል ወይም መጠቀም nmon የአፈጻጸም ሪፖርቶችን ይፍጠሩ. የ Nginxን ትክክለኛ አሠራር በጥልቀት በመተንተን ብቻ የበለጠ ትክክለኛ ማስተካከያ ማድረግ እንችላለን።
ማጠቃለያ
የNginx's CPU አጠቃቀም ሲጨምር አትደናገጡ። ተገቢ ባልሆነ ውቅር ወይም ከልክ ያለፈ ትራፊክ ብቻ ሊከሰት ይችላል።
በተመጣጣኝ ማስተካከያዎች worker_processes 和 worker_connectionsመሸጎጫ በማንቃት ፣የጊዜ ማብቂያዎችን እና የፋይል ገላጭዎችን በማመቻቸት በ Nginx ላይ ያለውን የጭነት ግፊት በከፍተኛ ሁኔታ መቀነስ ይችላሉ።
Nginx በትክክል ከተመቻቸ ለድር ጣቢያዎ ጥሩ አፈጻጸም የሚሰጥ ኃይለኛ የድር አገልጋይ ነው።
ያስታውሱ፣ ማንኛውም ችግር በሳይንሳዊ መንገድ ሊፈታ ይችላል፣ እና የአገልጋይ አፈጻጸምን ማመቻቸትም ከዚህ የተለየ አይደለም ።
የንኪንክስን ከፍተኛ ብቃት ለመጠበቅ ወቅታዊ ክትትል እና ማስተካከያዎች ቁልፍ ናቸው። እነዚህን ቴክኒኮች ከተለማመዱ፣ ድር ጣቢያዎ ከፍተኛ ትራፊክ ወይም ተንኮል አዘል ጥቃቶች ቢኖሩበትም ደህንነቱ የተጠበቀ ይሆናል።
ይህ ጽሑፍ እንዳነሳሳዎት ተስፋ አደርጋለሁ፣ ፍጠን እና የእርስዎን Nginx ያሻሽሉ!
በቼን ዌይሊያንግ ጦማር ( https://www.chenweiliang.com/ ) ላይ የተጋራው "በNginx አገልጋይ ላይ ከፍተኛ የሲፒዩ ጭነት እና ከፍተኛ የሂደት ማህደረ ትውስታ አጠቃቀምን እንዴት መቋቋም እንደሚቻል?" የሚለው ጽሑፍ ለእርስዎ ጠቃሚ እንደሚሆን ተስፋ እናደርጋለን።
የዚህን ጽሑፍ ሊንክ ለማጋራት ነፃነት ይሰማዎ፦ https://www.chenweiliang.com/cwl-32093.html
