Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要负载测试多线程Java应用程序1400 TPS_Java_Performance - Fatal编程技术网

需要负载测试多线程Java应用程序1400 TPS

需要负载测试多线程Java应用程序1400 TPS,java,performance,Java,Performance,我需要编写一个多线程Java应用程序,用于对MMS服务器进行负载测试。当MMS服务器向我的多线程Java应用程序指示MMS已到达服务器,然后我需要使用MMS服务器支持的协议从MMS服务器下载作为MMS的一部分的附件时,事务开始。一旦成功下载附件,则标志着交易完成,因为它是MMS服务器的负载测试应用程序,预期TPS高于1400 TPS,因此我需要提供此应用程序的硬件要求,我觉得我需要一个水平扩展、负载平衡器和以GBPS为单位的网络连接来下载附件。如果我有两个盒子,那么每个盒子必须处理700 TPS

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


非常感谢你的帮助

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

关于网络使用情况,您应该给出平均附件的KB数。对于10KB附件,1400 TPS意味着14000KB或每秒14MB。对于1MB,它将是每秒1.4GB——这是一个很大的差别,不是吗

对于每秒1.4 GB的速度,如果这是一个要求的话,那么在存储它时也可能会遇到一些严重的问题

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


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

你会调用测试TPS报告的输出:)如果你必须保留下载的字节,那么你可能会发现你基于Java的加载工具将进行大量垃圾收集,这可能会成为一个抑制因素。非常感谢你的回复,应用程序的期望是处理平均75KB附件大小的1400个TPS,因此我需要100 MBPS的网络。正如Benjamin提到的,我对垃圾收集有点担心,因为我需要每秒处理近100MB的数据。我有一个问题,因为线程数量的增加是否会对TPS产生影响。例如:1)我有一个包含200个线程的线程连接池来处理1000个事务2)我有另一个包含500个线程的线程连接池来处理相同的1000个事务,该选项将提供更好的性能/TPS@Vijay同样,这在很大程度上取决于客户机的实现和其他一些特性。如果您使用非阻塞IO,我不建议使用比现有内核多得多的线程。如果有阻塞实现,则所需的线程数取决于事务完成所需的时间。如果一个事务需要10毫秒,那么一个线程可以处理(接近)100个TPS,因此需要14个线程。如果事务需要2秒钟才能完成,则需要2800个线程。再次,抓取一些硬件,运行测试,找出瓶颈并继续。如果您认为客户端或网络(不要忘了网络硬件——便宜的办公室交换机可能会成为一个问题)是一个问题,请在多个客户端之间分配负载,并尝试避免不必要的联网(尽可能只使用交叉电缆连接您的客户机和服务器)非常感谢您的回复,它正在引导我实现一个原型,将实现相同的功能并确定瓶颈。