为什么Linux上的一个Java进程的工作速度与starte两次相同?

时间:2015-11-19 22:22:09

标签: java linux performance

我有一个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。

更新1

我的意思是,当只使用一个linux进程时,总吞吐量与使用两个进程时相同。

更新2

 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

更新3

好吧,除了cpu之外,应该有一个瓶颈。

我应该使用哪些工具或工具来查找它?(请记住,它是一个Java应用程序)

1 个答案:

答案 0 :(得分:1)

分而治之是解决这个问题的最佳方法。

例如,创建一个只查找每个文件和打印件的进程,然后测量运行的速率。如果速度慢,那么入站文件扫描就是慢点 - 无论是由于文件添加速度,文件系统运行缓慢还是其他需要进行诊断的原因造成的。

创建第二个进程,使用某些固定内容不断执行文件处理。记录处理何时停止并开始。

一旦你拥有了重现问题的最小代码,你就会更好地了解在何处找到缓慢的来源。