erlang啟動參數記錄


  不管在erlang的shell下還是腳本里,啟動參數都是非常有用的,抽空兒整理下erlang的常用啟動參數:

+A size   異步線程池的線程數,范圍為0~1024,默認為10

+P Number|legacy   最大進程數,范圍為1024-134217727 ,默認為  262144

+K true | false  是否啟用的kernel的poll機制,默認為false

-config Config  加載指定的配置文件,config.config

-heart  開啟erlang的心跳檢測 

   這里細說下這個參數:% erl -heart ... 開啟心跳監測,默認為60s;

     還有一種是 % erl -heart -env HEART_BEAT_TIMEOUT 30 ... 如果這里添加 -env HEART_BEAT_TIMEOUT 30 參數,可修改心跳監測時間,范圍為:10 < X <= 65535(s).

還有一個參數是:% erl -heart -env ERL_CRASH_DUMP_SECONDS (0、1、seconds)三種情況,用於分析dump文件.

    

-name Name  運行分布式節點名

-setcookie Cookie  在一個分布式集群中,不同節點間設置同一個cookie,保證節點互聯

-boot File  用來啟動系統,一般設置為start_sasl

-env Variable Value  用來設置宿主系統環境變量

+W w | i  設置error_logger的告警信息,+W w 為waring  +W i 為info report

+e Number 設置最大ets表數量  沒有設置默認1400  可設置 ERL_MAX_ETS_TABLES,用 -env ERL_MAX_ETS_TABLES

-pa Dir1 Dir2 ...  添加指定代碼目錄由開始代碼的路徑 ,如:code:add_pathsa/1

-pz Dir1 Dir2 ...  添加指定的目錄的代碼路徑的末端 ,如:code:pathsz/1

-remsh Node  啟動遠程節點

 

## Increase number of concurrent ports/sockets
-env ERL_MAX_PORTS 4096

## Tweak GC to run more often
-env ERL_FULLSWEEP_AFTER 10

-env ERL_MAX_ETS_TABLES 200000

18904086003

 +sbt db        
 +sub true                                         %% R17版本之后,調度器測量 (多核平均分配cpu)

 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
erlang 默認啟動參數更多的是針對電信平台實時特性,簡單調整參數能很大程度降低CPU消耗,提高處理能力。

1. 關閉spin_wait

  設置參數:+sbwt none

erlang 調度器CPU利用率低排查,關閉spin_wait 可能增加了調度器需要喚醒延時。

關閉后CPU 基本能夠簡單30%以上,且幾乎沒有任何副作用,調度器喚醒微妙級,延時可忽略。

 

2. 調度器喚醒策略

  默認設置:+swt medium

  默認設置下,長時間運行后部分node運行進入一種非正常狀態,如:不管高峰還是低峰,cpu 200%一條直線,且在高峰期間處理不過來,造成timeout,

  也就是說,除了前兩個調度器,后面的調度器都睡死了,業務大量堆積也無法喚醒。

  

  解決方案:

  1. 定時維護性重啟,當然業務允許的話,對於類似長連接服務就不行了

  2. 調整:+swt low (whatsapp ppt 中提到),CPU占用稍高

  3. 使用R17 +sub true,保證每個調度器業務平均

 

  當然: +swt very_high 能夠再次降低30%+ 的cpu

  同時也很大程度增加 調度器睡死的幾率,會不會睡死看業務服務狀態,可以觀察,對性能提升還是很有幫助的。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM