Sobes.tech
Middle+
225

როგორ განახორციელებთ სერვერის პრობლემების გადაჭრის პროცესს მაღალი დატვირთვის დროს? რა მაჩვენებლებს ანალიზდებით და რა utility-ებს გამოიყენებთ?

პასუხი AI-სგან

sobes.tech AI

მუშაობის მაღალი სიჩქარის მიზეზების გამოვლენის მიზნით სისტემის მეტრიკების ანალიზით დავიწყებ.

ანალიზისთვის ძირითადი მაჩვენებლები:

  • load average: პროცესების საშუალო რაოდენობა, რომლებიც ელიან შესრულებას. მაღალი მნიშვნელობა მიუთითებს CPU-ს გადატვირთვაზე ან შემოსავალი-გამოსავალი ოპერაციების მოლოდინზე.
  • CPU utilization: პროცესორის დროის გამოყენების პროცენტი. ეხმარება გაგებას, რომელი ნაწილი CPU-ს არის დაკავებული მომხმარებლის პროცესებით, სისტემური ზარებით ან თავისუფალია.
  • Memory utilization: ოპერატიული მეხსიერების გამოყენება. მაღალი მოხმარება შეიძლება გამოიწვიოს აქტიური swapping-ით, რაც მკვეთრად ამცირებს შესრულებას.
  • Disk I/O: წაკითხვის/დაწერის ინტენსივობა დისკებზე. მაღალი აქტივობა შეიძლება იყოს ბლოკი.
  • Network activity: გამავალი და შემომავალი ტრაფიკი, ქსელური კავშირების რაოდენობა. მაღალი დატვირთვა შეიძლება იყოს ქსელური პრობლემების ან DoS თავდასხმების შედეგი.
  • Process list: მიმდინარე პროცესების სია, მათი რესურსების მოხმარება, მდგომარეობა. ეხმარება კონკრეტული პროცესის გამოვლენაში, რომელიც ქმნის დატვირთვას.

დიაგნოსტიკური ხელსაწყოები:

  • top / htop: სისტემური რესურსებისა და პროცესების ინტერაქტიული მონიტორინგი რეალურ დროში. საშუალებას აძლევს პროცესების სორტირებას CPU-ს, მეხსიერების მოხმარების მიხედვით.

    # top -c // სრული ბრძანების ხაზი
    
  • vmstat: ვირტუალური მეხსიერების, პროცესების, CPU-ს და შემოსავალი-გამოსავალი აქტივობის ანგარიში.

    # vmstat 1 // ყოველ წამს
    
  • iostat: დისკის აქტივობის და შესრულების მონიტორინგი.

    # iostat -xz 1 // გაფართოებული გამოსავალი ყოველ წამს
    
  • netstat / ss: ქსელური კავშირების, მარშრუტების, ქსელური ინტერფეისების სტატისტიკის ინფორმაცია.

    # netstat -tunapl // TCP/UDP კავშირები, LISTEN სოკეტები, პორტები, PID
    # ss -tunapl
    
  • sar: სისტემური აქტივობის შეგროვება, ანგარიში და ანალიზი (CPU, მეხსიერება, დისკი, ქსელი). ხშირად გამოიყენება ისტორიული შესრულების ანალიზისთვის.

    # sar -u 5 5 // CPU ყოველ 5 წამში, 5 ჯერ
    # sar -d 5 5 // დისკი ყოველ 5 წამში, 5 ჯერ
    # sar -n DEV 5 5 // ქსელი ყოველ 5 წამში, 5 ჯერ
    
  • iftop / nethogs: ინტერფეისების ან პროცესების მიხედვით ქსელური ტრაფიკის ინტერაქტიული მონიტორინგი.

    # iftop -i eth0 // eth0 ინტერფეისის მონიტორინგი
    # nethogs eth0 // ტრაფიკის მონიტორინგი პროცესებზე eth0-ზე
    
  • dstat: უნივერსალური ხელსაწყო, რომელიც აერთიანებს vmstat, iostat, netstat შესაძლებლობებს.

    # dstat -c -m -d -n // CPU, მეხსიერება, დისკი, ქსელი
    
  • strace / lsof: სისტემური ზარების ტრასირება (strace) და გახსნილი ფაილების სია (lsof) კონკრეტული პროცესისთვის. სასარგებლოა პროგრამის ქცევის ღრმა ანალიზისთვის.

    # strace -p <PID> // პროცესის ტრასირება PID-ით
    # lsof -p <PID> // გახსნილი ფაილები PID-ით
    

პროცესი განმეორებით იქნება: მეტრიკებზე დაფუძნებული ბლოკის გამოვლენა, შესაბამისი ინსტრუმენტის გამოყენება დეტალებისთვის, მიზეზის ანალიზი (მაგ., კონკრეტული პროცესი), და შესაბამისი ზომების მიღება (მაგ., გადატვირთვა ან ოპტიმიზაცია, რესურსების გაზრდა). მნიშვნელოვანია ასევე შემოწმდეს პროგრამებისა და სისტემის ლოგები (journalctl, /var/log/*).