2016-05-09 15 views
7

Làm cách nào để kiểm tra thời gian hoạt động của ứng dụng Phoenix/Elixir/Erlang? Nếu bạn làm: observer.start() và nhìn vào tab System, bạn có thể thấy thời gian hoạt động trong khu vực Statistics. Nhưng tôi muốn có thể lấy thông tin đó theo chương trình và đưa nó vào báo cáo. Tôi đã tìm ra nơi để nhận được hầu hết các dữ liệu đó từ, nhưng tôi không thấy nơi nó kéo thời gian hoạt động từ.Làm cách nào để kiểm tra thời gian hoạt động của ứng dụng Phoenix/Elixir/Erlang?

+0

Trong vỏ Erlang, nếu bạn có một phiên bản Erlang/OTP gần đây, bạn có thể chỉ cần nhập "uptime()". – RichardC

Trả lời

11

Bạn có thể sử dụng một trong hai statistics(runtime):

Returns thông tin về thời gian chạy, trong mili giây.

Đây là tổng thời gian chạy cho tất cả các luồng trong hệ thống thời gian chạy Erlang và do đó có thể lớn hơn thời gian đồng hồ treo tường.

Hoặc statistics(wall_clock):

Returns thông tin về đồng hồ treo tường. wall_clock có thể được sử dụng trong cùng một cách như thời gian chạy, ngoại trừ thời gian thực được đo như trái ngược với để chạy hoặc thời gian CPU.

Trong cả hai trường hợp, bạn cần phải gọi cho họ ở đầu chương trình để đặt lại bộ hẹn giờ của họ. Khi bạn muốn in thời gian trôi qua chỉ làm:

{_, Time1} = statistics(runtime). 

Hoặc

{_, Time2} = statistics(wall_clock). 

Theo đó, và sau đó bạn sẽ có thời gian ở Time1 hoặc Time2. Để biết thêm thông tin hãy nhìn vào erlang:statistics/1

Lưu ý: Nếu bạn muốn tổng thời gian trôi qua kể từ khi Erlang VM bắt đầu bạn có thể mang các yếu tố đầu tiên từ tuple: {Total_Time, Time_Since_Last_Call} = statistics(wall_clock).

+5

Đầu tiên, đối số 'runtime' không hữu ích cho câu hỏi này, vì nó tích lũy trên số lượng các bộ lập lịch và theo trạng thái trang con người, nó có thể lớn hơn thời gian đồng hồ treo tường. Đối với câu hỏi này, sử dụng 'wall_clock'. Thứ hai, bạn không thực sự phải gọi điều này ở đầu chương trình của bạn. Số đầu tiên của bộ trả về là tổng thời gian chạy, bất kể khi nào bạn gọi nó. Số thứ hai là thời gian kể từ lần cuối bạn gọi là 'statistics/1'. Đối với câu hỏi này, chỉ cần sử dụng số đầu tiên. –

Các vấn đề liên quan