我有一个Java Soap Client,它将一些xml文件发送到远程服务器进行处理。
它使用java 1.7&#39; java.nio.file.WatchEvent<Path>
(几乎就像它解释here一样)来监控添加到目录中的新文件。
每分钟处理大约2或3个文件。
寻找提高发送和处理文件速度的方法我决定两次启动同一个jar,当然要监控不同的目录。
我无法解释为什么两个进程仍然每分钟处理大约2或3个文件。我怀疑问题是在远程服务器中,因为我有一个日志显示每个文件开始和结束它的处理时间,并且它显示几乎相同的行为,当只使用一个linux进程而不是使用两个。 / p>
关于为什么会发生这种情况的任何想法?
P.S.1不知道我应该在这里添加什么信息。随意问。
P.S.2服务器是虚拟服务器,正在使用:
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) Server VM (build 23.3-b01, mixed mode)
日Thnx。
我的意思是,当只使用一个linux进程时,总吞吐量与使用两个进程时相同。
vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
5 0 0 1716872 0 0 0 0 1874 1960 0 6 17 7 74 2 0
好吧,除了cpu之外,应该有一个瓶颈。
我应该使用哪些工具或工具来查找它?(请记住,它是一个Java应用程序)
答案 0 :(得分:1)
分而治之是解决这个问题的最佳方法。
例如,创建一个只查找每个文件和打印件的进程,然后测量运行的速率。如果速度慢,那么入站文件扫描就是慢点 - 无论是由于文件添加速度,文件系统运行缓慢还是其他需要进行诊断的原因造成的。
创建第二个进程,使用某些固定内容不断执行文件处理。记录处理何时停止并开始。
一旦你拥有了重现问题的最小代码,你就会更好地了解在何处找到缓慢的来源。