查找內存泄露的一次實戰

  • 通過top查看佔用做多的beam進程
  • 通過進程id3462查看進程啓動信息

命令:ps -aux|grep beam 找到啓動文件,節點名和cookie信息

  • remsh 對應的節點

erl -name test@127.0.0.1 -setcookie cookie -remsh node@127.0.0.1

  • erlang:memory()查看內存佔用

processes 進程佔用的內存;atom 原子佔用,binary二進制佔用,ets ets的內存的內存站喲個

  • 查看當前的進程創建數量

erlang:system_info(processes_count)

  • i()/i(進程信息)

查看當前進程信息

  • 查看當前執行情況

erlang:process_info(pid(0,25,0), current_stacktrace)

  • 查看backtrace信息

rp(erlang:process_info(pid(0,25,0),backtrace)) 最終定位問題

其他查用的命令

  • etop 查看進程佔用的指令
  • 啓動eprof進行檢測代碼執行檢測(如何在線上使用,後續需要補充)
  • 查看所有的進程信息 erlang:processes()
  • registered() 查看所有的進程註冊名
  • erlang:check_process_code(Pid, Module)檢測進程是否正在佔用模塊
  • erlang:process_info(Pid, dictionary) 查看所有的用進程字典保存的值
  • rp(erlang:process_info(Pid),backtrace)) 查看進程調用棧,此backtrace一定要remesh一個節點使用,不能直接在服務節點使用,可能會導致節點奔潰
  • inet:i() 展示當前所有的網絡鏈接情況
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章