JMeter - 打印出jdbc连接细节

时间:2014-06-05 09:32:10

标签: jmeter

我正在尝试测试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(之前从未使用过)和这段代码。但由于某些原因,我无法在采样器中选择常规语言。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

但是,我不太确定你是否能够区分ip1或ip2 incormation。

  1. 如果你想继续使用Groovy,你需要在JMeter类路径中使用groovy-all.jar。
  2. 您可以考虑切换到Beanshell,它不需要任何额外的罐子,因为它是内置的。
  3. 您的System.out.println("conn: "+conn);节结果无效,因为它会返回com.mysql.jdbc.JDBC4Connection@7ada3b58之类的内容。我建议修改最后一行,如下所示:

    log.info(conn.getMetaData().getURL());
    
  4. 因此输出可以转到'jmeter.log'文件,这将是有意义的。但是我希望它是来自JDBC连接配置的连接字符串。如果没有 - 比我们完成。

    最后,我建议通过以下方式直接在MySQL实例上获取当前实例IP:

    select host from information_schema.processlist;
    
    JDBC Request sampler中的

    。您可以使用Beanshell预处理器将其打印到STDOUT,或者在必要时进行记录。

    有关使用Beanshell脚本扩展JMeter的更多详细信息,请参阅How to use Beanshell指南。