gpt4 book ai didi

java - 由于守护线程,Jmeter 未完成

转载 作者:行者123 更新时间:2023-12-01 17:45:50 36 4
gpt4 key购买 nike

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

测试.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()+ Math.random());
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

如果我缺少任何配置,请告诉我

最佳答案

  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文章了解更多详细信息。

关于java - 由于守护线程,Jmeter 未完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60866794/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com