亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識(shí)庫 > Erlang項(xiàng)目內(nèi)存泄漏分析方法

Erlang項(xiàng)目內(nèi)存泄漏分析方法

熱門標(biāo)簽:地圖標(biāo)注如何弄全套標(biāo) 武漢AI電銷機(jī)器人 電銷機(jī)器人 深圳 外呼系統(tǒng)會(huì)封嗎 萬利達(dá)綜合醫(yī)院地圖標(biāo)注點(diǎn) 實(shí)體店地圖標(biāo)注怎么標(biāo) 股票配資電銷機(jī)器人 南京電銷外呼系統(tǒng)哪家好 在電子版地圖標(biāo)注要收費(fèi)嗎

隨著項(xiàng)目越來越依賴Erlang,碰到的問題也隨之增加。前段時(shí)間線上系統(tǒng)碰到內(nèi)存高消耗問題,記錄一下troubleshooting的分析過程。線上系統(tǒng)用的是Erlang R16B02版本。

問題描述

有幾臺(tái)線上系統(tǒng),運(yùn)行一段時(shí)間,內(nèi)存飆升。系統(tǒng)模型很簡單,有網(wǎng)絡(luò)連接,pool中找新的process進(jìn)行處理。top命令觀察,發(fā)現(xiàn)內(nèi)存都被Erlang進(jìn)程給吃完了,netstat命令查看網(wǎng)絡(luò)連接數(shù),才區(qū)區(qū)幾K。問題應(yīng)該是Erlang內(nèi)存泄漏了。

分析方法

Erlang系統(tǒng)有個(gè)好處,可以直接進(jìn)入線上系統(tǒng),在生產(chǎn)現(xiàn)場分析問題。我們系統(tǒng)是通過Rebar管理的,可以用不同方法進(jìn)入線上系統(tǒng)。

本機(jī)登錄

可以直接登錄到線上機(jī)器,然后通過以下命令attach到Erlang系統(tǒng)里面

復(fù)制代碼 代碼如下:

$ cd /path/to/project
$ rel/xxx/bin/xxx attach
(node@host)>

通過remote shell

獲取Erlang系統(tǒng)的cookie

復(fù)制代碼 代碼如下:

$ ps -ef |grep beam  %%找到參數(shù) --setcookie

新開一個(gè)shell,使用同樣的cookie,不同的nodename
復(fù)制代碼 代碼如下:

$ erl --setcookie cookiename -name test@127.0.0.1

用start remote shell進(jìn)入系統(tǒng)
復(fù)制代碼 代碼如下:

Erlang R16B02 (erts-5.10.3) [source] [64-bit] [smp:2:2] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.3  (abort with ^G)
(test1@127.0.0.1)1> net_adm:ping('node@127.0.0.1').
pong
(test1@127.0.0.1)2> nodes().
['node@127.0.0.1']
(test1@127.0.0.1)3>
User switch command
 --> h
  c [nn]            - connect to job
  i [nn]            - interrupt job
  k [nn]            - kill job
  j                 - list all jobs
  s [shell]         - start local shell
  r [node [shell]]  - start remote shell
  q                 - quit erlang
  ? | h             - this message
 --> r 'node@127.0.0.1'
 --> j
   1  {shell,start,[init]}
   2* {'node@127.0.0.1',shell,start,[]}
 --> c 2

分析流程

Erlang有很多工具,可以分析系統(tǒng)信息,比如appmon,webtool。但是系統(tǒng)內(nèi)存嚴(yán)重不足,已經(jīng)沒有辦法啟動(dòng)這些工具了,幸好還有Erlang shell。

Erlang shell自帶了很多有用的命令,可以用help()方法查看

復(fù)制代碼 代碼如下:

> help().

Erlang系統(tǒng)內(nèi)存消耗情況

top結(jié)果顯示,是內(nèi)存問題,所以第一步可以先看看Erlang的系統(tǒng)內(nèi)存消耗情況

復(fù)制代碼 代碼如下:

> erlang:memory().

memory()可以看到Erlang emulator分配的內(nèi)存,有總的內(nèi)存,atom消耗的內(nèi)存,process消耗的內(nèi)存等等。

Erlang process創(chuàng)建數(shù)量

線上系統(tǒng)發(fā)現(xiàn)主要內(nèi)存消耗都在process上面,接下來要分析,是process內(nèi)存泄漏了,還是process創(chuàng)建數(shù)量太多導(dǎo)致。

復(fù)制代碼 代碼如下:

> erlang:system_info(process_limit).  %%查看系統(tǒng)最多能創(chuàng)建多少process
> erlang:system_info(process_count).  %%當(dāng)前系統(tǒng)創(chuàng)建了多少process

system_info()返回當(dāng)前系統(tǒng)的一些信息,比如系統(tǒng)process,port的數(shù)量。執(zhí)行上面命令,大吃一驚,只有2,3k的網(wǎng)絡(luò)連接,結(jié)果Erlang process已經(jīng)有10多w了。系統(tǒng)process創(chuàng)建了,但是因?yàn)榇a或者其它原因,堆積沒有釋放。

查看單個(gè)process的信息

既然是因?yàn)閜rocess因?yàn)槟撤N原因堆積了,只能從process里找原因了

先要獲取堆積process的pid

復(fù)制代碼 代碼如下:

> i().  %%返回system信息
> i(0,61,886).  %% (0,61,886)是pid

看到有很多process hang在那里,查看具體pid信息,發(fā)現(xiàn)message_queue有幾條消息沒有被處理。下面就用到強(qiáng)大的erlang:process_info()方法,它可以獲取進(jìn)程相當(dāng)豐富的信息。
復(fù)制代碼 代碼如下:

> erlang:process_info(pid(0,61,886), current_stacktrace).
> rp(erlang:process_info(pid(0,61,886), backtrace)).

查看進(jìn)程的backtrace時(shí),發(fā)現(xiàn)下面的信息
復(fù)制代碼 代碼如下:

0x00007fbd6f18dbf8 Return addr 0x00007fbff201aa00 (gen_event:rpc/2 + 96)
y(0)     #Ref0.0.2014.142287>
y(1)     infinity
y(2)     {sync_notify,{log,{lager_msg,[], ..........}}
y(3)     0.61.886>
y(4)     0.89.0>
y(5)     []

process在處理Erlang第三方的日志庫lager時(shí),hang住了。

問題原因

查看lager的文檔,發(fā)現(xiàn)以下信息

復(fù)制代碼 代碼如下:

Prior to lager 2.0, the gen_event at the core of lager operated purely in synchronous mode. Asynchronous mode is faster, but has no protection against message queue overload. In lager 2.0, the gen_event takes a hybrid approach. it polls its own mailbox size and toggles the messaging between synchronous and asynchronous depending on mailbox size.

{async_threshold, 20}, {async_threshold_window, 5}

This will use async messaging until the mailbox exceeds 20 messages, at which point synchronous messaging will be used, and switch back to asynchronous, when size reduces to 20 - 5 = 15.

If you wish to disable this behaviour, simply set it to 'undefined'. It defaults to a low number to prevent the mailbox growing rapidly beyond the limit and causing problems. In general, lager should process messages as fast as they come in, so getting 20 behind should be relatively exceptional anyway.


原來lager有個(gè)配置項(xiàng),配置message未處理的數(shù)量,如果message堆積數(shù)超出,則會(huì)用 同步 方式處理!

當(dāng)前系統(tǒng)打開了debug log,洪水般的log把系統(tǒng)給沖垮了。

老外也碰到類似問題,這個(gè)thread給我們的分析帶來很多幫助,感謝一下。

總結(jié)

Erlang提供了豐富的工具,可以在線進(jìn)入系統(tǒng),現(xiàn)場分析問題,這個(gè)非常有助于高效、快速的定位問題。同時(shí),強(qiáng)大的Erlang OTP讓系統(tǒng)有更穩(wěn)定的保證。我們還會(huì)繼續(xù)挖掘Erlang,期待有更多的實(shí)踐分享。

標(biāo)簽:濟(jì)寧 臺(tái)州 泰安 廣東 安徽 汕頭 濟(jì)源 武威

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Erlang項(xiàng)目內(nèi)存泄漏分析方法》,本文關(guān)鍵詞  Erlang,項(xiàng)目,內(nèi)存,泄漏,分析,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Erlang項(xiàng)目內(nèi)存泄漏分析方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于Erlang項(xiàng)目內(nèi)存泄漏分析方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    午夜精品国产自在现线拍| 99久久精品国产高清一区二区 | 国产91视频网| 久久精品大片| 你懂的日韩| 久久久久久久男人的天堂| 亚洲 欧美 91| 欧美激情一区二区三区在线| 沈樵在线观看福利| 亚久久伊人精品青青草原2020| 九九精品久久久久久久久| 韩国三级视频网站| 九九精品久久久久久久久| 国产伦久视频免费观看 视频| 国产一区二区精品久久91| 日韩男人天堂| 精品视频在线看| 国产网站麻豆精品视频| 久久精品大片| 四虎影视库国产精品一区| 欧美a级成人淫片免费看| 国产精品免费久久| 国产网站免费视频| 精品视频一区二区| 国产福利免费观看| 久久国产精品自由自在| 欧美一级视频免费| 精品久久久久久影院免费| 国产伦理精品| 尤物视频网站在线| 国产视频一区在线| 九九久久99| 国产极品精频在线观看| 国产视频一区在线| 国产伦精品一区三区视频| 国产视频一区二区在线观看| 欧美激情一区二区三区在线| 韩国三级香港三级日本三级la| 一级片免费在线观看视频| 日韩中文字幕在线亚洲一区| 日日夜夜婷婷| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩在线观看视频黄| 国产不卡在线看| 天天做人人爱夜夜爽2020| 国产不卡在线播放| 日韩中文字幕在线亚洲一区| 日韩专区一区| 四虎久久精品国产| 亚洲女人国产香蕉久久精品 | 国产成人啪精品| 日韩中文字幕一区| 日韩在线观看免费| 黄视频网站在线看| 国产国语对白一级毛片| 欧美另类videosbestsex高清| 成人高清护士在线播放| 国产网站麻豆精品视频| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 91麻豆国产级在线| 欧美a级成人淫片免费看| 久久久久久久久综合影视网| 91麻豆国产级在线| 亚洲精品久久久中文字| 欧美大片一区| 亚洲精品久久久中文字| 国产视频一区二区在线观看| 成人a大片高清在线观看| 国产成人女人在线视频观看| 国产亚洲精品aaa大片| 香蕉视频亚洲一级| 精品久久久久久影院免费| 超级乱淫黄漫画免费| 国产高清视频免费| 中文字幕97| 毛片高清| 国产视频网站在线观看| 午夜精品国产自在现线拍| 日韩男人天堂| 欧美激情一区二区三区中文字幕| 欧美激情在线精品video| 超级乱淫黄漫画免费| 国产伦精品一区二区三区无广告| 国产视频一区在线| 精品国产一区二区三区国产馆| 久久国产一久久高清| 高清一级做a爱过程不卡视频| 日本乱中文字幕系列| 日韩中文字幕在线亚洲一区| 久久国产精品只做精品| a级毛片免费观看网站| 二级特黄绝大片免费视频大片| 一级毛片视频在线观看| 黄色短视屏| 你懂的日韩| 久久久久久久久综合影视网| 国产国语对白一级毛片| 成人高清护士在线播放| 精品视频在线观看一区二区| 精品久久久久久中文字幕2017| 久久99青青久久99久久| 久久国产一久久高清| 欧美a免费| 亚洲天堂免费| 成人免费观看网欧美片| 麻豆系列 在线视频| 日日夜夜婷婷| 亚洲爆爽| 欧美另类videosbestsex视频| 国产视频一区在线| 九九久久国产精品| 国产不卡在线播放| 黄色短视屏| 国产视频一区二区在线观看| 国产不卡福利| 国产欧美精品| 国产激情一区二区三区| 91麻豆精品国产高清在线| 久久精品大片| 欧美激情一区二区三区中文字幕| 成人影院久久久久久影院| 99久久精品国产高清一区二区 | 成人免费观看男女羞羞视频| 国产亚洲精品aaa大片| 一本高清在线| 久久久成人网| 日韩一级黄色| 国产成人精品影视| 99色精品| 免费国产在线观看| 亚欧视频在线| 国产高清视频免费| 国产韩国精品一区二区三区| 欧美a免费| 国产亚洲免费观看| 台湾美女古装一级毛片| 毛片高清| 国产精品123| 日韩中文字幕在线亚洲一区| 欧美激情在线精品video| 国产伦精品一区二区三区无广告| 色综合久久天天综线观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 韩国三级香港三级日本三级la| 欧美爱爱动态| 欧美1卡一卡二卡三新区| 欧美另类videosbestsex高清| 国产不卡在线看| 国产91素人搭讪系列天堂| 精品国产三级a| 国产麻豆精品| 国产网站免费视频| 亚洲第一色在线| 国产成a人片在线观看视频| 国产高清在线精品一区二区| 毛片高清| 日韩一级黄色| 久久福利影视| 欧美另类videosbestsex高清| 四虎久久精品国产| 成人a级高清视频在线观看| 色综合久久天天综合观看| 久久99青青久久99久久| 青草国产在线观看| 精品视频免费看| 国产一级强片在线观看| 亚洲精品永久一区| 日韩av东京社区男人的天堂| 国产网站麻豆精品视频| 久久国产一久久高清| 九九精品在线播放| 日韩中文字幕在线播放| 国产一区二区精品久久91| 午夜欧美福利| 精品国产三级a| 亚洲精品永久一区| 久久久久久久男人的天堂| 91麻豆精品国产高清在线| 日韩中文字幕在线亚洲一区| 91麻豆国产| 99久久精品国产国产毛片| 国产精品123| 国产原创视频在线| 久久99这里只有精品国产| 欧美激情一区二区三区中文字幕| 精品久久久久久影院免费| 精品久久久久久中文字幕2017| 国产美女在线观看| 日本乱中文字幕系列| 色综合久久天天综线观看| 可以免费看污视频的网站| 国产91视频网| 日本免费区| 亚洲天堂在线播放| 日日夜夜婷婷| 国产伦久视频免费观看 视频| 色综合久久天天综合观看| 欧美激情在线精品video| 午夜在线影院| 国产91素人搭讪系列天堂|