我有一个高性能的软件服务器应用程序,预计在未来几个月内流量会增加。
我想知道使用什么方法或方法来衡量服务器是否仍有能力处理这种增加的负载?
我想你正在寻找压力测试,场景应该是这样的:
-
创建模拟当前实际应用程序使用的负载测试
-
从当前用户数量开始,逐渐增加负载,直到
- 你到达了"增加的流量";金额
- 或开始出现错误
- 或者你开始观察到性能下降
无论第一个是什么
-
根据结果,您可以声明您的服务器可以在没有任何问题的情况下处理增加的负载,也可以提出饱和点和第一个瓶颈
-
您可能还想执行浸泡测试——让系统长时间处于高负载下数小时或数天,这样您就可以检测内存泄漏或其他容量问题。
更多信息:为什么"正常"负载测试还不够
使用十分之一的数据和流量测试产品。确保活动是"现实的"。
然后考虑一下随着流量的增长会发生什么——RAM、磁盘、cpu、网络等是否线性增长?
当你这样做的时候,寻找";热点";。优化它们。
你会使用网页吗?数据库?等等。这些东西的尺度各不相同。(换句话说,您在问题中没有提供足够的详细信息。(
大多数固定基准都集中在计算的一个小方面;将结果应用于特定的应用程序是不确定的。
我会从收集关键资源的基线数据开始,通常是CPU、内存使用率、磁盘使用率、网络使用率,并随着时间的推移跟踪它们。如果这些资源中的任何一个在当前使用情况下以100%的容量保持超过几分之一秒的时间出现定期峰值,那么您就在某个地方遇到了瓶颈。在这种情况下,如果没有可能的中断,您就无法接受额外的负载。
接下来,我将开始弄清楚应用程序的瓶颈资源是什么——它在应用程序之间有所不同,但在大多数情况下,是瓶颈资源阻止了您进一步扩展。例如,您的CPU可能几乎处于空闲状态,但磁盘I/O正在乱转。这是一个棘手的过程——负载和压力测试是一条路。
如果你能通过购买更好的硬件来解决瓶颈,那就这么做吧——这比重写软件便宜得多。如果你买不到更好的硬件,可以考虑负载平衡。如果不能实现负载平衡,就必须研究应用程序体系结构和实现,看看是否有办法解决瓶颈。
瓶颈从一个资源转移到下一个资源是很典型的——你有CPU来工作,但现在当你增加流量时,你的磁盘I/O就会激增;一旦你解决了这个问题,你可能会遇到另一个CPU挑战。