Tsung在进行压力测试同时,也可以监控服务器结点上的CPU、内存、系统负载等信息(详见监控一节)。
Tsung提供了三种监控方式:Erlang,SNMP,Munin。在tsung_controller启动的第二个阶段,会通过ts_os_mon:activate启动服务器监控。activate函数的执行很简单,通过ts_config_server:get_monitor_hosts拿到要监控的服务器列表,根据配置的监控方式调用ts_os_mon_sup:start_child来启动相应类型的监控进程,比如配置的监控类型为Erlang,那么ts_os_mon_sup:start_child最终会调用到ts_os_mon_erlang:init,对应SNMP,则是ts_os_mon_snmp:init。下面分别分析ts_os_mon_erlang和ts_os_mon_snmp的实现(Munin不了解,暂不做分析)
ts_os_mon_erlang:init的关键代码如下:
init( {Host, {}, Interval, MonServer} ) ->
{ok, LocalHost} = ts_utils:node_to_hostname(node()),
case list_to_atom(LocalHost) of
Host -> % same host, don't start a new beam
Pid = spawn_link(?MODULE, updatestats, [Interval, MonServer]),
{ok, #state{node=node(),mon=MonServer, host=Host,interval=Interval,pid=Pid}};
_ ->
erlang:start_timer(?INIT_WAIT, self(), start_beam),
{ok, #state{host=Host, mon=MonServer, interval=Interval}}
end
当要监控服务器是当前服务器结点的时候,直接创建一个进程,执行updatestats函数,该函数会每隔Interval时间自调用一次,通过node_data函数收集服务器的监控数据,并发送到负责统计的进程。如果要监控的服务器是远程结点,init函数通过start_beam调用先在远程结点上启动一个Erlang虚拟机,并把跟监控相关的几个模块的代码加载到虚拟机中,然后执行的代码就跟本地的执行类似,只不过统计数据要发送到主控结点上的统计进程。updatestats函数的具体代码如下:
updatestats(Interval,Mon_Server) ->
Node = atom_to_list(node()),
{Cpu, FreeMem, RecvPackets, SentPackets, Load} = node_data(),
ts_os_mon:send(Mon_Server,[{sample, {cpu, Node}, Cpu},
{sample, {freemem, Node}, FreeMem},
{sample, {load, Node}, Load},
{sample_counter, {recvpackets, Node}, RecvPackets},
{sample_counter, {sentpackets, Node}, SentPackets}]),
timer:sleep(Interval),
updatestats(Interval,Mon_Server)
其中的Mon_Server参数就代表主控结点。
node_data实现比较简单,有Erlang通用接口可以使用的就直接调用,比如CPU相关的通过cpu_sup模块相关函数;如果没有通用接口,则根据系统的具体类型,通过os:cmd直接执行命令来获取,比如内存,Linux下通过free,Solaris通过vmstat。
ts_os_mon:add的实现如下:
send(Mon_Server, Data) when is_pid(Mon_Server) ->
Mon_Server ! {add, Data};
send(Mon_Server, Data) ->
gen_server:cast(Mon_Server, {add, Data})
也就是如果在本地的话,直接发送到监控进程,如果监控远程服务器,则监控数据发回到主控结点(至于数据如何处理后续文章会继续分析)。
SNMP类型的监控原理上同Erlang监控类似,只不过在初始化时,ts_os_mon_snmp会检查要监控的目标服务器上SNMP服务有没有启动。如果没有,通过application:start(snmp)先加载snmp应用,再通过snmpm:start启动SNMP服务,然后按照SNMP的协议获取服务器的相关信息,并通过ts_os_mon将监控数据发送到主控结点的数据统计进程。
分享到:
相关推荐
5. **实时监控和报告**:Tsung提供了丰富的实时监控数据,包括响应时间、吞吐量、错误率等,且支持生成详细的测试报告,便于分析测试结果。 6. **开源社区支持**:作为一个活跃的开源项目,Tsung拥有丰富的文档和...
这个插件使得Tsung可以模拟客户端与WebSocket服务器的交互,包括建立连接、发送文本或二进制数据、关闭连接等操作。这有助于评估WebSocket服务在高并发下的性能表现,发现潜在的瓶颈和问题。 **`websocket.xml`配置...
3. **运行阶段**:Tsung 持续监控系统性能,并记录各种指标,如响应时间、吞吐量、失败率等。 4. **结束阶段**:测试完成后,使用 `tsung stop` 命令停止测试,Tsung 会生成详细的测试报告,分析结果可以帮助我们...
接着,通过以下命令安装Tsung: ```bash sudo apt-get install tsung ``` ## 2. 使用Tsung注册用户 Tsung支持通过XML配置文件来定义测试场景。为了测试Openfire的注册功能,你可以从`tsung/examples`目录下复制一...
3. **集群支持**:TSUNG支持分布式部署,可以通过多台服务器协同工作,进一步提升测试规模和复杂度。 4. **图形化测试报告**:通过集成Gnuplot等工具,TSUNG能够生成直观易懂的测试结果图形报告。 #### 三、TSUNG...
### Tsung负载测试Tigase知识点详解 #### Tsung概述 Tsung是一款高效的压力测试...通过合理配置Tsung XML文件,可以针对不同的应用场景进行精准的性能评估,特别是在测试像Tigase这样的高性能XMPP服务器时尤其有用。
1.6在远程服务器或snmp上,使用erlang代理对os进行监控,主要是监控它的cpu,内存,网络流量等 1.7 xml配置系统: 1.8动态场景: 我们可以从负载的服务器得到动态数据并把它重新注入到随后的请求,当字符串或正则式...
该配置文件定义了Tsung的测试行为,包括文件结构、客户端与服务器的配置、监控选项以及如何定义负载进展、设置选项和会话控制。Tsung的高级特性包括动态替换、读取外部文件、动态变量、检查服务器响应和循环等。 在...
6. **Erlang 代理监控**:远程监控服务器资源如 CPU、内存、网络流量等。 7. **XML 配置**:使用 XML 文件配置测试场景。 8. **动态场景支持**:可根据负载服务器返回的数据动态调整测试过程。 #### 二、Tsung 相关...
`Tsung` 是一个开源的负载测试工具,广泛用于评估分布式系统,如 Web 应用、数据库和 LDAP 服务器等。它支持多种协议,包括 HTTP、HTTPS、FTP、TCP 和ejabberd 等。`Tsung` 的强大之处在于它的可扩展性和灵活性,...
MQTT压力测试之Tsung的使用 MQTT压力测试之Tsung的使用
- **实时监控**:Tsung提供实时图形化的监控界面,展示系统资源使用情况和测试结果。 - **可定制性**:通过XML配置文件,用户可以根据需求自定义测试场景和负载模型。 - **报告生成**:测试结束后,Tsung会生成...
- **图形工具介绍**:介绍Tsung自带的图形分析工具。 - **使用方法**:指导用户如何使用该工具。 ##### 7.8 RRD - **RRD文件格式**:介绍RRD(Round Robin Database)文件的使用。 - **RRD工具**:推荐使用哪些...
压力测试 压力测试 tsung linux
tsung的测试脚本,包含发送单人消息,群组消息,获取花名册等
5. **收集数据**:Tsung在运行过程中会记录各项性能指标。 6. **分析结果**:使用Tsung的内置报告工具或第三方工具分析测试数据,得出性能结论。 **RedDiamond系统分析** 在RedDiamond_Tsung_tests中,我们关注...
Openfire 3.9.3 Load Test Tsung配置xml,10万用户下集群测试的Tsung压力测试工具的jabber_cluster.xml,session 5分钟
这个MySQL服务器压测的需求是:Tsung用于压测MySQL服务器的脚本环境:LinuxRHEL5U4X86-64,24G内存,16核.MySQL服务器在10.232.36.100上。 这个MySQL服务器压测的需求是: 环境:LinuxRHEL5U4X86-64,24G内存,16核....
tsung高并发测试工具搭建(自己亲测,详细的一逼),改文档是自己一步一步摸索出来的,主要是安装tsung整个过程很详细,搭过的人,知道tsung的搭建依赖很恶心,不是一时半会能搞出来的
关于tsung工具的安装步骤以及使用过程中会遇到的常见问题解答