如何通过JMeter 5.0连接SSAS服务器执行MDX查询并开展性能与负载测试
如何通过JMeter 5.0连接SSAS服务器执行MDX查询并开展性能与负载测试
当然可以用JMeter 5.0连接SSAS Cube并执行MDX查询做性能/负载测试!下面我给你一步步拆解两种可行的方案,你可以根据自己的环境选合适的来操作:
方案一:通过JDBC连接SSAS(推荐,配置更直观)
步骤1:准备SSAS JDBC驱动
- JMeter 5.0默认不包含SSAS专属的JDBC驱动,你需要下载Microsoft Analysis Services JDBC Driver(注意要匹配你的SSAS版本和JMeter使用的Java版本,比如Java 8就选兼容Java 8的驱动版本)
- 把下载到的驱动jar包(比如
analysis-services-jdbc.jar)复制到JMeter安装目录下的lib文件夹里 - 重启JMeter,确保驱动能被正常加载
步骤2:配置JDBC连接池
- 先在测试计划里加一个线程组:右键测试计划 → 添加 → 线程(用户) → 线程组
- 右键线程组 → 添加 → 配置元件 → JDBC Connection Configuration,然后填写关键参数:
- Variable Name: 给这个连接池起个好记的名字,比如
SSAS_Cube_Conn(后面的取样器要用到这个名字) - Database URL: 格式为
jdbc:xmla://<SSAS服务器IP/主机名>:<端口>/<实例名>;Catalog=<Cube所在的数据库名>
举个例子:jdbc:xmla://localhost:2383/;Catalog=AdventureWorksDW(SSAS默认实例端口是2383,AdventureWorksDW是微软官方的示例数据库)
如果用Windows身份验证,要在URL末尾加;Integrated Security=true;如果是SQL Server身份验证,就加;User=<你的用户名>;Password=<你的密码> - JDBC Driver Class: 填写
com.microsoft.analysisservices.jdbc.AnalysisServicesDriver - 其他参数保持默认就行,要是需要调整连接池大小也可以按需修改
- Variable Name: 给这个连接池起个好记的名字,比如
步骤3:添加JDBC Request取样器执行MDX
- 右键线程组 → 添加 → 取样器 → JDBC Request,然后填这些内容:
- Variable Name of Pool declared in JDBC Connection Configuration: 选择刚才配置的
SSAS_Cube_Conn - Query Type: 选
Select Statement(MDX查询本质就是查询语句,选这个就行) - Query: 输入你的MDX查询语句,比如:
SELECT [Measures].[Internet Sales Amount] ON COLUMNS, [Date].[Calendar Year].[Calendar Year] ON ROWS FROM [AdventureWorks]
- Variable Name of Pool declared in JDBC Connection Configuration: 选择刚才配置的
- 可以勾选「Query timeout」设置超时时间,避免测试时出现长时间无响应的情况
步骤4:添加监听器查看测试结果
- 给线程组添加「查看结果树」「聚合报告」「图形结果」这些监听器,运行测试后就能看到MDX查询的响应时间、吞吐量等关键性能指标了
方案二:通过XMLA over HTTP连接(适合SSAS配置了HTTP端点的场景)
如果你的SSAS服务器已经通过IIS配置了HTTP访问端点,那可以直接用JMeter的HTTP请求发送XMLA请求来执行MDX:
步骤1:确认SSAS的HTTP端点地址
- 比如你的SSAS HTTP端点是
http://<服务器IP>/olap/msmdpump.dll(这个地址要根据你的实际配置来)
步骤2:添加HTTP Request取样器
- 右键线程组 → 添加 → 取样器 → HTTP Request,填写参数:
- Server Name or IP: 你的SSAS服务器IP或者主机名
- Port Number: HTTP端口(默认是80,用HTTPS的话就是443)
- Path:
/olap/msmdpump.dll(和你的实际端点路径保持一致) - Method: 选择
POST - Body Data: 输入XMLA格式的MDX执行请求,示例如下:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Execute xmlns="urn:schemas-microsoft-com:xml-analysis"> <Command> <Statement> SELECT [Measures].[Internet Sales Amount] ON COLUMNS, [Date].[Calendar Year].[Calendar Year] ON ROWS FROM [AdventureWorks] </Statement> </Command> <Properties> <PropertyList> <Catalog>AdventureWorksDW</Catalog> <Format>Multidimensional</Format> </PropertyList> </Properties> </Execute> </Body> </Envelope>
- 如果需要身份验证,记得添加「HTTP Authorization Manager」元件,配置好Windows或者SQL认证的信息
步骤3:添加监听器分析结果
- 和方案一一样,添加「查看结果树」等监听器,运行测试后就能查看MDX查询的性能数据了
额外注意事项
- 要确保JMeter所在的机器能访问SSAS服务器的对应端口(比如2383或者HTTP端口),防火墙要开放这些端口
- 做负载测试时,调整线程组的线程数、Ramp-Up时间、循环次数,尽量模拟真实的用户并发场景
- 可以用JMeter的参数化功能(比如CSV Data Set Config)批量执行不同的MDX查询,覆盖更多的测试场景
备注:内容来源于stack exchange,提问作者Pragya Singh
相关产品推荐
相关产品推荐

