婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

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

問題描述

有幾臺線上系統(tǒng),運(yùn)行一段時間,內(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)有個好處,可以直接進(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

新開一個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)沒有辦法啟動這些工具了,幸好還有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或者其它原因,堆積沒有釋放。

查看單個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時,發(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時,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有個配置項(xiàng),配置message未處理的數(shù)量,如果message堆積數(shù)超出,則會用 同步 方式處理!

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

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

總結(jié)

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

標(biāo)簽:濟(jì)寧 臺州 泰安 廣東 安徽 汕頭 濟(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)信息告之我們,我們將及時溝通與處理。本站內(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)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91免费视频观看| 欧美日韩极品在线观看一区| 亚洲影院理伦片| 国产成人啪午夜精品网站男同| 欧美在线免费观看视频| 日韩美女视频在线| 人妖欧美一区二区| 精品国产亚洲一区二区三区在线观看| 亚洲激情中文1区| 国产精品不卡一区| 精品成人佐山爱一区二区| 91精品国产麻豆| 欧美三级视频在线播放| 国产米奇在线777精品观看| 精品女同一区二区| av成人动漫在线观看| 久久影视一区二区| 97精品视频在线观看自产线路二| 中文字幕日韩一区| 欧美色视频一区| 蜜桃av噜噜一区二区三区小说| 国产精品一二三区| 日韩丝袜美女视频| 精品美女被调教视频大全网站| 欧美精品乱码久久久久久| 欧美色图一区二区三区| 91成人免费在线| 国产欧美精品一区二区色综合| 精品国产凹凸成av人网站| 91精品国产91综合久久蜜臀| 视频一区中文字幕| 黑人巨大精品欧美一区| 成人免费高清在线观看| 日韩成人一区二区三区在线观看| 日本91福利区| 91视频国产资源| 精品视频资源站| 日韩欧美一级在线播放| 一区二区三区四区蜜桃| 国产无一区二区| 粉嫩aⅴ一区二区三区四区| 久久久久综合网| 欧美日韩高清一区| 粉嫩绯色av一区二区在线观看 | 欧美主播一区二区三区| 一区二区三区四区国产精品| 欧美一区二区女人| heyzo一本久久综合| 欧美国产日韩亚洲一区| 亚洲国产综合人成综合网站| 国产精华液一区二区三区| 在线电影院国产精品| 亚洲一级二级三级| 欧美午夜影院一区| 欧美电影影音先锋| 6080日韩午夜伦伦午夜伦| 色悠悠久久综合| 精品视频在线视频| 欧美一区二区三区免费观看视频| 91国偷自产一区二区开放时间| 欧美日韩三级一区二区| 亚洲三级在线播放| 日本怡春院一区二区| 国产精品美女久久久久久久久 | 91在线精品一区二区| 国产亚洲视频系列| 一本大道久久a久久综合婷婷| 国产精品久久三区| 91久久一区二区| 成人免费视频网站在线观看| 国产精品成人网| 国产精品久久久久婷婷二区次| 亚洲欧洲性图库| 欧美三级视频在线| 国产不卡视频在线播放| 91精品福利视频| 成人91在线观看| 亚洲高清在线精品| 久久久不卡网国产精品二区| 97精品国产97久久久久久久久久久久| 亚洲高清三级视频| 亚洲欧美色图小说| 综合电影一区二区三区 | 国产成人一区二区精品非洲| 欧美视频第二页| 亚洲福利一区二区| 欧美丝袜丝nylons| 樱桃视频在线观看一区| 91蜜桃网址入口| 亚洲一区二区三区四区在线| 97se亚洲国产综合自在线| 亚洲视频在线一区| 99在线精品视频| 色狠狠色狠狠综合| 色呦呦网站一区| 91麻豆精品国产91久久久久久| 欧美日韩美少妇| 欧美精选午夜久久久乱码6080| 亚洲高清免费一级二级三级| 欧美亚洲国产一区二区三区| 欧美午夜理伦三级在线观看| 日韩精品视频网| 精品久久国产字幕高潮| 激情小说亚洲一区| 精品日韩一区二区三区免费视频| 亚洲一区二区三区国产| 欧美熟乱第一页| 成人免费视频app| 在线观看欧美日本| 中文字幕高清不卡| 91精品国产综合久久国产大片| 国产精品久久久久久久蜜臀| 极品美女销魂一区二区三区 | 91高清视频免费看| 亚洲综合激情小说| 日韩国产精品久久| 精品一区二区三区av| ...xxx性欧美| 欧美日韩高清在线播放| 成人av电影在线网| 蜜臀va亚洲va欧美va天堂 | 成人性视频免费网站| 色婷婷久久综合| **性色生活片久久毛片| 99久免费精品视频在线观看 | 国内外成人在线视频| 欧美性高清videossexo| 国产精品福利影院| 国产一区二区不卡在线| 成人免费毛片嘿嘿连载视频| 国产一区二区在线观看免费| 精品乱人伦一区二区三区| 国产麻豆精品视频| 国产精品网站导航| 欧美精品在线一区二区| 热久久久久久久| 久久人人超碰精品| 欧洲人成人精品| 日韩精品国产精品| 亚洲欧洲无码一区二区三区| 国产成人自拍高清视频在线免费播放| 欧美色中文字幕| 国产一区二区三区香蕉| 国产欧美视频在线观看| 色综合色综合色综合色综合色综合 | 欧美乱熟臀69xxxxxx| 91 com成人网| 国产精品久久久久久一区二区三区| 成人欧美一区二区三区黑人麻豆| 亚洲国产成人91porn| 成人免费毛片嘿嘿连载视频| 91精品国产综合久久国产大片| 国产欧美一区二区精品婷婷 | 老司机免费视频一区二区| 亚洲国产精品精华液网站| 蜜臀久久99精品久久久久宅男| 成人精品鲁一区一区二区| 精品免费视频一区二区| 亚洲精选一二三| 亚洲一区免费在线观看| 国产欧美一区二区精品性色| 国产老肥熟一区二区三区| 精品影院一区二区久久久| 欧美亚一区二区| 欧美男同性恋视频网站| 国产精品视频一二三区| 亚洲精品国产第一综合99久久| 国产精品一区专区| 高清在线成人网| 国产精品久久久久影院老司 | 青青草国产成人99久久| 亚洲免费av网站| 亚洲综合一区在线| 欧美亚洲一区三区| 日韩午夜激情免费电影| 欧美色视频在线| 国产精品一卡二卡| 91影院在线观看| 久久亚洲精品小早川怜子| 国产精品白丝av| 欧美精品久久一区| 国产精品国产a| 26uuu精品一区二区在线观看| 日韩一级片网站| 99久久伊人网影院| 日韩美女天天操| 国产欧美精品国产国产专区| 91在线视频播放| 精品精品欲导航| 欧美精品在线观看一区二区| 国产成人免费在线观看| 欧美午夜一区二区三区 | 亚洲欧洲一区二区在线播放| 国产精品国产成人国产三级| 日韩av在线发布| 天天综合色天天| 色悠悠亚洲一区二区| 日韩欧美国产不卡| 日本欧美肥老太交大片| 在线播放中文字幕一区|