2012-07-24 79 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

相关问题