2012-07-24 82 views
1

我在java nio軟件包中有一個聊天應用程序。我想測試服務器的容量。我運行我的服務器應用程序,客戶端程序正在運行一個批處理文件。所以我可以運行任何數量的客戶端。當268客戶端應用程序運行時,RAM停止進程。 Ram沒有足夠的內存來執行下一個客戶端。測試大約20k客戶端與服務器的連接

當Ram滿了時,處理器是否有使用硬盤存儲器的方法?不是Java堆空間

我使用的是Windows 7 32教授位,4 GP RAM,i5處理器

+0

爲什麼您需要支持20k連接? – casablanca 2012-07-24 05:56:10

+0

@casablanca我想創建一個支持至少20k客戶端的服務器。 (至少20k客戶端可以一次通信)所以我想測試我的服務器。 – Amith 2012-07-24 06:19:23

+0

我的問題是爲什麼你要這樣做 - 爲什麼所有的20k客戶端需要與單個服務器通信?一組服務器會更實用。 – casablanca 2012-07-24 06:35:37

回答

1

我最近嘗試了更謙卑實驗,2000 MySQL的螺紋客戶。
我恐怕你會碰到一些牆壁。
首先,你將有一個java 2GB堆大小限制。你應該考慮去一個64位的JVM。請參閱Maximum Java heap size of a 32-bit JVM on a 64-bit OS
然後,Windows 7 32位不處理超過3.12GB的RAM。你應該考慮一個64位操作系統
此外,操作系統不會讓你首先打開20k插座。檢查註冊表中的MaxUserPort。
如果你通過所有這些,可能是時候考慮CPU分配,在2k線程和你的i5下,這應該不成問題。但我不知道20k ...

0

對於你的負載測試,你應該分開服務器和客戶端。

運行服務器,並只在您的機器上運行。使用其他計算機運行客戶端。

這將避免你這種問題,並會更現實。你永遠不會有20K的客戶端和一臺服務器運行相同的機器:)

你也將能夠監視服務器的性能,而不會有客戶端干擾您的計算機,因爲您的資源將專用於您的服務器。

順便說一下,在w7中,有turboram,允許你插入一個USB適配器,以擴展您的計算機的RAM。這可以幫助你。

M.

+0

我將服務器和客戶端分開。服務器在PC 1中運行,客戶端在PC 1和PC 2中運行。但是兩臺客戶端計算機都有同樣的問題。 – Amith 2012-07-24 06:58:02

+0

您是否調整了在運行java應用程序以將更多或更少RAM分配給進程時使用的命令行?你在一個java程序中運行你的268客戶端還是啓動268個java進程? – poussma 2012-07-24 06:59:59

+0

268 java進程。我使用批處理文件從單個Java程序運行這個268 java進程。 – Amith 2012-07-24 07:05:08