Gợi ý cần thiết để gỡ lỗi tại sao ps -ef bị kẹt


7

Một vài quy trình của tôi tiêu thụ 100% cpu. Tôi đang cố gắng tìm ra kịch bản nào gây ra nó

Tôi đã thử chạy strace ps -ef:

open("/proc/PID/status", O_RDONLY) = 6
read(6, "Name:\textract\nState:\tR (running)"..., 1023) = 1023
close(6) = 0
open("/proc/PID/cmdline", O_RDONLY) = 6
read(6,

Vì vậy, nó bị mắc kẹt khi cố gắng đọc /proc/PID/cmdline. Tôi đã thử catđiều đó, và nó lại bị mắc kẹt. Một cái gì đó rõ ràng là vặn trong hạt nhân; Tôi nên thử gì tiếp theo?

Lưu ý: khởi động lại không hoạt động - nếu tôi tắt thủ công, sự cố sẽ bắt đầu lại. Tôi đang sử dụng SUSE Linux Enterprise Server 11 (x86_64), Linux 2.6.27.19


Chỉnh sửa : ps -etạo đầu ra và tôi thấy có quá nhiều greps. Số lượng greps khác nhau: 250, 450, và bây giờ tôi thấy khoảng 520 greps. Tôi truy ngược lại và thấy nó là kết quả của một kịch bản cron. Tôi vẫn phải hiểu những kịch bản cron đó. Có, tophiển thị kết quả. Chúng tôi tự tắt máy chủ 2 ngày trở lại. Hệ thống đã chạy từ 2 ngày qua. Tôi thấy một số công cụ tiên tri chạy mọi lúc. Tôi vừa làm bài kiểm tra bộ nhớ, không phát hiện ra lỗi


Phân phối và phiên bản nào? Phiên bản kernel nào? Kiến trúc gì? Có ps -esản xuất đầu ra? Thế còn top? Hệ thống này đã chạy trong một thời gian dài, nó thường chạy là gì? Bạn đã thực hiện một bài kiểm tra trí nhớ gần đây? Không thể đọc /proc/$pid/cmdlinetrông giống như một lỗi kernel hoặc khai thác.
Gilles 'SO- ngừng trở nên xấu xa'

Các quá trình tiêu thụ hầu hết CPU là gì? Những bó hoa greps? Có lẽ con lợn là một số truy vấn xấu bằng văn bản cho Oracle?
vonbrand

Câu trả lời:


1

Có điều đó chỉ mới ngày hôm qua. Vấn đề là, một quá trình ở trạng thái "giấc ngủ không bị gián đoạn", được hiển thị là trạng thái D ở trên cùng. ls / Proc / không trả lại và không được hủy bỏ. ps -ef không trở lại và không bị hủy bỏ.

Nếu khởi động lại không giúp bạn có thể có một khu vực xấu trên đĩa DVD hoặc đĩa cứng của bạn và quá trình PID đang cố đọc ở đó trong khi khởi động. Vì vậy, kỹ thuật khởi động lại giúp, nhưng lỗi lại tự động xảy ra.

Kiểm tra với đầu nếu quá trình thực sự ở trạng thái D, sau đó tiếp tục từ đó. Khởi động máy tính mà không cần gọi quá trình này (hệ thống cứu hộ). Sau đó bắt đầu chương trình phân tầng nó và xem tập tin nào nó truy cập. Tôi đặt cược một tập tin có các thành phần xấu.


0

Dường như grep bị treo và do công việc định kỳ lập kế hoạch, một quy trình khác sẽ bắt đầu hoạt động sau một khoảng thời gian nhất định (như được viết trong crontab). Nhiều quy trình sẽ dẫn đến một hệ thống không phản hồi

Hãy thử phương pháp gỡ lỗi sau:

  • Thay đổi mục crontab để tăng khoảng thời gian tập lệnh (để tập lệnh treo của bạn không được thực thi nhiều lần)
  • Ghi lại đầu ra của đầu trong một khoảng
  • Đi qua cây quy trình từ các bản ghi trên cùng và sau đó tìm quy trình mà nó đang treo
  • Sau đó duyệt qua mẫu mã trong đó điều tương tự đang được gọi.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.