jmeter集合点、分布式执行、查询数据库、oracle中sid和service_name的区别
集合点
- 同步定时器
- Timeout in milliseconds: 如果设置为0,Timer将会等待线程数达到了"Number of Simultaneous Users to Group"中设置的值才释放。也就是说,如果线程数不足集合点中设置的数,就会一直等待,需要手动stop
- 如果大于0,那么如果超过Timeout in milliseconds中设置的最大等待时间(毫秒为单位)后还没达到"Number of Simultaneous Users to Group"中设置的值,Timer将不再等待,释放已到达的线程。也就是说如果线程数不满足集合点中设置的值,则在timeout中设置的时间后继续执行不足的那些线程。
- Timeout in milliseconds默认为0。所以当timeout设置为0,但是线程数又不满足集合点中设置的值时,就会一直等待,不执行请求,需要手动stop
- 同步定时器是在每一个采集器之前执行的,不管定时器的位置是在采集器之前还是之后,都是在采集器之前执行
- 如果一个线程中存在多个采集器,同步定时器和这些采集器在同一级(同一节点下),则同时作用于这些采集器
- 如果需要一个定时器单独对应某一个采集器,可以在采集器的子节点中创建定时器
分布式
- 分布式设置
- 客户端机器作为一个控制器controller,控制多台slave机器的操作
- controller通过GUI界面启动slave机器,将jmeter压测发送给每台启动的slave,slave获得脚本后开始执行,slave执行不需要预先存储脚本
- 各台slave执行完成后,将结果传回给controller,controller收集整合显示
- 主控机器配置
- 安装好jdk和jmeter,在主控机器上配置好远程机器的ip和port,在jmeter的bin目录下找到jmeter.properties
- remote_hosts=ip:port,localhost:port
- 如果开启ssl传输需要生成密钥,否则关闭ssl传输server.rmi.ssl.disable=true
- 远程机器配置
- 安装jdk/jmeter,最好与主控机器版本一致
- 配置环境变量JMETER_HOME
- 配置端口号(jmeter.properties文件)server_port=1099 server.rmi.localport=1099
- 如果没有配置ssl传输密钥,那么关闭ssl传输server.rmi.ssl.disable=true(jmeter.properties文件)
数据库性能测试
-
在jmeter/lib下方对应数据库的驱动jar包
- MySQL:mysql-connector-java.jar
- Oracle:ojdbc.jar
-
在jmeter配置JDBC Connection Configuration原件
-
database driver class database url mysql com.mysql.jdbc.Driver jdbc:mysql://host:3306/数据库名 oracle oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:user/pass@//host:1521/service
-
-
配置JDBC requests
-
validation query:jmeter用来检验数据库连接是否有效的一种机制,超过5秒没有使用的话,就会用validation query去测试下这个连接是否有效
-
数据库 validation query oracle select 1 from dual db2 select 1 from sysibm.sysdymmy1 mysql select 1 microsoft sql select 1 hsqldb select 1 from information_schema.system_users postgresql select version(); ingres select 1 derby select 1 h2 select 1 -
variable name 这里写入数据库连接池的名字(和JDBC Connection Configuration名字保持一致) query 里面填入查询数据库数据的sql语句(填写的sql语句末尾不要加“;”) parameter valus 数据的参数值 parameter types 数据的参数类型 cariable names 保存sql语句返回结果的变量名 result cariable name 创建一个对象变量,保存所有返回结果 query timeout 查询超时时间 handle result set 定义如何处理由callable statements语句返回的结果
-
-
oracle连接格式
- 格式一:
- Oracle JDBC Thin using a ServiceName:
- jdbc:oracle:thin:@//
: /<service_name> - Example: jdbc:oracle:thin:@//192.168.xxx.xxx:1521/XE
- 注意这里的格式,@后面有//, 这是与使用SID的主要区别。
- 这种格式是Oracle 推荐的格式,因为对于集群来说,每个节点的SID 是不一样的,但是SERVICE_NAME 确可以包含所有节点。
- 格式二:
- Oracle JDBC Thin using an SID:
- jdbc:oracle:thin:@
: : - Example: jdbc:oracle:thin:@192.168.xxx.xxx:1521:X01A
- Note:
- Support for SID is being phased out. Oracle recommends that users switch over to usingservice names.
- 格式三:
- Oracle JDBC Thin using a TNSName:
- jdbc:oracle:thin:@
- Example: jdbc:oracle:thin:@GL
- Note:
- Support for TNSNames was added in the driver release 10.2.0.1
- linux下查询sid的方法:
- 在配置oracle环境变量的情况可以使用 echo $ORACLE_SID,如果没有可以使用ps -ef |grep oracle 来查询:
- oracle 2548 1 0 Aug17 ? 00:00:00 ora_pmon_xxxx
- 后面的xxxx就是对应的sid。
- 在windows环境下:
- oracle是以后台服务的方式被管理的,所以看"控制面板->管理工具->服务 里面的名称:"OracleServiceORCL",则ORCL就是sid;
- 格式一:
-
service_name 和sid的区别:
- Service_name:该参数是由oracle8i引进的。在8i以前,使用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样
- sid是数据库实例的名字,每个实例各不相同。
浙公网安备 33010602011771号