我们想要启动一个大型的多层应用程序.服务器端应用程序必须同时响应超过1000个用户.我们想用64位编译器和32位客户端创建服务器应用程序.在这种情况下,我们不知道DataSnap可以毫无问题地响应所有客户端吗?
在这种情况下,服务器计算机非常强大(多处理器和超过16GB的RAM),数据库管理系统是FireBird 2.5.
在这种情况下,服务器计算机非常强大(多处理器和超过16GB的RAM),数据库管理系统是FireBird 2.5.
解决方法
您需要一种方法来执行实际的负载测试.
对于Firebird数据库,您可以使用免费的Apache JMeter工具模拟并发用户.它可以运行sql语句并记录它们的执行时间统计信息(平均值,最小值/最大值等).因此,您可以创建一个包含20个不同SQL查询的线程组,然后运行20个线程,每个线程将按顺序执行这些查询.
JMeter允许在SQL查询上定义时间限制,如果查询超出此限制,JMeter会将其视为错误.然后,您可以尝试查找总体错误率仍小于(例如)5%的最大客户端计数.
但是您还需要知道预期的数据库负载有多高,并且您还需要具有实际大小的测试数据库,而不仅仅是几个记录.此外,某些数据库查询(如报告)可能会导致更高的负载 – 这些也应包含在模拟中,因为它们会影响整体性能.在JMeter中,您可以创建第二个线程组,与第一个线程组并行运行,用于具有不同设置的这些长时间运行的语句(模拟客户端较少).
测试数据库将显示此区域是否存在瓶颈.例如,测试结果可能是数据库可以服务20个客户端,总平均事务速率为20 TPS(每秒事务数),这意味着一个客户端每秒执行一个事务.但是这个TPS值会随着用户数量的增加而减少.
相关问题:Firebird usage in big projects也有链接到http://www.firebirdsql.org/en/case-studies-catalog/
关于DataSnap客户端负载模拟:这可以通过脚本化客户端完成,该客户端通过连接运行预定义的一组语句/命令.
要同时运行大量负载测试客户端,您可以使用Amazon Elastic Compute Cloud(EC2)等服务来启动测试计算机映像的克隆,从而节省硬件成本.但是我当然会从一台小型客户端机器开始,它只运行十到二十个脚本客户端.