【问题标题】:pstack equivalent in erlangerlang中的pstack等价物
【发布时间】:2020-11-24 19:49:58
【问题描述】:

当 Erlang 系统挂起时,我想知道系统在此期间在做什么。对于一个 c/c++ 程序,我可以轻松地运行 pstack,但是我在 Erlang 中没有找到一个方便的工具。

  1. Erlang 中的 pstack 等价物是什么?

  2. 其实我是想查看下面进程的运行堆栈跟踪。

    "/opt/couchbase/lib/erlang/erts-5.10.4.0.0.1/bin/beam.smp -P 327680 -K true -- -root /opt/couchbase/lib/erlang -progname erl --... "
    

    然后我启动了一个新的 Erlang shell 并启动了 webtool 并检查了 appmon 但是我找不到上面的应用程序。是什么原因造成的?

谢谢

【问题讨论】:

    标签: erlang pstack


    【解决方案1】:

    关于pstack 等价物,您是否阅读过官方指南中的Erlang Profiling?它为您提供了很多示例,说明如何分析您的应用程序并找到您的代码卡在哪里。

    另一个有用的工具是observer,它将显示所有工作进程、CPU 使用率、进程堆栈和更多信息。

    如果您在这些工具中看不到任何东西,可以尝试使用Erlang debugger

    现在关于 couchbase,如果您的应用程序当前正在运行,您可以使用 Erlang shell 连接到它并启动之前引用的命令和应用程序。

    我不知道你是单独使用couchbase还是和couchdb一起使用,但是,如果你想从命令行使用observer或其他工具,你可以用-i标志开始couchdb

    # -i use the interactive Erlang shell
    couchdb -i
    

    如果您的应用程序在没有 GUI 的情况下远程运行,您可以使用 etop,它是 observer 的 CLI 替代品。如果您不想直接从 Erlang shell 运行它,也可以将 etop 输出转储到文件中。 IHMO,如果您想了解有关 I/O 或调试的更多信息,请使用eproffprof 和其他带有转储文件的分析工具(另请参阅eep 分析工具,易于使用)。

    另一种选择,如果您使用 SSH 并想查看 observer 窗口,您可以使用 X11Forwarding 和 ssh:ssh -X $yourserverssh -Y $yourserver,然后在您的 Erlang shell 中运行 observer:start().

    【讨论】:

    • 谢谢!但我还有一些问题。当我想尝试观察者时,我发现它是一个 gui 程序,我现在没有用于此目的的 GUI env。
    • 谢谢!但我还有一些问题。当我想尝试观察者时,我发现它是一个 gui 程序,我现在没有用于此目的的 GUI env。当我想使用observerweb时,我会运行github.com/freecnpro/observerweb/issues/4。关于 -i 标志,根据我的理解,如果有一些 erlang 进程,无论它是 couchdb 还是 couchdb -i 或根本不是 couchdb,我认为它应该能够使用上述工具进行验证。我可能错了,我提出这个只是因为我想刷新我的知识。谢谢!
    • 好的,编辑了答案,其中包含有关不带 GUI 的分析工具的更多信息。希望这会有所帮助! :)
    猜你喜欢
    • 2018-12-02
    • 2019-11-03
    • 1970-01-01
    • 2011-05-18
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多