我正在尝试测试MySQL集群上的负载均衡,并使用JMeter发送一些请求。 JDBC数据库URL设置如下:jdbc:mysql:loadbalance:// ip1,ip2 / ndbinfo?loadBalanceBlacklistTimeout = 5000
我的目的是打印发送给DB的每个请求,包括ip1或ip2,以检查负载均衡功能。
我试图包含JSR223 Sampler和java代码
import java.sql.Connection;
import org.apache.jmeter.protocol.jdbc.config.DataSourceElement;
Connection conn = DataSourceElement.getConnection("jdbcConfig");
System.out.println("conn: "+conn);
这不按计划运行。我发现一个帖子使用JSR223和groovy(之前从未使用过)和这段代码。但由于某些原因,我无法在采样器中选择常规语言。
任何帮助都将不胜感激。
答案 0 :(得分:1)
但是,我不太确定你是否能够区分ip1或ip2 incormation。
您的System.out.println("conn: "+conn);
节结果无效,因为它会返回com.mysql.jdbc.JDBC4Connection@7ada3b58
之类的内容。我建议修改最后一行,如下所示:
log.info(conn.getMetaData().getURL());
因此输出可以转到'jmeter.log'文件,这将是有意义的。但是我希望它是来自JDBC连接配置的连接字符串。如果没有 - 比我们完成。
最后,我建议通过以下方式直接在MySQL实例上获取当前实例IP:
select host from information_schema.processlist;
JDBC Request sampler中的。您可以使用Beanshell预处理器将其打印到STDOUT,或者在必要时进行记录。
有关使用Beanshell脚本扩展JMeter的更多详细信息,请参阅How to use Beanshell指南。