რა უნდა გავაკეთო, თუ Nginx სერვერს აქვს CPU მაღალი დატვირთვა და მეხსიერების პროცესის გამოყენება?

სამსახურში მოულოდნელად აღმოაჩინეთ, რომ Nginx-ის CPU-ის გამოყენება ცაში გაიზარდა? კიდევ უფრო უარესი, Nginx-ის მრავალჯერადი მუშა პროცესები გიჟურად მოიხმარენ რესურსებს ყოველ ჯერზე, როცა პროცესებს ვუყურებ.

ამ სცენის დანახვისას თავი გიცხელებს და ვერ იყვირებ: "ღმერთო ჩემო, სერვერი აფეთქდება, არ ინერვიულო, ეს არ ნიშნავს რომ შენი სერვერი "დასრულდება?" მაგრამ Nginx ჩვენ გვჭირდება, რომ გააკეთოთ ყოვლისმომცველი ოპტიმიზაცია!

Nginx-ის გადაჭარბებული დატვირთვის მიზეზების ანალიზი

რა უნდა გავაკეთო, თუ Nginx სერვერს აქვს CPU მაღალი დატვირთვა და მეხსიერების პროცესის გამოყენება?

ჯერ უნდა გავარკვიოთ,რატომ ხდება ნგინქსი მოულოდნელად "გამოიწურება"?პრობლემის მრავალი მიზეზი არსებობს, ნუ გეშინიათ, ერთად გავარკვიოთ ქვემოთ.

1. არაგონივრული კონფიგურაცია

Nginx კონფიგურაციის ფაილში ყველაზე მნიშვნელოვანი წერტილია worker_processes. ეს პარამეტრი განსაზღვრავს Nginx-ის მიერ დაწყებული პროცესების რაოდენობას.

  • თუ თქვენ დააკონფიგურირებთ ძალიან ცოტა მუშა პროცესს, პროცესორის დატვირთვა გაიზრდება, თუ ძალიან ბევრს დააკონფიგურირებთ, მეხსიერება არასაკმარისი იქნება.
  • თქვენ უნდა იპოვოთ ბალანსის წერტილი, მაგალითად,დააყენეთ worker_processes CPU ბირთვების რაოდენობაზე 1-2-ჯერ.
  • თუ თქვენ გაქვთ 4 ბირთვი, მაშინ სცადეთ worker_processes 4 ან პირდაპირ დააყენეთ auto.

2. ვიზიტები მატულობს

ზოგჯერ Nginx-ის დატვირთვა მოულოდნელად იზრდება არა იმიტომ, რომ შეცდომა დაუშვით, არამედ იმიტომ, რომ ვიზიტების რაოდენობა ძალიან მაღალია.უაღრესად ერთდროული წვდომის მოთხოვნები გამოიწვევს Nginx-ის მუშა პროცესის გადატვირთვას., ყველა პროცესი გადატვირთულია და CPU და მეხსიერება ასევე სავსეა. ამ დროს შეიძლება დაგჭირდეთ სერვერის რესურსების გაუმჯობესება, როგორიცაა CPU ბირთვების რაოდენობის გაზრდა ან მეხსიერების გაზრდა. რა თქმა უნდა, ეს ასევე შეხსენებაა: არ დაგავიწყდეთ განიხილოთ CDN გადმოტვირთვა ან დატვირთვის დაბალანსება.

3. წააწყდა მავნე თავდასხმებს

იყო "ძალიან პოპულარული" ინტერნეტში ყოველთვის არ არის კარგი. თუ აღმოაჩენთ, რომ CPU-ის გამოყენება არანორმალურად მაღალია და მოთხოვნილი IP-ს წყარო საეჭვოა, ძალიან სავარაუდოა, რომ თქვენს ვებსაიტს განიცდის DDoS შეტევა. ამ დროს,თქვენ დაუყოვნებლივ უნდა განათავსოთ firewall ან შეზღუდოთ წვდომის სიხშირემაგალითად, Nginx-თან ერთად მიმდინარე შემზღუდავი მოდულის გამოყენება ან IP შავი სიის დაყენება.

როგორ მოვაგვაროთ Nginx პროცესის მეხსიერების მაღალი გამოყენების პრობლემა?

ასე რომ, საკითხავია, რატომ იღებს Nginx-ის მუშა პროცესი ამდენ რესურსს? ჩვენ უნდა დავიწყოთ კონფიგურაციით და ეტაპობრივად მისი ოპტიმიზაცია.

კონფიგურაციის მეთოდი

  1. გახსენით Nginx კონფიგურაციის ფაილი: ჩვეულებრივ, Nginx-ის ძირითადი კონფიგურაციის ფაილი მდებარეობს /etc/nginx/nginx.conf.

  2. Აწყობა worker_processes: ნაპოვნია კონფიგურაციის ფაილში events ბლოკები, პარამეტრები worker_processes ღირებულება. თუ არა events დაბლოკვა, თქვენ უნდა შექმნათ ერთი.

    nginx
    events {
    worker_connections 1024;
    use epoll;  # 或者适用于操作系统的其他事件模型
    }

1. სწორად დააყენეთ worker_connections

ნგინქსი worker_connections პარამეტრი განსაზღვრავს კავშირების მაქსიმალურ რაოდენობას, რომელსაც შეუძლია თითოეული მუშა პროცესის დამუშავება. თუ ის ძალიან მცირეა, ეს გავლენას მოახდენს კონკურენტულობის შესრულებაზე, თუ ის ძალიან დიდია, შეიძლება მოიხმაროს ძალიან ბევრი რესურსი.

როგორ გამოვთვალოთ შესაბამისი მნიშვნელობა?

თუ ვივარაუდებთ, რომ თქვენ გაქვთ 4 ბირთვიანი CPU და 16 GB ოპერატიული მეხსიერება, უსაფრთხო საწყისი წერტილი არის worker_connections 4096.

მაგრამ თუ თქვენს ვებსაიტს აქვს ბევრი ტრეფიკი, გაითვალისწინეთ ამ მნიშვნელობის გაზრდა 8192-მდე, რათა დარწმუნდეთ, რომ თითოეულ პროცესს შეუძლია გაუმკლავდეს საკმარის მოთხოვნებს.

events {
    worker_connections 8192;
}

ამ გზით Nginx-ის დამუშავების ძალა მნიშვნელოვნად გაუმჯობესდება.

2. დაარეგულირეთ keepalive_timeout

Nginx-ისთვის კიდევ ერთი ძირითადი პარამეტრია მოთხოვნების დასამუშავებლად keepalive_timeout.

ეს პარამეტრი განსაზღვრავს, რამდენ ხანს შეიძლება შენარჩუნდეს კლიენტის კავშირი სერვერთან.

თუ ძალიან დიდხანს დაყენებულია, ის ძალიან ბევრ კავშირის რესურსს დაიკავებს..

შეგიძლიათ სცადოთ keepalive_timeout დააყენეთ 15 წამზე კავშირის შესანარჩუნებლად და რესურსების გასათავისუფლებლად.

keepalive_timeout 15;

3. ფაილის აღწერის ლიმიტების ოპტიმიზაცია

ნაგულისხმევად,Linux სისტემას აქვს ლიმიტი ფაილის აღწერების რაოდენობაზე, რომელიც შეიძლება გაიხსნას თითოეული პროცესით.

თუ 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 კვლავ იკავებს უამრავ CPU-ს, შეიძლება დაგჭირდეთ სიღრმისეული ანალიზისთვის გარკვეული ინსტრუმენტების გამოყენება.

使用 tophtop იხილეთ პროცესის რესურსის მოხმარება რეალურ დროში,გავლა strace სისტემური ზარების თვალყურის დევნება ან გამოყენება nmon შექმენით შესრულების ანგარიშები. მხოლოდ Nginx-ის რეალური ფუნქციონირების ყოვლისმომცველი ანალიზით შეგვიძლია უფრო ზუსტი დაყენება.

რომ შევაჯამოთ

არ ინერვიულოთ, როდესაც Nginx-ის CPU-ის გამოყენება იზრდება. ეს შეიძლება გამოწვეული იყოს არასწორი კონფიგურაციით ან გადაჭარბებული ტრაფიკით.

გონივრული კორექტირების გზით worker_processesworker_connectionsქეშირების ჩართვით, დროის ამოწურვის ოპტიმიზაციით და ფაილების აღწერით, შეგიძლიათ მნიშვნელოვნად შეამციროთ დატვირთვის წნევა Nginx-ზე.

Nginx არის მძლავრი ვებ სერვერი, რომელიც სათანადო ოპტიმიზებისას შეუძლია უზრუნველყოს თქვენი ვებსაიტის შესანიშნავი შესრულება.

გახსოვდეთ, ნებისმიერ კითხვაზე პასუხის გაცემა შესაძლებელიამეცნიერებამისი გადაჭრის მეთოდები, სერვერის მუშაობის ოპტიმიზაცია არ არის გამონაკლისი.

მონიტორინგი და დროულად დარეგულირება, არის Nginx-ის ეფექტურად მუშაობის გასაღები. თუ ამ ტექნიკის დაუფლებას შეძლებთ, თქვენი ვებსაიტი უსაფრთხო იქნება მაღალი ტრაფიკის ან მავნე თავდასხმების დროსაც კი.

ვიმედოვნებ, რომ ამ სტატიამ გააჩინა თქვენ, იჩქარეთ და გააუმჯობესეთ თქვენი Nginx!

იმედი ჩენ ვეილიანგის ბლოგი ( https://www.chenweiliang.com/ ) გააზიარა "რა უნდა გავაკეთო, თუ Nginx სერვერის CPU დატვირთვა და მეხსიერების დამუშავება მაღალია?" 》, დაგეხმარება.

კეთილი იყოს თქვენი მობრძანება ამ სტატიის ბმულის გასაზიარებლად:https://www.chenweiliang.com/cwl-32093.html

მეტი ფარული ხრიკის გასახსნელად🔑, კეთილი იყოს თქვენი მობრძანება ჩვენს Telegram არხზე!

გააზიარეთ და მოიწონეთ თუ მოგეწონათ! თქვენი გაზიარებები და მოწონებები ჩვენი მუდმივი მოტივაციაა!

 

评论

თქვენი ელფოსტის მისამართი არ გამოქვეყნდება. გამოყენებულია აუცილებელი ველები * ლეიბლი

გადაახვიეთ ზემოთ