2010-03-10 77 views
0

我需要编写一个多线程Java应用程序,用于加载测试MMS服务器。当MMS服务器向我的多线程Java应用程序指示MMS已到达服务器,然后我需要使用MMS服务器支持的协议从MMS服务器下载MMS的一部分时,交易开始。一旦成功下载附件,则标志着交易的完成,由于它是MMS服务器的负载测试应用程序,预期的TPS高于1400 TPS,因此我需要为此应用程序提供硬件要求,我觉得我需要一个水平扩展以及一个负载平衡器和一个GBPS的网络连接来下载附件。如果我有2个盒子,那么每个盒子必须处理700个TPS,对于部署在Solaris盒子上的多线程Java应用程序实现700 TPS的性能是否可行。请让我知道您在架构,硬件方面的想法,如果我能得到关于哪些Solaris硬件需要考虑的建议,这将会很有帮助。在我看来,我有Solaris T5220。负载测试多线程Java应用程序1400 TPS必需

非常感谢您的帮助。

+0

你会调用测试的输出TPS报告:) –

回答

1

我怀疑你需要这么大的机器。这取决于很多不同的因素,其中代码质量可能是最重要的因素。

关于网络使用情况,您应该真正想出一个平均附件数量的KB。对于10 KB附件,1400 TPS意味着每秒14,000 KB或14 MB。对于1 MB,它将是每秒1.4 GB - 完全不同,不是吗?

对于每秒1.4 GB的存储空间,您还可能会遇到一些严重的问题将其存储在某个地方 - 如果这是必需的话。

处理本身不应该是一个太多的问题(但同样取决于多种不同的因素)。

你可以做的最好的事情是使用任何免费的硬件(或虚拟机),你可以抓住并运行一些测试。只要看看你得到了什么数字,并决定从那里去哪里。

+0

如果你不得不坚持所有下载的字节,那么你可能会发现你的基于Java的加载工具将进行大量垃圾收集,这可能会成为抑制因子。 – Benjamin

+0

非常感谢您的回复,应用程序期望的平均处理速度为1400 TPS,平均大小为75KB,因此我需要有100 MBPS的网络。正如本杰明提到的,我有点担心垃圾收集,因为我需要解决每秒近100MB的数据。我有一个问题,因为不会增加线程数量会对TPS产生影响。对于例如:1)我有一个200线程的线程连接池来处理1000个事务2)我有另一个线程连接池和500个线程来解决相同的1000个事务哪个选项会再次提供更好的性能/ TPS – Vijay

+0

@Vijay,this强烈依赖于您的客户的一些其他特征的实施。如果使用非阻塞IO,我不建议使用比可用内核多得多的线程。如果你有一个阻塞实现,你需要的线程数取决于一个事务完成的时间。如果一个事务需要10ms,一个线程可以处理(接近)100TPS,因此你需要14个线程。如果事务需要2秒钟才能完成,则需要2800个线程。再次,抓住一些硬件,进行测试,找出瓶颈并继续。 – sfussenegger