`
cloudmail
  • 浏览: 271938 次
  • 来自: 广州
社区版块
存档分类
最新评论

[转]高性能接入sever开发优化

 
阅读更多

从事高性能后台服务的开发2年,做大的支持是17w/s的访问100%cpu。这个数据是前几天在一个Server终极测试中得出的。其实后台服务器的反映快慢取决于其服务的类型。几个数据是这样的。

内存访问:300w/s.即us级别。访问一次300ns。

sock访问us级别。

磁盘访问ms级别。包括数据库。

如果只靠访问内存,你的Server应该处理30W/s的访问才能算达到要求。这个后续主要受限于fd的通知机制和高并发能力的epoll框架。当在网络层做到内核级优化,并且尽可能去掉内核中的锁,应该提高到40w/s甚至50w/s的访问。

高性能接入的关键是网络接入的性能和高效的通知机制。高性能对的网络处理必须的借个原则:

1.绝不能在网络处理部分加锁。

2.采用单进程的比共享的所效率提升3倍,加锁使网络吞吐能力大幅下降。

3.使用内存暂存数据,内存的管理必需预先分配好,寻找任一块的内存做到O(0).内存管理算法,这里大家去研究。我所处理的是分布式系统的高并发接入机,其中还涉及到后端的cache服务器的路由等。这个业务是server的逻辑,这个一块路由的设计也是有讲究的。要想最短的路由时间,必须设计可靠的内存访问和O(0)的路由查找算法。这一方面相信大家也应该懂了。

4.共享内存的访问跟内存访问一样。不过实际生产环境中往往需要对共享内存加锁。加锁使用信号量来实现。现在知道posix那一套多么牛X了。进程之间的通信,优选posix。经过测试表明,system V的接口比posix接口慢50%以上。显然现代的更先进。

5.去掉代码中的STL的链表,vector等操作,采用代替方案。对性能有非常大的提升,对减轻CPU消耗贡献巨大。良好的程序架构是减少bug的最好途径。代码需要反复检查。在分布式系统的访问都是多状态的。状态机的各部分处理是核心。需要对每一次请求做出最少的代价,需要很多脑筋可动的;包括代码的减少和函数的调用。很多系统调用代码,自己采用简单的方法实现。

6.减少时间函数的待用。缓存系统时间是一个非常好的优化,将时间用于整个处理的流程中几倍可以将cpu降低10个百分点。减少了系统空间和用户空间的调用。有兴趣可以看看内核代码。linux取的时间是不准确的,取时间需要加锁。进入内核空间,去读取cmos的时钟数据。每次更新系统时间都是原子性的操作。

转自: http://origin-software.intel.com/zh-cn/blogs/2011/09/28/sever/

分享到:
评论

相关推荐

    SQL Sever服务器性能优化.pdf

    SQL Server服务器性能优化的知识点涵盖以下几个方面: 一、性能优化的重要性与影响因素 性能优化是一项挑战性的工作,它涉及到数据库系统的整体运行效率。影响SQL Server服务器性能的主要因素包括: - SQL语句的...

    ArcGIS Sever开发从入门到精通

    ArcGIS Sever开发从入门到精通

    VC+++SQL SEVER,ado连接数据库

    在实际开发中,可能还需要处理异常、优化性能、使用参数化查询等高级话题。在提供的"ADODemo"项目中,你将看到这些概念的具体实现,通过学习和实践,你可以更好地理解和掌握ADO在VC++中的应用。

    VB连接SQL Sever 2005数据库

    使用VB6.0连接SQL Sever 2005 数据库的源代码

    SQL Server性能优化专题之五:负载均衡

    在SQL Server性能优化的过程中,负载均衡是一个至关重要的概念,尤其对于处理大型数据库的场景。负载均衡旨在有效地分配系统资源,确保服务器性能的稳定性和高可用性,避免单一节点过载,提高整体系统的响应时间和...

    SQL Sever 2000系统编程时的性能优化.pdf

    在讨论SQL Sever 2000系统编程性能优化时,重点会集中在查询设计和数据维护这两个方面。性能优化是数据库管理中的一个核心问题,特别是在涉及大量数据时,优化可以极大地提高查询效率,减少系统资源消耗,从而避免...

    java连接SQL Sever 2012数据库

    "Java 连接 SQL Server 2012 数据库" Java 连接 SQL Server 2012 数据库是指使用 Java 语言连接和操作 SQL Server 2012 数据库的过程。下面将详细介绍连接 SQL Server 2012 数据库的步骤。 前提条件 ...

    JDBC连接SQL Sever2000 解决方案

    JDBC连接SQL Sever2000 解决方案 本人亲身经历的数据库与jsp通信问题,在baidu,google上多次查找无法和与多位从事开发工作的朋友探论无法解决的情况下,本人在思考后,找到问题所在,现将他发布出来,希望能对一些...

    CLIENT+SEVER开发

    在IT行业中,客户端-服务器(Client-Server)开发是一种常见的架构模式,用于构建分布式系统。在本项目中,"CLIENT+SERVER开发"涉及到利用SOCKET技术进行通信,并结合数据库存储和移动定位功能,且所有这些组件都...

    SQL sever远程连接

    SQL sever远程连接

    用vc++和sql sever开发的贸易系统

    自己做的一个用vc++ 和 sql sever 开发的贸易系统 包括增删改查的功能和 根据需要导出excel形式的报表的功能

    不影响监控目标性能的SQLSever数据库远程监控

    资源名称:不影响监控目标性能的SQL Sever数据库远程监控资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    SQL Server 2012 深入解析与性能优化

    第3版、SQL Server、SQL Server 2012 进行深入解析与性能优化

    C#已封装好的连接sqlsever类,只需要改动连接字符串就能使用

    C#已封装好的连接sqlsever类,只需要改动连接字符串就能使用

    SQL SEVER软件开发工具包

    SQL SEVER数据库工具包,目前主要用于PHP后台开发和操作

    SQL SEVER 2000认证试题

    从给定的文件信息中,我们可以提炼出两个关键的知识点:使用SQL Server 2000进行数据管理和处理...掌握这些技术对于数据库开发人员来说至关重要,尤其是在处理分布式数据库环境或需要与其他系统进行数据交换的场景下。

    Android高级应用源码-android 通过jdts.jar 连接SQLSEVER2008.zip

    本资源提供的"Android高级应用源码-android 通过jdts.jar 连接SQLSEVER2008.zip"是一个示例,它展示了如何在Android应用程序中使用Java Database Toolkit (jdts.jar)库来连接到SQL Server 2008数据库。以下是这个...

    商品订购管理系统 利用了C#语言和SQLsever连接的方法 实现了数据的应用性 数据的保存性

    在windows操作系统下开发,运用数据库SQLsever跟c#语言共同开发的 实现了订购管理信息的目的,其中增删查改很好的体现了 还有就是运用捕获异常的方法实现了功能,请您仔细运用,也许有很多漏洞,请您多多指教,互相...

Global site tag (gtag.js) - Google Analytics