You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter连接PostgreSQL时出现NumberFormatException错误求助

JMeter连接PostgreSQL时触发NumberFormatException错误

问题背景

使用JMeter测试PostgreSQL数据库连通性,已通过Maven完成相关依赖安装,但运行测试代码时抛出java.lang.NumberFormatException异常。

错误堆栈

22:13:11.597 [main] ERROR org.apache.jmeter.engine.StandardJMeterEngine - Unable to execute testStarted(null) for test element org.apache.jmeter.protocol.jdbc.config.DataSourceElement@a9aedfb2
java.lang.NumberFormatException: For input string: ""
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67) ~[?:?]
    at java.base/java.lang.Integer.parseInt(Integer.java:671) ~[?:?]
    at java.base/java.lang.Integer.parseInt(Integer.java:777) ~[?:?]
    at org.apache.jmeter.protocol.jdbc.config.DataSourceElement.initPool(DataSourceElement.java:221) ~[ApacheJMeter_jdbc-5.6.3.jar:5.6.3]
    at org.apache.jmeter.protocol.jdbc.config.DataSourceElement.testStarted(DataSourceElement.java:128) ~[ApacheJMeter_jdbc-5.6.3.jar:5.6.3]
    at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfStart(StandardJMeterEngine.java:247) [ApacheJMeter_core-5.6.3.jar:5.6.3]
    at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:432) [ApacheJMeter_core-5.6.3.jar:5.6.3]
    at org.example.Main.main(Main.java:197) [classes/:?]

测试代码

JMeterUtils.initLocale();

TestPlan testPlan = new TestPlan("Database Reachability Test Plan");

ListedHashTree testPlanTree = new ListedHashTree();
testPlanTree.add(testPlan);

DataSourceElement dataSource = new DataSourceElement();

dataSource.setProperty("dataSource", "MyPostgreSQLDataSource");
dataSource.setName("MyPostgreSQLDataSource"); // 设置数据源名称
dataSource.setProperty("dbUrl", "jdbc:postgresql://localhost:5432/postgres");


dataSource.setProperty("driver", "org.postgresql.Driver");
dataSource.setProperty("username", "postgres");
dataSource.setProperty("password", "postgres");
dataSource.setAutocommit(true);
dataSource.setPoolMax("0");
dataSource.setProperty("connectionAge", "5000");
dataSource.setProperty("timeout", "10000");
dataSource.setProperty("trimInterval", "60000");


// JDBC Sampler
JDBCSampler jdbcSampler = new JDBCSampler();
jdbcSampler.setName("Database Reachability Test");
jdbcSampler.setProperty("dataSource", "MyPostgreSQLDataSource");
jdbcSampler.setQuery("select * from street;");

问题原因与修复方案

异常是因为DataSourceElement初始化连接池时,某个需要整数类型的参数被传入空字符串。查看代码可知,你仅设置了poolMax为"0",但未指定poolMin参数,而JMeter默认会尝试将未设置的poolMin解析为整数,空字符串触发转换失败。

修复步骤:

  • 补充设置poolMin参数,赋予合法整数值,示例:
    dataSource.setPoolMin("1");
    
  • 建议将poolMax也调整为合理值(比如"5"),避免连接池容量为0导致无法创建连接:
    dataSource.setPoolMax("5");
    
  • 确保所有涉及数值转换的参数(如maxWait等)都设置合法整数值,避免空字符串或非数字内容。

内容的提问来源于stack exchange,提问作者heatwave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:43:21