2016-05-09 32 views
7

如何檢查Phoenix/Elixir/Erlang應用程序的正常運行時間?如果您這樣做:observer.start()並查看系統選項卡,您可以在統計區域中看到正常運行時間。但我希望能夠以編程方式提取該信息並將其包含在報告中。我已經想出了從哪裏獲得大部分數據,但我不知道它從哪裏獲得正常運行時間。如何檢查Phoenix/Elixir/Erlang應用程序的正常運行時間?

+0

在Erlang的外殼,如果你有最近版本的Erlang/OTP,您只需輸入「uptime()」。 – RichardC

回答

11

您可以使用statistics(runtime)

有關運行信息返回,以毫秒爲單位。

這是Erlang運行時系統中所有線程運行時間的總和,因此可以大於掛鐘時間。

或者statistics(wall_clock)

約掛鐘返回信息。 wall_clock可以以與運行時相同的方式在 中使用,不同之處在於實時測量值相對於運行時或CPU時間的 。

在這兩種情況下,您都需要在程序開始時調用它們以重置其定時器。當你想打印經過的時間只是做:

{_, Time1} = statistics(runtime). 

或者

{_, Time2} = statistics(wall_clock). 

因此,然後你將有Time1Time2的時間。欲瞭解更多信息,看看erlang:statistics/1

注:如果你想自二郎山VM開始,你可以從元組採取的第一個元素經過的總時間:{Total_Time, Time_Since_Last_Call} = statistics(wall_clock).

+5

首先,'runtime'參數對於這個問題沒有用處,因爲它是累積的調度器數量,而手冊頁的狀態則可能比掛鐘時間長。對於這個問題,使用'wall_clock'。其次,在程序開始時你並不需要調用它。無論何時調用它,返回元組的第一個數字都是總運行時間。第二個數字是自上次調用'statistics/1'以來的時間。對於這個問題,只需使用第一個數字。 –

相關問題