Server性能提升趣谈 - 思考篇

问题一,你有一个service, 对外提供两个接口,operationA需要执行20ms, operationB需要执行200ms, 然后可以将operationA的性能从20ms提升到18ms, 将operationB的性能从200ms提升到180ms. 如果我们只能提升一个,我们提升哪个呢?


从现在的信息来看,我们可以去将operationB提升到180ms,因为这样节省的时间是20ms大于A的2ms。但是如果我告诉你,根据分析operationA和operationB的被调用次数不一样,operationA的TPS是50,operationB的TPS是1, 你决定提升哪个呢?


因为:50*2ms > 1*20ms, 所以我们决定提升A的性能。那么现在如果告诉你提升A的性能需要的effort是20个man-week,而提升B的性能需要的effort是1个man-week, 你提升哪个呢?

根据ROI(Return On Investment)的话:

ROI(A): 50*2ms/20man-week = 5ms/man-week

ROI(B): 1*20ms/1man-week = 20ms/man-week

显然B的投入产出比更高,我们决定提升B的性能而不是A。


所以我们在解决问题的时候,一定要跳出自己的思维定势,要从宏观出发,找到bottleneck,然后按照优先级来决定我们先决定哪些问题,后解决哪些问题,不解决哪些问题,因为资源有限,可以利用剩余的资源做一些更重要的事情上。


问题二,根据性能报告,发现升级完应用程序后的性能比升级完应用程序的性能差很多。用控制变量法我们现在很容易的知道是因为升级了应用程序造成的。但是一定是应用程序的性能更差导致的吗?


答案是不一定的,有可能是因为应用程序的性能更好导致的。为什么这么说呢?比如你的应用程序后边连接了数据库,之前的数据库已经快over-loaded了。然后升级了应用程序之后,因为性能更好了,所以可以有更多的并发操作同时执行了,然后这些更多的并发操作就同时对数据库进行操作了,因为数据库本身就已经达到最大负载了,这时候更多的负载将超出数据库可以承受负载,最终导致性能恶化,使得每一个请求时间都比之前的长,从而导致整体的系统性能变差。

原文:http://blog.csdn.net/hongchangfirst/article/details/69400441

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值