1

我在 java nio 包中有一个聊天应用程序。我想测试服务器的容量。我运行我的服务器应用程序,而客户端程序正在通过批处理文件运行。这样我就可以运行任意数量的客户端。当 268 客户端应用程序运行时,RAM 会停止该进程。Ram 没有足够的内存来执行下一个客户端。

当 Ram 已满时,处理器有什么办法使用硬盘内存吗?不是java堆空间

我正在使用 Windows 7 Prof 32 位,4 gp 内存,i5 处理器

4

2 回答 2

1

我最近用 2000 个 MySQL 线程客户端尝试了一个更简单的实验。
而且我担心你会撞到很多墙。
首先,您将有一个 java 2GB 堆大小限制。您应该考虑使用 64 位 JVM。请参阅64 位操作系统上 32 位 JVM 的最大 Java 堆大小
然后,Windows 7 32 位不能处理超过 3.12GB 的 RAM。您应该考虑使用 64 位操作系统
此外,操作系统一开始不会让您打开 20k 套接字。检查注册表中的 MaxUserPort。
如果您通过了所有这些,可能是时候考虑 CPU 分配了,在 2k 线程和您的 i5 下,这应该不是问题。但是我不知道20k ...

于 2012-07-24T06:44:10.517 回答
0

对于负载测试,您应该将服务器和客户端分开。

运行服务器,并且仅在您的机器上运行。使用其他计算机运行客户端。

这将避免您遇到此类问题,并且会更加现实。您永远不会有 20k 客户端和运行同一台机器的服务器 :)

您还可以在没有客户端干扰的情况下监控服务器的性能,因为您的资源将专用于您的服务器。

顺便说一句,在 w7 中,涡轮增压器允许您插入 USB 加密狗来扩展计算机的 RAM。这可以帮助你。

M。

于 2012-07-24T06:50:35.093 回答