0

我正在使用 oink 来帮助确定应用程序中内存膨胀的原因,但我很难理解 oink 产生的输出(或基于它做出任何可行的决定)。如果有一些文档或博客可以更详细地解释,那将非常有用(尽管我找不到任何东西)。

例如,我通过 oink 运行日志得到以下输出:

---- MEMORY THRESHOLD ----
THRESHOLD: 10 MB

-- SUMMARY --
Worst Requests:
1. May 13 22:59:15, 69848 KB, api#action_1
2. May 13 22:56:15, 58128 KB, application#js_action
3. May 13 23:10:28, 12108 KB, application#js_action
4. May 13 23:10:46, 12108 KB, api#action_2
5. May 13 23:11:16, 12108 KB, api#update_action
6. May 13 23:11:21, 12108 KB, api#update_action
7. May 13 23:12:44, 11704 KB, api#update_action
8. May 13 23:13:44, 11704 KB, api#product_action
9. May 13 23:14:42, 11704 KB, application#js_action
10. May 13 23:16:11, 11704 KB, application#js_action

Worst Actions:
14, application#js_action
5, api#update_action
4, api#action_1
2, api#action_2
1, admin/products#index
1, admin/users#index
1, api#update_product
1, api#product_action

Aggregated Totals:
Action                          Max     Mean    Min     Total   Number of requests
application#js_action           58128   14408   10448   201724  14
api#action_1                    69848   25523   10664   102092  4
api#update_action               12108   11363   10448   56816   5
api#action_2                    12108   11512   10916   23024   2
api#product_action              11704   11704   11704   11704   1
api#update_product              10916   10916   10916   10916   1
admin/products#index            10548   10548   10548   10548   1
admin/users#index               10500   10500   10500   10500   1

如果有人可以帮助我理解输出,将不胜感激。例如,每一列的含义是什么(我知道它们是内存,但它是动作占用的内存总量吗?)

*注意 - 这些结果是使用内存选项运行的(非活动记录)

4

1 回答 1

1

让我们从标题开始:

---- MEMORY THRESHOLD ----
THRESHOLD: 10 MB

这给出了内存阈值的当前设置。即 10MB ,您可以使用 -m 选项更改它。

示例 oink -m 20 path_to_log

接下来是总结部分:

-- SUMMARY --
Worst Requests:
1. May 13 22:59:15, 69848 KB, api#action_1
2. May 13 22:56:15, 58128 KB, application#js_action
3. May 13 23:10:28, 12108 KB, application#js_action
4. May 13 23:10:46, 12108 KB, api#action_2
5. May 13 23:11:16, 12108 KB, api#update_action
6. May 13 23:11:21, 12108 KB, api#update_action
7. May 13 23:12:44, 11704 KB, api#update_action
8. May 13 23:13:44, 11704 KB, api#product_action
9. May 13 23:14:42, 11704 KB, application#js_action
10. May 13 23:16:11, 11704 KB, application#js_action

它显示了从一开始就向服务器发出的最差请求及其相应的时间戳。

接下来是总结部分:

Worst Actions:
14, application#js_action
5, api#update_action
4, api#action_1
2, api#action_2
1, admin/products#index
1, admin/users#index
1, api#update_product
1, api#product_action

此部分包含对特定操作的请求数。

例如:application#js_action 被调用了 14 次,它是内存使用量最差的之一。您可以查看以下部分以了解其实际使用的内存数量。

这里我们可以看到请求数为 14。Max/Min 是 14 个请求之一使用的最大/最小内存。平均值是所有 14 个请求内存使用的平均值。

Total 是所有请求的内存使用量之和。

Aggregated Totals:
Action                          Max     Mean    Min     Total   Number of requests
application#js_action           58128   14408   10448   201724  14
api#action_1                    69848   25523   10664   102092  4
api#update_action               12108   11363   10448   56816   5
api#action_2                    12108   11512   10916   23024   2
api#product_action              11704   11704   11704   11704   1
api#update_product              10916   10916   10916   10916   1
admin/products#index            10548   10548   10548   10548   1
admin/users#index               10500   10500   10500   10500   1

这三个部分都是依赖的。如果您查看“汇总总数”。您的应用程序#js_action 的最大内存使用量为58128,如果您想知道此操作的时间,您可以查看第一部分“最差请求”。它有记录

2. May 13 22:56:15, **58128 KB**, application#js_action

现在您知道最糟糕的操作会首先修复它们,然后去寻找最糟糕的请求并找出它在特定时间发生的原因,可能是您正在运行一些 cronjob,这使您的服务器变慢。

于 2014-05-15T09:48:06.740 回答