Điểm:1

Làm cách nào để chẩn đoán một ứng dụng máy chủ Java đang chết lặng lẽ?

lá cờ cn

Chúng tôi chạy một cụm ứng dụng máy chủ Java Spring trên các phiên bản AWS EC2 chạy Centos 7. Chúng tôi có các trình theo dõi tình trạng trên chúng và thỉnh thoảng một cảnh báo sẽ kêu và chúng tôi sẽ thấy rằng quy trình Java đã lặng lẽ biến mất. Chúng tôi không thể tìm thấy gì trong bất kỳ nhật ký nào...dù là nhật ký của chính chúng tôi hay hệ thống.Chúng tôi có một "catch Throwable" bên ngoài xung quanh mã của chính chúng tôi để ghi lại những gì nó bắt được, nhưng chúng tôi chạy Tomcat, mã này có thể có các luồng riêng. Chúng tôi đã thêm ghi nhật ký bổ sung để cố ghi lại khoảnh khắc khi nó biến mất, nhưng cho đến nay, điều đó không mang lại thông tin gì.

Tôi đã xem qua câu hỏi này: Cách tìm hiểu lý do tại sao một quy trình Java chết không dấu vết trong Linux. Tôi thấy không có gì hữu ích ở đó.

Chúng tôi hiện không thể đưa trình khởi chạy các quy trình này vào một giải pháp. Đó là một câu chuyện dài. Hãy tin tôi rằng chúng ta đã cố gắng đi theo con đường đó.

Bất kỳ đề xuất? Tôi tự hỏi liệu có lẽ tôi nên bọc quy trình Java trong một quy trình mẹ bên ngoài để giám sát cẩn thận và ghi nhật ký tất cả các tín hiệu từ quy trình con Java. Tôi tự hỏi liệu có giải pháp sẵn có nào mà tôi chưa tìm thấy không. bất kì ý kiến ​​nào đều được đánh giá cao.

Michael Hampton avatar
lá cờ cz
Chính xác thì bạn bắt đầu những ứng dụng này như thế nào?
CryptoFool avatar
lá cờ cn
Chúng tôi đang sử dụng Chef Habitat, nhưng chúng tôi đang chuyển sang một thứ khác và chúng tôi không muốn chạm vào thiết lập của nó. Nó rất tệ trong việc quản lý quy trình mặc dù nó đề xuất làm như vậy nên chúng tôi đã vô hiệu hóa tất cả các tính năng quản lý quy trình của nó. Tôi không muốn đến đó. Tôi có thể dừng máy chủ đang chạy chính thức và sau đó chạy phiên bản của riêng mình theo cách thủ công hoặc thông qua trình quản lý quy trình khác nếu cần. Tôi không biết nếu thiết lập như vậy sẽ gây ra vấn đề tương tự. Nếu không, ít nhất chúng ta sẽ nghi ngờ chính Habitat hơn.
CryptoFool avatar
lá cờ cn
Tôi đã xem xét xem systemd có thể làm gì cho tôi. Thoạt nhìn, điều đó có vẻ phức tạp và không nhất thiết hữu ích. Tôi biết có những người quản lý quy trình khác ngoài kia. Tôi hy vọng tìm được một ứng dụng dành cho các tình huống gỡ lỗi và/hoặc khắc phục sự cố như của tôi. Tôi là một lập trình viên, không phải quản trị viên hệ thống, vì vậy tôi hoàn toàn bình thường với tất cả những điều này.
Michael Hampton avatar
lá cờ cz
https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html#deployment.installing.nix-services.system-d
CryptoFool avatar
lá cờ cn
@MichaelHampton - cảm ơn, nhưng câu hỏi của tôi không phải là cách cài đặt dịch vụ trong systemd. Tôi biết làm thế nào để làm điều đó. Câu hỏi đặt ra là liệu bằng cách để systemd quản lý thời gian tồn tại của ứng dụng/dịch vụ của tôi, nó có thể cho tôi một số dấu hiệu về lý do tại sao ứng dụng của tôi chết mà tôi sẽ không lấy từ các nguồn hiện có. Nếu nó có thể làm được điều này, thì tôi cần thực hiện loại cấu hình nào để lấy được nhiều thông tin nhất có thể từ systemd khi ứng dụng của tôi biến mất?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.