本章描述了nGrinder 3.3或更高版本的高级nGrinder代理配置。如果您个人使用nGrinder,您可能不需要阅读本指南。然而,如果您想将nGrinder作为PAAS运行,您应该阅读这一章。
从Controller下载代理
从nGrinder 3.3中,代理安装包没有再分发到sourceforge。但它可以从控制器下载。这使得代理配置发生了巨大的变化。控制器已经知道应该如何配置代理,它提供包含适当配置的代理包。例如,当管理员用户下载代理时,代理包包含通用配置。但是,如果一般用户下载包,代理包将包含 私有代理 配置。
如果您喜欢使用wget下载代理,也可以直接使用以下url。
控制器模式 | 是否共享 | 下载地址 |
---|---|---|
单机 | 共享 | http://{controller_host_name}/agent/download |
私有 | http://{controller_host_name}/agent/download?owner={user_id} | |
集群 | 通用 | http://{controller_host_name}/agent/download?region={region_name} |
私有 | http://{controller_host_name}/agent/download/{region_name}/{user_id} |
如果您在helloworld.com中安装了集群控制器,并且希望下载“hello”用户和“region1”区域的私有代理,那么可以使用以下URL下载。
wget http://helloworld.com/agent/download/region1/hello
如果您不喜欢合成URL,只需在浏览器中复制链接并粘贴它。
预设置配置在代理程序包中存储为./__agent.conf
文件。当代理启动时,如果此文件不存在,这__agent.conf
文件将被复制到${NGRINDER_AGENT_HOME}/agent.conf
中。如果已经有${NGRINDER_AGENT_HOME}/agent.conf
,代理将只显示警告消息并跳过复制操作。然后会执行旧的agent.conf
。
如果你想用__agent.conf
覆盖原来的agent.conf
,您应该运行-o
选项的代理,该选项强制覆盖 agent.conf
。
代理启动/停止
nGrinder代理有几个命令行shell。您可以运行其中一个进程来调用或终止代理进程。
run_agent.sh # 或者 run_agent.bat 使用这个启动代理。
run_agent_bg.sh # 用这个在linux的后台启动代理。
stop_agent.sh # 或者 stop_agent.bat 使用此命令停止当前正在运行的代理。
代理家目录
当代理启动时,它将在用户的主目录创建 ${user.home}/.ngrinder_agent
目录。此目录包含默认配置文件和数据。下面是.ngrinder_agent
文件夹的默认位置。
- Window:
C:\Users${user.home}.ngrinder_agent
- Unix/Linux:
${user.home}/.ngrinder_agent
但是如果您想为主目录分配另一个目录,在运行代理前,请设置环境变量${NGRINDER_AGENT_HOME}
,或者命令行运行时添加--ngrinder-agent-home NGRINDER_AGENT_HOME
或者-nah NGRINDER_AGENT_HOME
。
./run_agent.sh --ngrinder-agent-home /home/user/ngrinder_agent
在一台机器上运行多个代理程序
如果您想在一台机器上运行多个代理,您应该在以下条件下运行代理。
1、使用不同的安装包
2、使用不同的--agent-home,使用不同的--host-id
为了满足上面的约束,您可以像下面这样运行代理。
1、尽可能多地安装多个代理二进制文件
- 第一: ~/apps/ngrinder_agent_1
- 第二: ~/apps/ngrinder_agent_2
2、使用以下命令运行每个代理
- 第一: cd ~/apps/ngrinder_agent-1; ./run_agent.sh --agent-home ~/.ngrinde-agent-1 --host-id first-agent
- 第二 : cd ~/apps/ngrinder_agent-1; ./run_agent.sh --agent-home ~/.ngrinde-agent-2 --host-id second-agent
命令行选项
nGrinder代理的run_agent.sh
命令,传入多个参数,可以覆盖现有配置${NGRINDER_AGENT_HOME}/agent.conf
名称 | 示例 | 覆盖属性 | 描述 |
---|---|---|---|
-o, --overwrite-config | -o | - | 如果你想使用__agent.conf 覆盖现有的${NGRINDER_AGENT_HOME}/agent.conf 配置。 当您希望现有代理连接到其他控制器时,这是非常有用的。 |
-ah / –agent-home | -ah ~/.ngrinder-agent1 | ngrinder.agent.home | 代理家目录路径. 默认:~/.ngrinder_agent |
-ch / --controller-host | -ch 10.10.10.10 | agent.controller_host | 连接此代理的控制器主机名或IP。如果没有指定,则会使用${NGRINDER_AGENT_ HOME}/agent.conf 的agent.controller_host 的值。 |
-cp / --controller-port | -cp 10023 | agent.controller_port | 控制器端口号。如果没有指定,则会使用${NGRINDER_AGENT_ HOME}/agent.conf 的agent.controller_port 的值。 |
-r / --region | -r region_owned_myid | agent.region | 控制器的区域名称。如果是私人代理, 它应该是{region_name}owed{userid} 。如果控制器不是集群模式,您可以忽略它{region_name} 。 |
-hi / --host-id | -hi my_agent_1 | agent.host_id | 代理的host id。如果没有提供,则自动选择主机名。 |
-s / --silent | -s | common.silent_mode | 使代理只输出非常重要的消息 |
-v / --version | -v | 显示代理的版本号并退出。 | |
-D | -D | 全部覆盖 | 动态属性。此选项可以覆盖agent.conf 定义的所有配置 |
-h / --help | -h | 帮助文档 |
配置
当代理启动时,它将复制控制器提供的配置到${NGRINDER_AGENT_HOME}
。如果已经有这样的配置,它会发出警告消息并跳过复制过程。 agent.conf
包含代理运行是的基本配置。如果提供了命令行选项,则提供的选项将覆盖指定此文件的某些配置。
${NGRINDER_AGENT_HOME}/agent.conf
键 | 默认值 | 兼容的键 (for ~nGrinder 3.2.X) | 描述 |
---|---|---|---|
common.start_mode | agent | start.mode | 运行代理的模式。这里可以使用agent和monitor。您根本不需要指定它。 |
common.verbose | false | verbose | 如果为true,则输出详细日志到${NGRINDER_AGENT_HOME}/log/agent.log 文件。 |
common.silent_mode | false | - | 设置为true, 日志只输出重要内容。 |
agent.controller_host | localhost | agent.controller.ip, agent.console.ip, agent.controller_ip | 连接此代理的控制器主机名或IP。 |
agent.controller_port | 16001 | agent.controller.port, agent.console.port | 控制器端口号。 |
agent.region | - | 控制器的区域名称。如果是私人代理,它应该是 {region_name}owed{userid} 这样的。如果控制器不是集群模式,你可以忽略它{region_name} 。 | |
agent.host_id | localhost’s hostname | agent.hostid | 代理host id。如果没有提供,则自动选择主机名。 |
agent.server_mode | true | 在代理的进程中运行,如果你想删除 –server vm 选项,设置为false | |
agent.all_logs | false | agent.send.all.logs | 如果您想在测试完成时将所有代理的进程日志发送给控制器,则为true。默认情况下,它只发送一个进程的日志,以避免无用的重复信息。 |
agent.limit_xmx | true | 如果你想让每个测试的进程都能使用1GB内存,设置为false。默认情况下,代理进程不能使用超过1GB的内存,因为更多的内存意味着更长的垃圾收集时间。 | |
agent.java_opt | - | agent.javaopt | 提供附加的java vm选项,这些选项将在运行每个测试过程时使用。 |
agent.keep_logs | false | 如果您想在测试完成后仍然保留测试日志,则设置为真。默认情况下,它会在每次测试结束时删除所有日志。 |
代理主文件夹结构
在 ${NGRINDER_AGENT_HOME}
中,有一些文件夹用于存储代理中使用的数据。以下是对它们的描述。
Folder Name | Description |
---|---|
log | 这存储代理日志。 |
file-store | 这里包含每个用户最后使用的脚本和资源。为了加速文件分发,即使在每次测试结束后都将文件作为缓存保存在这里,也不会删除这些文件。 |
native | 这包含用于收集代理系统使用情况的本机库。 |
更多内容请查看: 压力测试平台(nGrinder)入门到精通教程