2015-11-19 19 views
3

我有一個Java Soap客戶端發送一些XML文件到遠程服務器進行處理。爲什麼Linux上的一個Java進程與啓動兩次的速度相同?

它使用java 1.7的java.nio.file.WatchEvent<Path>(幾乎就像它的解釋here)監視添加到目錄的新文件。

它每分鐘處理大約2或3個文件。

尋找一種方法來提高發送和處理文件的速度我決定啓動同一個jar兩次,當然監控不同的目錄。

我無法解釋爲什麼兩個進程仍然每分鐘處理大約2或3個文件。我懷疑問題出在遠程服務器上,因爲我有一個日誌顯示每個文件開始和結束處理的時刻,並且在僅使用一個Linux進程時顯示與使用兩個時相同的行爲。

有關爲什麼會發生這種情況的任何想法?

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應用程序)

+4

當你說「以相同速度工作」時,你的意思是說,這兩個過程_combined_以與單個過程相同的速度工作,或者兩個_individually_單獨工作?我會承擔第一個案件。可能的瓶頸是文件訪問或帶寬,並且不會通過在兩個內核上運行該進程而加倍。 –

+1

Amdahl法則說你只是沒有CPU限制。 – chrylis

+0

我不明白。文件出現的速度有多快?你是否正在捱餓? *兩個*進程處理2-3 FPM,或*總數*吞吐量2-3 FPM?這些過程在哪裏花費他們的時間?如果是IO,那麼這是一個IO問題,與進程數量無關。 –

回答

1

分而治之是解決這個問題的最佳方法。

例如,創建一個只查找文件並打印出每個文件的進程,然後測量運行的速度。如果速度很慢,那麼入站文件掃描就是慢點 - 無論這是由於文件添加的速度,文件系統緩慢或其他需要進行診斷的原因。

創建第二個進程,使用一些固定的內容持續執行文件處理。處理停止並開始時記錄。

一旦你有最小的代碼重現問題,你會有一個更好的想法在哪裏找到緩慢的來源。

+0

我喜歡這個想法...我會嘗試它。謝謝。 (我不接受它作爲答案,給機會獲得其他想法) – elysch

相關問題