如何提升服务器系统性能
来源:互联网 发布:数据挖掘32个经典案例 编辑:程序博客网 时间:2024/06/05 19:05
众所周知,在服务器系统的开发上,对性能要求是很高的,特别在大批量并发中,服务器系统的性能就体现的尤为重要,常常会有人问:为啥我的CPU消耗那么大,为啥我的事务处理那么慢,执行效率无法提高等等此类的问题。那怎么提高系统的性能呢,联系目前的工作,对此谈谈看法。
1、服务器系统架构的不合理。
服务器在设计时,必须考虑整个系统架构的高效、稳定,高的可靠性和可用性。这点我深有体会,在最近的一个项目中,由于服务器需要接受大批量小数据的多客户端并发请求,对服务器的业务处理提出了挑战。原先的设计采用的了串行业务处理流程,结果导致服务器大量业务堆积,造成丢包现象异常严重。经过讨论后,为了提高服务器的业务处理能力,采用了生产者——消费者模型,在业务上来时,直接进队,然后返回,继续接受下一个请求,缩短通信的滞留时间。然后多条业务线程从队列取业务,加快业务处理速度,这样就有效的提高了服务器处理业务的能力。
2、通信协议的不合理。
对于大批量小数据多客户端并发,可以考虑用UDP协议,由于UDP是一种无连接传输协议,可以有效的降低系统开销,特别对大批量小数据的请求,效果明显,而TCP在这种情况对系统的消耗是很大的,往往会导致连接被拒绝,或者socket句柄已经存在的错误。有人可能就会问了,在服务端可以采用短连接,这样就可以节约资源。其实不然,大量socket的创建与销毁本来就是一种对系统性能的极度消耗,有时这种还没有直接使用长连接来的效率高。
在目前的P3项目就有体现,原本我们采用的就是TCP连接,当时并发量一直提不上去,而且在大量并发下,系统出现Socket的错误,资源消耗及其大,所以之后采用UDP协议,而TCP作为备用方案,来防止UDP的不可靠性。
3、大批量的内存创建、销毁,以及一切有关内存的操作都会影响到系统性能
这点对小量的并发,体现的并不明显,但是在大量并发下,这就会性能造成严重影响,这种内存的创建,销毁,以及内存的COPY等会消耗掉系统50%~60%的性能。对这种情况,尽量在系统启动时,创建好内存资源,然后再业务处理完后,回收资源,重新利用,切忌在大量业务处理时,new新的内存,处理完后,又delete内存资源,这样对系统性能消耗及其大。
另外,对于自定的协议包处理,尽量少用涉及到内存copy操作的函数或者类型,比如memset,string等,这样在打包与解包时,都会对系统性能造成影响。
- 如何提升服务器系统性能
- 服务器性能提升方法
- CentOS系统参数优化-提升MySQL服务器性能
- 提升系统并发性能
- 系统性能提升-AHCI
- ubuntu 系统性能提升
- 日常使用安卓系统如何提升其性能
- 架构师提升篇:分布式系统中,如何提升系统性能?
- 如何提升Eclipse性能
- 如何提升java性能
- android如何提升性能
- 如何提升程序员的“性能”
- 如何提升程序员的“性能”
- 如何提升程序员的“性能”
- 如何提升网站的性能?
- java反射如何提升性能
- 如何提升网页加载性能
- 如何提升 CSS 选择器性能
- OSGI项目持续集成(环境搭建, 编译和发布总结)
- 关于开博的想法
- Windows系统垃圾文件清除器
- What is co-operating?
- 使用链表的方法进行冒泡排序
- 如何提升服务器系统性能
- 编写ATL工程实现ActiveX控件调用cryptoAPI接口(五)------------获取证书转成Base64码
- HDU3832 Earth Hour 2011 Multi-University Training Contest 1 - Host by HNU
- js实现页面跳转的几种方式
- 防御式编程
- 无线网络的问题
- Effective C++学习心得(续)
- 高效能人士的七个习惯之积极主动
- PB中数据窗口的函数小结