Jmeter由于守护程序线程而未完成

问题描述 投票:0回答:1

我正在尝试在JMX服务器上从非GUI模式运行linux文件。使用SFTP协议尝试将文件上传到对象存储。下面是用于运行脚本的脚本和配置。

Test.jmx

import com.jcraft.jsch.*;
import java.io.*;

def jsch = new JSch()
def session = jsch.getSession("user1", "xyz", 4000) 
session.setConfig("StrictHostKeyChecking", "no")
session.setPassword("password")
def sftpSession = session.connect()
def channel = session.openChannel("sftp")
channel.connect();
def channelSftp = (ChannelSftp)channel;
log.info("SFTP Connection with host is acquired" + channelSftp)
channelSftp.cd("/0002/test/upload/r9a1");
def f1 = new File("/home/dc-user/Files/test_exact5mb.txt");
channelSftp.put(new java.io.FileInputStream(f1), f1.getName()+i);
session.disconnect()

使用的配置是线程数-150加速期-1循环计数-1

运行脚本后,上载150个文件,有时上载126、129或141个文件,但上载150个文件。以下是我在终端上看到的错误

The JVM should have exited but did not.
The following non-daemon threads are still running (DestroyJavaVM is OK):
Thread[Connect thread 10.157.147.242 session,5,main], stackTrace:java.net.SocketInputStream#socketRead0
java.net.SocketInputStream#socketRead at line:116
java.net.SocketInputStream#read at line:171
java.net.SocketInputStream#read at line:141
com.jcraft.jsch.IO#getByte at line:82
com.jcraft.jsch.Session#read at line:908
com.jcraft.jsch.Session#run at line:1378
java.lang.Thread#run at line:74

如果缺少任何配置,请让我知道

java linux multithreading jmeter jsch
1个回答
0
投票
  1. 我看不到这段代码的工作方式,因为您的i没有在任何地方定义,因此甚至无法编译
  2. 似乎某些线程无法完成,因为它们仍在读取内容,我相信您有某种形式的SLAsNFRs定义了文件上传操作和测试的最大可接受时间似乎已经超过了这个时间。

    所以在调用def sftpSession = session.connect()之前,我建议像下面这样放置Session.setTimeout()函数调用:

    session.setTimeout(5000)
    

    这样,如果操作在5秒钟内未完成,则采样器将失败

如果您对使用SSH SFTP采样器的Groovy脚本不太满意,请查看Load Testing FTP and SFTP Servers Using JMeter文章以获取更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.