Điều gì có thể khiến TẤT CẢ các dịch vụ trên máy chủ ngừng hoạt động mà vẫn phản hồi ping? và làm thế nào để tìm ra


9

Điều đó đã xảy ra với tôi hai lần trong vài ngày sau khi máy chủ của tôi ngừng hoạt động hoàn toàn, nghĩa là http, ssh, ftp, dns, smtp, về cơ bản TẤT CẢ các dịch vụ đều ngừng phản hồi, như thể máy chủ đã bị tắt, trừ khi nó vẫn phản hồi ping , đó là những gì hầu hết các tôi đệm.

Tôi có một số tập lệnh php gây ra tải rất lớn (cpu và bộ nhớ) trên máy chủ trong các đợt ngắn, được sử dụng bởi một nhóm người dùng nhỏ, nhưng thường thì máy chủ "sống sót" hoàn toàn với các cụm này và khi nó ngừng hoạt động không bao giờ trùng với các đỉnh như vậy trong việc sử dụng (Tôi không nói rằng nó không thể liên quan, nhưng nó không xảy ra ngay sau đó).

Tôi không yêu cầu bạn kỳ diệu có thể cho tôi biết nguyên nhân cuối cùng của những sự cố này, câu hỏi của tôi là: có một quá trình duy nhất mà cái chết của họ có thể khiến tất cả các dịch vụ này bị hỏng đồng thời không? Điều buồn cười là tất cả các dịch vụ mạng đều ngừng hoạt động, ngoại trừ ping. Nếu máy chủ có 100% CPU bị ăn theo quy trình nào đó, nó cũng sẽ không phản hồi ping. Nếu apache bị sập vì (ví dụ) một tập lệnh php bị hỏng, điều đó sẽ chỉ ảnh hưởng đến http, chứ không phải ssh và dns .... vv

HĐH của tôi là Cent OS 5.6

Quan trọng nhất, sau khi khởi động lại máy chủ, tôi nên xem nhật ký hệ thống nào? / var / log / message không tiết lộ bất cứ điều gì đáng ngờ.

Câu trả lời:


8

( tl; dr vẫn phản hồi ping là hành vi dự kiến, kiểm tra mức sử dụng bộ nhớ của bạn)

Các yêu cầu echo ICMP (tức là ping) được xử lý bởi ngăn xếp mạng trong kernel, không có sự phụ thuộc nào khác.

Hạt nhân được gọi là "cư trú bộ nhớ", có nghĩa là nó sẽ luôn được giữ trong RAM và không thể hoán đổi vào đĩa như một ứng dụng thông thường có thể.

Điều này có nghĩa là trong các tình huống bạn hết các ứng dụng bộ nhớ vật lý bị tráo đổi sang đĩa, nhưng hạt nhân vẫn giữ nguyên vị trí của nó. Khi cả bộ nhớ vật lý và bộ nhớ trao đổi đều đầy (và hệ thống không thể quản lý các chương trình của bạn lâu), máy sẽ bị hỏng. Tuy nhiên vì a) kernel vẫn còn trong bộ nhớ và b) nó có thể đáp ứng các yêu cầu ping mà không cần sự trợ giúp của bất kỳ thứ gì khác, hệ thống sẽ tiếp tục phản hồi ping mặc dù mọi thứ đã chết.

Liên quan đến vấn đề của bạn, tôi rất nghi ngờ vấn đề bộ nhớ. Cài đặt "sysstat" và sử dụng lệnh "sar" để xem nhật ký của bộ nhớ / cpu / load / io, v.v. Tôi sẽ mong đợi vào thời điểm xảy ra sự cố bạn sẽ thấy cả 100% vật lý và trao đổi được sử dụng.

Tôi cũng sẽ xem xét việc xem dmesg hoặc / var / log / message cho bất kỳ dấu hiệu nào của kẻ giết người OOM (kẻ giết người ngoài bộ nhớ) đang được viện dẫn. Đây là hệ thống khẩn cấp của hạt nhân sẽ bắt đầu tiêu diệt các tiến trình trong trường hợp bộ nhớ bị cạn kiệt. Hiệu quả của nó phụ thuộc phần lớn vào quá trình đang bị giết. Một quá trình duy nhất ăn hết bộ nhớ sẽ bị giết một cách hiệu quả và giải phóng bộ nhớ, tuy nhiên một trang web dựa trên apache sẽ sinh ra các quy trình thay thế ngay khi một quy trình con bị giết.


+1 cho
OOM

Cảm ơn rất nhiều, tôi gần như chắc chắn đây là vấn đề, vì cả RAM và trao đổi đã đầy trước khi máy chủ bị lỗi. (Tôi có thể thấy số liệu thống kê của Người quản lý của ovh). Và có lẽ đó là một số tập lệnh php điên rồ của tôi sử dụng rất nhiều bộ nhớ. Nó đánh đố tôi tuy nhiên vì một vài lý do. (1) có vẻ như bộ nhớ bị php ăn hết không được giải phóng sau đó, nhưng điều đó sẽ không có ý nghĩa; (2) trong mọi trường hợp, tôi sẽ không mong muốn một hệ điều hành phù hợp sẽ chết hoàn toàn chỉ vì một (hoặc thậm chí một vài) quá trình sử dụng quá nhiều bộ nhớ ... Tôi sẽ mong đợi nó
matteo

từ chối phân bổ bộ nhớ cho các chương trình yêu cầu nó khi không đủ ram để hệ thống tiếp tục hoạt động chính xác ... Ý tôi là một chương trình lỗi hoặc thậm chí độc hại sẽ không bao giờ có thể phá hủy toàn bộ hệ thống ...
matteo

3
@matteo Linux có cái mà nó gọi là "overcommit": chỉ vì malloc()1GB ram của bạn không thực sự có nghĩa là bạn sẽ sử dụng nó, vì vậy trình quản lý bộ nhớ theo dõi xem bộ nhớ của bạn có bao nhiêu bộ nhớ và bao nhiêu bộ nhớ chương trình đã thực sự được sử dụng, và nó thực sự hoạt động tốt, hầu hết thời gian. Ít nhất, cho đến khi có nhiều hơn một chương trình thực sự muốn sử dụng tất cả 1GB mà nó nghĩ nó có.
DerfK

1
@matteo Tôi thấy không có dấu hiệu nào cho thấy đây là vấn đề OOM. Thông thường, kẻ giết người OOM sẽ chọn các quy trình cụ thể hoặc đáp ứng các tiêu chí nhất định, nhưng nó sẽ không luôn giết một daemon như ssh. Điều này chắc chắn là về phía I / O. Bạn đã không giải thích tình hình / thông số phần cứng của bạn như tôi yêu cầu trong câu trả lời của tôi.
ewwhite

5

Thông thường, đó là vấn đề hệ thống con I / O hoặc đĩa. Thông thường, điều này sẽ được kết hợp với mức trung bình tải hệ thống cực kỳ cao. Ví dụ, hệ thống chi tiết trong biểu đồ bên dưới trở nên không phản hồi (chưa thể ping được) khi tập lệnh chạy sai, khóa một loạt tệp và tải tăng lên 36 ... trên hệ thống 4 CPU.

nhập mô tả hình ảnh ở đây

Các dịch vụ đang chạy trong RAM và không yêu cầu truy cập đĩa tiếp tục chạy ... Do đó, ngăn xếp mạng (ping) đã hết, nhưng các dịch vụ khác bị đình trệ khi cần truy cập đĩa ... SSH khi khóa được tham chiếu hoặc tra cứu mật khẩu cần thiết. SMTP có xu hướng tắt khi tải trung bình đạt 30 hoặc hơn ...

Khi hệ thống ở trạng thái này, hãy thử điều khiển từ xa nmapđối với IP của máy chủ để xem có gì không.

Ghi nhật ký của bạn có thể không hoạt động nếu đây là vấn đề về đĩa hoặc lưu trữ ...

Bạn có thể mô tả các thiết lập phần cứng? Đây có phải là một máy ảo? Bố trí lưu trữ là gì?

Hơn cả việc đăng nhập, bạn muốn xem liệu bạn có thể vẽ biểu đồ hiệu năng hệ thống và hiểu khi điều này xảy ra. Xem nếu điều này tương quan với một hoạt động cụ thể.


Giả sử đây là vấn đề, Có cách nào để nói với SSH giữ (các) mật khẩu trong bộ nhớ không, vì vậy ngay cả khi máy chủ ở trạng thái này, tôi ít nhất có thể đăng nhập vào nó thông qua ssh và chạy một số lệnh để xem chuyện gì đang xảy ra vậy
matteo

1
Nếu đó là I / O, bạn cần đi đến tận cùng của vấn đề. Nếu đó là thời gian chờ của mảng đĩa hoặc tương tác trình điều khiển, thì nó khác với tập lệnh thực thi kém hoặc sự cố tranh chấp tài nguyên.
ewwhite
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.