知识库

怎么提升服务器的并发处理能力呢?
2022-06-08 16:39:05
阅读()
来源:互联数据
摘要:     服务器高并发能力体现着服务器在单位时间内的很强数据处理能力,一般来说,并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个

服务器高并发能力体现着服务器在单位时间内的很强数据处理能力,一般来说,并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。那么我们要如何如何衡量高并发,又怎么提升服务器的并发处理能力呢?


提升服务器的并发处理能力http://www.hkt4.com/network/cdn.html


一、通过高并发衡量指标看如何衡量服务器出现高并发问题呢?


1、观察服务器响应时间:系统对请求做出响应的时间,即一个http请求返回所用的时间;


2、服务器吞吐量:单位时间内处理的请求数量;


3、QPS(TPS):每秒可以处理的请求数或事务数;


4、服务器并发用户数:同时承载正常使用系统功能的用户数量,即多少人同时使用,系统还能正常运行的用户数量;


怎么提升服务器的并发处理能力呢?


二、怎么提升服务器的并发处理能力呢?


提升服务器的并发处理能力http://www.hkt4.com/network/slb.html


1、提高应用服务器的处理水平:


要提高应用服务器的处理水平就要了解自己的应用服务器的瓶颈在哪里,一般有两个:


数据库压力:数据库是支撑产品业务的核心模块,系统的高并发的主要压力也是来源于数据库。处理方式有如下这些:数据库本身:建立有效索引、读写分离、双主互备、分库分表(sharding-jdbc等实现)等策略,提高数据库处理能力,减少压力!结合内存数据库:例如redid、memcached等,根据业务需要缓存一些数据字典、枚举变量和频繁使用数据等减少数据库访问次数,提升数据库处理能力。


用nginx负载多台应用服务器、使用redid/memcached做业务缓存、再加上数据库集群,组成了经典的web高并发集群架构。


代码中的业务逻辑:大家可以参考阿里巴巴java开发手册中的开发规范来做就好了,总代来说少创建线程、少创建对象、少加锁、防止死锁、少创建线程、注意内存回收等策略,来提升代码性能。开发中可以采用前后端分离的架构模式,动静分离、松耦合等提升前后端处理能力。


2、服务器高并发策略调整


这里说的对服务器高并发策略调整,也就是尽量让I/O操作和CPU计算重叠进行。这样的做法,主要是为了让CPU在I/O操作时等待时间里不空闲,同时也能较大限度的减少等待的时间。


3、选择持久链接


有一些朋友可能不清楚持久链接是什么,下面简单地介绍一下,持久连接也就是persistent connection,是通过TCP通信的一种方式,主要指不用为每个request object的传送建立一个新的TCP连接,因而能减少TCP建立时间和相应的系统损耗。简单的理解就是,在一次TCP链接中,可以实现持续发送多份数据而不断开连接。


从性能的角度来说,如果建立的TCP链接次数越少,对性能的提升是越有利的,因而这里为了提升服务器的并发处理能力,建议选择使用持久链接。


4、优化系统调用


系统调用涉及进程从用户态到内核态的切换,导致一定的内存交换,这也是一定程度上的上下文切换,所以系统调用的开销通常认为比较昂贵的。减少不必要的系统调用,也是服务器性能优化的一个方面。这个方法的缺点在于:当进程需要对硬件外设进行操作的时候,必须切换到内核态,这时它需要拥有更多的权力来操纵整个计算机。


5、改进硬件环境


还有一点要提及的是硬件环境,服务器的硬件配置对应用程序的性能提升往往是最直接,也是最简单的方式,这就是所谓的scaleup。


也就是说,我们要根据自身实际业务在合理范围内尽可能的拆分,拆分以后同类服务可以通过水平扩展达到整体的高性能高并发,同时将越脆弱的资源放置在链路的越末端,访问的时候尽量将访问链接缩短,降低每次访问的资源消耗。服务之间直接restful模型使用http调用,或者redis,kafka类的消息中间件通信。单个服务直接使用nginx做负载集群,同时前后端分离,数据库分库分表等一整套分布式服务系统!

0

上一篇:数据湖是什么?与数据库有什么区别?
下一篇:海外站群服务器IP分配一共要完成6步:
HKT4为您的网站提供全球IDC资源
立即免费测试