十佳性能杀手

想让您的应用更慢么?我们有最好的系能杀手。本文不完全忠实原著,限于本人的知识一定会遗漏大量原著的思想,想看原文请移步。原作者  Andreas Grabner (是个大帅哥)


杀手一 数据库,不要停

常见的问题是在一次请求或者一个事务中进行了过多的查询,有三种现象可以用来识别它们。

1)请求的数据超过所需,比如请求了用户表的所有字段,而不是要在页面上显示的那几个。

2)相同数据被多次请求。这通常发生在同一事物中不同的组件相互独立工作,并需要同一部分数据,它们不知道那些数据可以在context中获得,所以只好再各自查询一次

3)为了得到某一组数据进行多次查询,这通常是因为没有认真的编写复杂的查询语句或者存储过程。


杀手二 同步到死

毫无疑问为了在应用中保护共享的数据被正确的访问,使用同步机制进行保护是必不可少的。但是太多的情况下,研发人员是哟很难过了过度的同步。把大段的处理过程放到了排他的同步段中。通常在低负载的情况下,比如开发环境,性能问题并不浮现出来,但是到了生产环境在高负载的情况下,过度的同步常常会带来严重的性能和可伸缩性的问题。


杀手三 信道上的话痨

有大量的类库使得远程通讯对于所有人来说都是小菜一碟。开发者几乎感觉不到调用远程方法和本地方法有啥区别。由于缺少远程方法调用工作方式的理解,人们经常会忘了每次远程调用都要面对的问题:延迟、[反]序列化、网络传输、内存占用。远程调用的容易使用使得人们过多的使用它从而引起了性能问题。


杀手四 ORM滥用

ORM框架可以帮研发人员容易的从DB中加载对象和把对象持久化。和其他的所有框架一样,ORM框架有众多的配置选项供人配置,不良的配置可以引起严重的性能问题。在使用框架时应该了解它的配置,并且应该了解它底层的工作机制。


杀手五 内存泄露

受控的运行是环境比如JAVA和.net在内存管理上有很大的优势,他们提供了垃圾回收机制。但是GC并不能杜绝内存泄露。被遗忘的对象会一直留在内存中,并最终引起内存泄露,甚至可能引发OutOfMemory的错误。所以当一个对象不再需要的时候,要尽快移除对它的引用。



写的好累,未完待续

to be continued

每个杀手都有对应的解决方案,是单独的文章,原文里有链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值