我正在开发一个工具,它使用JSch库从远程机器读取日志文件以进行日志解析和其他一些功能。下面给出了读取日志文件的代码。
JSch jsch=new JSch();
Session session=jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
ChannelSftp sftp = (ChannelSftp) session.openChannel("sftp");
sftp.connect();
InputStream stream = null;
try {
//this will be changed to execute on a regular time interval
while (true) {
stream = sftp.get(rfile);
read(stream);
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
stream.close();
sftp.disconnect();
session.disconnect();
}
但是,该工具有可能部署到生成日志的计算机上。所以,我的问题是,
1)我怀疑使用 sftp.get()的性能问题,因为日志文件将以固定间隔(例如5分钟)读取。有什么建议可以提高绩效吗?
2)JSch是否具有相同的网络开销,用于从本地机器读取类似于远程机器的文件。
3)如果是,如果日志正在从本地计算机读取,是否有任何方法可以提高性能。
在阅读日志文件之前,我可以检查目标和主机的IP地址。如果两者相同,我可以直接读取日志。但是,还有更好的选择吗?
谢谢, NKS