我在生产中的一台机器运行一个elixir应用程序(无法访问iex,只能访问erl),我的任务是进行分析为什么我们要消耗大量CPU。这里的想法是启动观察器,检查“进程”选项卡,并查看减少最多的进程。
要连接,我正在关注博客中的教程:
他们的说明如下:
ssh user@public_ip "epmd -names"
获取应用程序的名称和使用的端口ssh -L 4369:user@public_ip:4369 -L 42877:user@public_ip:42877 user@public_ip
(默认情况下,4369是epmd端口,42877是应用程序的端口)erl -name "user@app_name" -setcookie "mah_cookie" -hidden -run observer
现在从理论上讲,我应该能够在机器上使用观察器。但是,我却遇到以下错误:
协议“ inet_tcp”:注册/收听错误:epmd_close
因此,在浏览了互联网的阴暗面之后,我决定使用sudo journalctl -f
检查计算机的所有日志,然后发现了这一点:
channel 3: open failed: administratively prohibited: open failed
my_app_name sshd[8917]: error: connect_to flame@99.999.99.999: unknown host (Name or service not known)
/scripts/watchdog.sh")
my_app_name CRON[9985]: pam_unix(cron:session): session closed for user flame
位置:
-name
:my_app_name 所以它告诉我,未知主机??我很困惑,因为99.999.99.999是机器本身的公共IP!
答案 0 :(得分:0)
经过3天的不间断搜索,我终于找到了行之有效的方法。 总而言之,我将所做的一切都放在这里。
本地计算机上的所有步骤:
> ssh remote-user@remote-ip "epmd -names"
epmd: up and running on port 4369 with data:
name super_duper_app at port 43175
ssh remote-user@remote-ip -L4369:localhost:4369 -L43175:localhost:43175
iex --name observer@127.0.0.1 --cookie super_duper_cookie
Node.connect :"super_duper_app@127.0.0.1"
> true
:observer.start
启动观察器后,从“节点”菜单中选择机器。
如果您尝试过此方法但没有成功,则可以检查以下几项内容: