« 上一篇下一篇 »

服务器运行并发数值的影响元素提高并发数的途径

 一:服务器并发数取决于那些?

1. CPU 处理性能

CPU 核数,假如 CPU有4个核,处理每个访问请求用线程去处理,那么4核每次最大能处理不超过8个线程,处理时间看单个线程处理完数据的时间,假如一个线程处理时间是40ms(毫秒),那么最高秒级并发计算那就是 1000/40*8=200 那么每秒最高处理并发是200个,如果服务器只收不处理数据的话处理时间还能大幅度下降, 并发数还鞥你大幅度提升。

2. 内存容量

假设目前服务器有4G空闲内存,每次处理一个请求占用1MB内存,那么一秒就是200MB,假设服务器宕机时间为:1024MB*4/200=20.48秒会把服务器内存资源耗尽,如果长时间占用内存资源那么内存泄漏是一定多少会出现些,如果内存及时释放和内存泄漏降到最低,服务器程序异常退出的情况会大大降低,合理使用服务器自带的内存释放服务也会大大降低服务器程序异常退出情况,当服务器程序出现异常退出情况时,内存会自动释放恢复到4G空闲状态,使用自动监测脚本服务当服务器程序异常退出时自动调起相应的服务,保证服务器对外的使用率,服务器程序异常退出和服务器宕机是两个情况,服务器程序异常退出代表服务器可能正常运行,再次调起相关的程序即可;服务器宕机代表服务器系统出现异常,关机或者不在运行,需要人为的去操控;宕机属于重大服务器问题。

3. 网络带宽

并发的第三个因素网络带宽因素,假设服务器上下行带宽一共是5MB,假设一次请求数据大小字节占200字节,如果不需要回复 则支持最大的并发数为:1024MB*5/8=640KB*1024=655360字节/200=3276.8,则服务器只接受数据请求不回复的话能支持并发数为 3276.8个,如果服务器需要返回数据,假设返回的数据也是200字节,那么并发数为3276.8/2=1638.4个并发。

4. 硬盘读写速度

硬盘读写速度也从一个方面影响了数据的处理速度。

 

二、并发策略

1. 服务器压力分流,现在市面上BAT都采用的是负载均衡技术,负载均衡有多个策略,最常用的是RR(轮巡)策略,RR+keepalived技术可以有效的保存用户的cookie和session,从链路层转换网络请求指向,用iptable保存用户IP表和指向的历史记录等等信息,负载均衡的存在意义是把单台服务器处理的压力分散,路由到多台服务器上,减轻单台服务器的压力,降低服务器宕机的几率和访问延迟的问题等等;

2. 假如服务器遭受到攻击可以随时变换策略,比如master和slave角色互换,IP变化,域名重定向,可以使攻击者攻击目标变成无效或者丢失,这样可以保护用户正常的访问,但是不能有效的杜绝彻底攻击,可以加上IP访问限制等方式可以暂时拒绝攻击者的攻击。

3. 多台服务器部署成集群后有效的提升服务器的处理能力和并发数量。

4. 数据库和缓存的能力,不断的对数据库进行刷写无意会大量消耗服务器的资源,使用中间件和缓存技术有效的防止对数据库进行大量的刷写操作,保护服务器资源不被大量消耗。

5. 使用WebRPC服务,模块拆分部署到不同的服务器,比如ABC 3个功能,如果3个功能在同一台服务器,那么服务器在处理各式各样的请求是会造成不同的资源消耗和处理瓶颈问题,如果把A B C 分别部署到3台不同的服务器,并且内网打通,这样会大面积降低耦合率,提升并发数,保护服务器。

三、如何提高服务器性能和并发能力

从消除瓶颈是提高服务器性能和并发能力的唯一途径。
如果你能够消除所有的瓶颈,你就能够最大的发挥硬件性能,让系统的性能和并发数到达最佳。
采用多线程多核编程,使用事件驱动或异步消息机制,尽量减少阻塞和等待操作(如I/O阻塞、同步等待或计时/超时等)。
原理:
1、多线程多核编程,消除cpu瓶颈。
2、采用IOCP或epoll,利用状态监测和通知方式,消除网络I/O阻塞瓶颈。
3、采用事件驱动或异步消息机制,可以消除不必要的等待操作。
4、如果是Linux,可以采用AIO来消除磁盘I/O阻塞瓶颈。
5、在事件驱动框架或异步消息中统一处理timer事件,变同步为异步,而且可以在一个线程处理无数timer事件。
6、深入分析外部的阻塞来源,消除它。
   比如数据库查询较慢,导致服务器处理较慢,并发数上不去,这时就要优化数据库性能。
7、如果与某个其他server通信量很大,导致性能下降较多。
   可以考虑把这两个server放在一个主机上,采用共享内存的方式来做IPC通信,可以大大提高性能。

分布式系统
1.负载均衡:大量并发请求可以分摊到多个操作单元进行执行

2.分布式存储:将数据分散存储在多台独立的设备上

3.分布式计算:将应用分解成多个小的部分,分配给多台计算机进行处理