2012-06-15 8 views
11

Tôi phục vụ phần mềm của mình bằng hành khách. Nó sinh ra nhiều quá trình ruby.Chỉ sử dụng thần để giết

Đôi khi một trong những hồng ngọc này trở nên cồng kềnh và tôi muốn nó chết.

Tôi đã hy vọng sẽ sử dụng thần cho mục đích đó. Ý tưởng của tôi là theo dõi tất cả những viên hồng ngọc này và nếu nó tiêu thụ hơn 500MB bộ nhớ cho 3 chu kỳ, thần nên cố gắng duyên dáng giết nó. Nếu nó vẫn còn sống trong hơn 5 phút thì thần nên giết nó không duyên dáng.

Dường như với tôi rằng thần luôn luôn cố gắng để chạy các dịch vụ một lần nữa, vì vậy nó buộc chúng tôi phải cung cấp một lệnh bắt đầu. Có thể sử dụng thần chỉ để giết những hành vi xấu và để cho hành khách sinh ra đưa họ trở lại sống khi cần thiết?

Trả lời

4

Trả lời cho câu hỏi của bạn nằm trong câu hỏi. bạn có thể giết các quá trình ruby ​​bằng cách sử dụng god gem đó là quy trình xử lý quá trình ruby ​​của những kẻ github.

về cơ bản, đây là cách hoạt động:

  1. configure thần để giám sát quá trình nó có thể là bất cứ điều gì từ apache, hành khách, lai hay chỉ là tập tin đơn giản thực hiện một nhiệm vụ kéo dài.
  2. Đặt điều kiện trong tệp cấu hình của Thiên Chúa dựa trên đó Thiên Chúa sẽ thực thi một số mã được xác định trước.

đây là ví dụ đơn giản (được lấy từ docs). xem xét việc này như tập tin quá trình chạy dài chạy undefiantly mà chúng tôi muốn theo dõi cho sử dụng bộ nhớ, cho phép gọi nó là simple.rb

loop do 
    puts 'Hello' 
    sleep 1 
end 

bây giờ, chúng ta cài đặt god đá quý & cấu hình nó là chạy như superuser để nó có thể giết/các quá trình sinh sản và tiếp theo tạo một tệp cấu hình. Ví dụ (cũng lấy từ docs):

God.watch do |w| 
    w.name = "simple" 
    w.start = "ruby /full/path/to/simple.rb" 
    w.keepalive(:memory_max => 500.megabytes) 
end 

Ở đây, như bạn có thể đã có ý tưởng nếu sử dụng bộ nhớ quá trình đi trên 500 MB, thần sẽ khởi động lại nó. đây là vài nguồn lực mà có thể giúp đỡ, nếu bạn đang bắt đầu với quản lý quá trình sử dụng god đá quý:

Bây giờ, hãy nhớ ALL con hình tượng cho god thực sự là mã ruby ​​hợp pháp để bạn có thể sáng tạo & làm đủ mọi thứ.

cuối cùng, nếu bạn thường xuyên tìm cho mình chạy quá trình dài chạy, tôi khuyên bạn thử JRuby đó là hoạt động tốt hơn nhiều với tiến trình đang chạy dài do JVM & LOT nhanh hơn so với MRI

2

tôi sử dụng cùng một thiết lập trên nhiều dự án của tôi và có cùng vấn đề rò rỉ bộ nhớ.Sau khi rối tung xung quanh với giám sát, chúng tôi quyết định sử dụng các tính năng hành khách để giải quyết nó. Cụ thể là nó cho phép cài đặt (ví dụ) PassengerMaxRequests 300 tắt mọi phiên bản khi nó đã phục vụ số lượng yêu cầu đó.

Nếu bạn sử dụng, hãy đảm bảo rằng PassengerMinInstances được đặt thành 0 vì nó đặt trước cài đặt cho yêu cầu tối đa.