服务器 频道

五大专家剖析应用服务器架构设计

    案例实践:高性能服务器程序设计(应用服务器调优)

    "在高性能服务器程序设计的过程中,需要注意可用性、稳定性、安全性以及可扩展和升级维护特性。" TOM在线网站事业部技术总监肖彬说道,"其中稳定性压到一切,在保证稳定性的同时追求更高的性能是系统设计和优化所追求的目标。"

TOM在线网站事业部技术总监肖彬先生

    肖彬表示,在高性能服务程序设计的过程中,需要首先发现系统的性能瓶颈,之后是针对瓶颈选择相应的平台、I/O策略,并构建服务器模型,通过连接池与缓存的搭配,搭建合理的数据库,协调所有的分布式计算平台,完成高性能计算任务。

    根据肖彬的经验,系统的性能瓶颈一般存在于数据拷贝、上下文切换、内存分配和锁竞争中。而相应服务器平台的选择,要注意Socket API效率、线程创建与销毁、I/O支持等三方面内容。"并发数在4000以上的话,选择FreeBSD会好一些,而Linux不管并发数如何,表现都比较稳定。"肖彬先生认为,"Select、Poll、Kqueue、/dev/poll、Epoll等几种I/O策略各有千秋,要看具体应用来选择I/Of方案。"

    对于服务器模型的建设,肖彬先生给出了几个需要注意的地方,分别是协议选择、工作模式、线程模式选择、prefork等,这其中的一个原则是:一切要从应用需求出发,不能盲目追求某种模型。

    另一方面,在连接池和缓存的管理上,肖彬先生建议要限制数据库的最大连接数以避免单一应用将数据库连接"吃满",也可以避免短连接。"而为了实现高性能的服务,我们不可能让每个请求都去访问后端数据库,为了提高效率,我们在缓存方面要尽可能的使用嵌入式数据库进行替代(如Berkeley DB),或者使用纯内存型缓存,如memcache等。"肖彬认为,"其实缓存这块一般我们都可以自主实现,如果能和开源项目里的相关成果为基础,性能会很出色。"

    最后,肖彬先生结合相关经验介绍了有关缓存、TCP选项的配置技巧,并针对高性能服务器程序设计的功能测试、压力测试、内存测试以及性能分析分享了经验。
 

0
相关文章