Concurrency 关于(类似工具的)LoadRunner的概念问题
我正在使用LoadRunner对J2EE应用程序进行压力测试 我有:1台MySQL数据库服务器,1台JBoss应用服务器。每个都是一个16芯(1.8GHz)/8GB RAM盒 连接池:数据库服务器正在Concurrency 关于(类似工具的)LoadRunner的概念问题,concurrency,parallel-processing,conceptual,loadrunner,Concurrency,Parallel Processing,Conceptual,Loadrunner,我正在使用LoadRunner对J2EE应用程序进行压力测试 我有:1台MySQL数据库服务器,1台JBoss应用服务器。每个都是一个16芯(1.8GHz)/8GB RAM盒 连接池:数据库服务器正在my.cnf中使用max\u connections=100。应用服务器也在mysql-ds.xml和mysql-ro-ds.xml中使用min-pool-size和max-pool-size=100 我正在模拟一台“普通”单核PC上100个虚拟用户的负载。这是一个1.8GHz/1GB的RAM盒 该
my.cnf
中使用max\u connections=100
。应用服务器也在mysql-ds.xml
和mysql-ro-ds.xml
中使用min-pool-size
和max-pool-size
=100
我正在模拟一台“普通”单核PC上100个虚拟用户的负载。这是一个1.8GHz/1GB的RAM盒
该应用程序部署并在100 Mbps以太网LAN上使用
我在压力测试脚本的部分中使用了集合点来模拟现实世界中的并行(而不是并发)使用
问题:
这台产生负载的PC上的CPU利用率永远不会达到100%,我相信,内存也是可用的。因此,我可以尝试在这台电脑上添加更多的虚拟用户。但在此之前,我想了解关于并发性/并行性和硬件的1到2个基本知识:
/对我来说,你似乎有点想得太多了。您的服务器速度快且新颖,非常适合处理大量客户端。你的瓶颈(如果你有)要么是你的应用程序本身,要么是你的100m网络 一,二。您正在测试服务器,而不是客户端。在这种情况下,客户机所做的一切就是发送和接收数据——客户机处理没有任何开销(呈现HTML、解码图像、执行javascript等等)。最近的unicore机器很容易使千兆链路饱和;应安装100 mbit管道 此外,较新/更高级的以太网卡中的处理器从CPU上卸下了大量工作,因此您不必期望CPU受到影响
三,。不要使用集线器。你可以在craigslist上花5美元买到一个1亿美元的集线器,这是有原因的 如果不更好地了解您的应用程序,很难回答其中的一些问题,但一般来说,您是正确的,要实现服务器的“真正”压力测试,最好有100个内核(使用100个并发用户的目标),即100台PC。然而,各种各样的问题可能会表明这是一个不需要动脑筋的问题 我有一个几年前构建的通信引擎(.NET/C#),它使用异步套接字-需要尽可能快的速度,所以我们不得不忘记在套接字上添加任何附加层,如HTTP或任何其他更高的抽象。该服务器运行在具有4GB内存的四核3.0GHz计算机上,可轻松处理约2200个并发连接的流量。有一个Gb交换机,所有PC都有Gb NIC。即使所有PC机同时通信,在该服务器上也很少看到处理器负载超过30%。我认为这是因为“整个系统”中固有的所有延迟 我们有一个新的需求,即支持50000个并发用户,我目前正在实现这个需求。该服务器具有双四核2.8GHz处理器、64位操作系统和12GB内存。我们的模型显示,这台计算机足以处理5万用户 我提到的网络延迟(别忘了CAT 3 vs.CAT 5 vs.CAT 6问题)、数据库连接、存储的数据类型和平均记录大小、参考问题、背板和总线速度、硬盘驱动器速度和大小等问题在“总体上”降低平台速度方面起着与任何事情一样的作用我猜你的系统可能有500、750、1000甚至更多的用户 过去的目标是永远不要让线程阻塞太久。。。新的目标是让所有内核保持忙碌 我有另一个应用程序可以下载和分析每天约7800个URL的内容。在双四核3.0GHz(Windows Ultimate 7 64位版)上运行,具有24GB的RAM,该过程通常需要约28分钟才能完成。只需将循环切换到Parallel.ForEach()即可,整个过程现在只需<5分钟。我们所看到的处理器负载始终小于20%,最大网络负载仅为14%(Gb上的第5类)