[精品]浅谈如何提高服务器并发能力

[精品]浅谈如何提高服务器并发能力

ID:43779782

大小:62.55 KB

页数:7页

时间:2019-10-14

[精品]浅谈如何提高服务器并发能力_第1页
[精品]浅谈如何提高服务器并发能力_第2页
[精品]浅谈如何提高服务器并发能力_第3页
[精品]浅谈如何提高服务器并发能力_第4页
[精品]浅谈如何提高服务器并发能力_第5页
资源描述:

《[精品]浅谈如何提高服务器并发能力》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、浅谈如何提高服务器并发能力浅谈如何提高服务器并发能力摘要:提高服务器的处理能力,是目前计算机界的一个关键问题,服务器性能的好坏,直接影响着机器的成本和用户的体验。该文首先介绍了服务器并发处理能力的定义和衡量方法,并详细介绍了提高服务器并发处理能力的几种方法。作为入门级的介绍,意在对传统以及当下前沿的技术作较全的概况总结。关键词:服务器;并发;多进程;I/O;性能优化中图分类号:TP368.5文献标识码:A文章编号:1009-3044(2014)28-6764-031什么是服务器并发处理能力一台服务器在单位时间里能处理的请求越多,服务器的能力越高,也就是

2、服务器并发处理能力越强。如何提高服务器的处理能力,是目前计算机界的一个关键问题[1-4]o服务器的本质工作就是,争取以最快的速度将内核缓冲区中的用户请求数据都拿出来,然后尽快处理,再将响应数据放到一块又能够与发送数据的缓冲区中,接着处理下一个请求。2衡量方法2.1吞吐率吞吐率:单位时间里服务器处理的最大请求数,单位REQ/So2.2压力测试压力测试前提考虑的条件:并发用户数、总请求数、请求资源描述。3如何提高并发处理能力3.1提高CPU并发处理能力1)多进程[5]多进程的好处不仅在于CPU时间的轮流使用,还在于对CPU计算和I/O操作进行很好的重叠利用

3、,这里的I/O主耍指磁盘I/O和网络I/O.实际上,大多数进程的时间主要消耗在I/O操作上,现代计算机的DMA技术可以让CPU不参与I/O操作的全过程,比如进程通过系统调用,使得CPU向网卡或者磁盘等I/O设备发出指令,然后进程被挂起,释放出CPU资源,等待I/O设备完成工作后通过中断来通知进程重新就绪。对于单任务而言,CPU大部分时间空闲,这时候多进程的作用尤为重要。2)减少进程切换进程拥有独立的内存空间,每个进程都只能共享CPU寄存器。一个进程被挂起的本质是将它在CPU寄存器中的数据拿出来暂存在内存态堆栈着那个,而一个进程恢复工作的本质就是把它的数

4、据重新装入CPU寄存器,这段装入和移出的数据称为“硬件上下文”,除此之外,进程上下文还包含进程允许所需的一切状态信息。当硬件上下文频繁装入和移出时,所消耗的时间是非常明显的。为了尽量减少上下文切换次数,最简单的做法就是减少进程数,尽量使用线程并配合其它I/O模型来设计并发策略。还可考虑使用进程绑定CPU技术,增加CPU缓存的命中率。若进程不断在各CPU上切换,这样旧的CPU缓存就会失效。3)减少使用不必要的锁服务器处理大量并发请求吋,多个请求处理任务时存在一些资源抢占竞争,这时i般采用“锁”机制来控制资源的占用,当-•个任务占用资源时,我们锁住资源,这

5、吋其它任务都在等待锁的释放,这个现象称为锁竞争。通过锁竞争的木质,我们要意识到尽量减少并发请求对于共享资源的竞争。比如在允许情况下关闭服务器访问H志,这可以大大减少在锁等待时的延迟时间。无锁编程[6],就是由内核完成这个锁机制,主要是使用原子操作替代锁来实现对共享资源的访问保护,使用原子操作时,在进行实际的写操作时,使用了lock指令,这样就可以阻止其他任务写这块内存,避免出现数据竞争现象。原子操作速度比锁快,一般要快一倍以上。例如fwrite(),fopen(),其是使用append方式写文件,其原理就是使用了无锁编程,无锁编程的复杂度高,但是效率快

6、,而且发生死锁概率低。4)其它除了上述所说,要优化服务器的并发处理能力,需关注程优先级,进程调度器会动态调整运行队列中进程的优先级,通过top观察进程的PR值;关注系统负载,可在任何吋刻查看/proc/loadavg,top中的loadaverage也可看出;关注CPU使用率,除了用户空间和内核空间的CPU使用率以外,还要关注I/Owait,它是指CPU空闲并且等待I/O操作完成的吋间比例。3.2考虑系统调用进程若运行在用户态,这时可使用CPU和内存来完成一些任务,而当进程需要对硬件外设进行操作的时候(如读取磁盘文件,发送网络数据等),就必须切换到内核

7、态,这时它拥有更多的权力來操纵整个计算机。而系统调用涉及进程从用户态到内核态的切换,导致一定的内存交换,这也是一定程度上的上下文切换,所以系统调用的开销通常认为比较昂贵的。3.3考虑减少内存分配和释放服务器的工作过程中,需要大量的内存,使得内存的分配和释放工作尤为重要。通过改善数据结构和算法复制度来适当减少中间临时变量的内存分配及数据复制时间,而服务器本身也使用了各自的策略来提高效率。例如Apache,在运行开始时一次申请大片的内存作为内存池,若随后需要时就在内存池中直接获取,不需要再次分配,避免了频繁的内存分配和释放引起的内存整理吋间。3.4考虑使用

8、持久连接持久连接也为长连接,它本身是TCP通信的一种普通方式,即在一次TCP连接中持续发送多分

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。