新溪blog

新溪-gordon之胡写乱画

0%

tsung start真实执行命令

查看/usr/local/bin/tsung文件:

此文件是sh文件,tsung start实际执行的是start方法

当我们执行tsung -f fetch_user_key.xml start时,我们实际执行:

/usr/local/lib/erlang/erts-8.3.5.4/bin/beam.smp -A 8 -K true -P 250000 
-- -root /usr/local/lib/erlang -progname erl 
-- -home /root 
-- -smp auto -rsh ssh -noshell -proto_dist inet_tcp 

-sname tsung_controller 
-setcookie tsung 

-kernel inet_dist_listen_min 64000 
-kernel inet_dist_listen_max 65500 

-s tsung_controller

-pa /usr/local/lib/tsung/tsung-1.7.0/ebin 
-pa /usr/local/lib/tsung/tsung_controller-1.7.0/ebin 

-ssl session_cb ts_ssl_session_cache 
-ssl session_lifetime 600 
-sasl sasl_error_logger false 

-tsung_controller web_gui true 
-tsung_controller keep_web_gui false 
-tsung_controller smp_disable true 
-tsung_controller debug_level 5 
-tsung_controller warm_time 1 
-tsung_controller exclude_tag "" 
-tsung_controller config_file "fetch_user_key.xml" 
-tsung_controller log_dir "/root/.tsung/log/" 
-tsung_controller mon_file "tsung.log"
阅读全文 »

执行application:start(tsung_controller)时:

{start_phases, [{load_config, []},{start_os_monitoring,[{timeout,30000}]},
                {start_clients,[]}]}
{mod,          {tsung_controller, []}}

应用启动相关

ts_config_server相关::

global
-record(state, {
  config,
  logdir,   % 日志文件目录
  curcfg = 0,       % number of configured launchers
  client_static_users = 0, % number of clients that already have their static users
  static_users = 0, % static users not yet given to a client
  ports,            % dict, used if we need to choose the client port
  users=1,          % userid (incremental counter)
  start_date,       %
  hostname,         % controller的hostname
  last_beam_id = 0, % last tsung beam id (used to set nodenames)
  ending_beams = 0, % number of beams with no new users to start
  lastips,          % store next ip to choose for each client host
  total_weight      % total weight of client machines
}
阅读全文 »

创建Target System

创建一个符合OTP架构的项目ch3:

├── LICENSE
├── README.md
├── rebar.config
├── rebar.lock
└── src
    ├── ch3.app.src
    ├── ch3.erl
    ├── ch3_app.erl
    ├── ch3_sup.erl
    └── target_system.er

ch_rel-1.rel文件:

{release,
   {"ch_rel", "A"},
   {erts, "8.3.5.4"},
   [
      {kernel, "5.2.0.1"},
      {stdlib, "3.3"},
      {sasl, "3.0.3"},
      {ch3, "0.1.0"}
   ]
}.
阅读全文 »

目的

项目使用lager打印日志很多时,会造成以下2个主要问题:

1.「Lager的erlang消息队列」数会变成很大,影响整个系统性能
2.有时会丢失部分日志

目的:

1.通过源码分析找到这2个问题的原因
2.是否可以找到一些方法解决这个问题
3.看是否可以重写部分代码来提升性能
阅读全文 »

目的

通过对lager进程数与打印日志数的不同组合的性能表现,分析lager在系统中对性能的影响

系统资源

一台服务器:

16CPU
64G内存

系统环境:

OS: CentOS 7.4.1708
$ cat /etc/security/limits.conf
* soft nofile 300000
* hard nofile 300000
阅读全文 »

安装

方法一:源码安装
1
2
3
$ git clone https://github.com/erlang/rebar3.git
$ cd rebar3
$ ./bootstrap
方法二:点击「链接」直接下载

https://s3.amazonaws.com/rebar3/rebar3

方法三:直接从其他项目中拷贝
阅读全文 »

安装环境说明

1
2
>cat /etc/issue
Debian GNU/Linux 9 \n \l

注: debian基本版本也可用,其他linux系统可微调后使用

###Golang的安装:

1.打开go下载链接
https://golang.org/dl/
//以debian为例,安装当前最新版本1.10.2

1
2
>wget  https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz
>tar -C /usr/local -xzf go1.10.2.linux-amd64.tar.gz
阅读全文 »