1、减少内存分配和释放
服务器在运行过程中,需要大量的内存容量来支撑,内存的分配和释放就尤为关键。用户在使用服务器的时候,可以通过改善数据结构以及算法制度来减少中间临时变量的内存分配和数据复制时间。
另外,可以选择使用共享内存模式来降低内存的分配和释放问题。共享内存在多处理器系统中,可以被不同的中央处理器访问,也可以有不同的进程共享,是一种非常快的进程通信方式。
2、使用持久链接
持久链接也被称为场链接,是通过TCP通信的一种方式。在一次TCP链接中持续发送多份数据而不断开连接。
从性能角度上来讲,建立TCP链接次数越少,越有利于性能的提升,尤其对于密集型图片或者网页等数据处理上来说有明显的加速作用。
3、改进I/O模型
I/O操作根据设备形式有不同的类型,例如我们常见的内存I/O,网络I/O,磁盘I/O。针对网络I/O和磁盘I/O, 它们的速度要慢很多,可以选择采用高带宽网络适配器可以提高网络I/O速度。
以上的I/O操作时需要CPU来调度的,这就需要CPU空出时间来等待I/O操作。如果在CPU调度上使用时间较少,也就能节约出CPU的处理时间,从这一点上来说也是提升高服务器并发处理能力的方式。
4、改进服务器并发数策略
服务器高并发策略的调整,是为了让I/O操作和CPU计算尽量重叠进行。一方面使CPU在I/O操作时等待时间内不要空闲,另一方面也是为了最大限度缩短等待时间。【感兴趣的话点击此处,了解一下】
并发连接数指的是客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器链接的总TCP数量,就是并发连接数。
最大并发数连接是防火墙或代理服务器对其他业务信息流的处理能力,是防火墙能够同时处理点对点连接的最大数目,是防火墙设备对多个连接的访问控制能力和连接状态跟踪能力,这个参数的大小直接影响到防火墙所有支持的最大信息点数,代表防火墙性能的一个重要指标。从常见的防火墙设备的使用说明可以看出,从低端设备的500或1000个并发连接到高端设备的数万或百万个并发连接,有几个数量级的差异。
并发主要是针对服务器而言,是否并发的关键是看用户操作是否对服务器产生了影响。因此,并发用户数量可以理解为:在同一时刻与服务器进行了交互的在线用户数量。这些用户的最大特征是和服务器产生了交互,这种交互既可以是单向的传输数据,也可以是双向的传送数据。比如并发连接数为10,就表示最多有十个连接同时连接到服务器,如果一个网站只有一个请求的话,就是最多10个人同时去打开这个网站,如果有11个人同时打开这个网站,第11个请求就会等待,直到前面的连接被断开。
消除瓶颈是提高服务器性能和并发能力的唯一途径。如果你能够消除所有的瓶颈,你就能够最大的发挥硬件性能,让系统的性能和并发数到达最佳。
采用多线程多核编程,使用事件驱动或异步消息机制,尽量减少阻塞和等待操作(如I/O阻塞、同步等待或计时/超时等)。
原理:
1、多线程多核编程,消除cpu瓶颈。
2、采用IOCP或epoll,利用状态监测和通知方式,消除网络I/O阻塞瓶颈。
3、采用事件驱动或异步消息机制,可以消除不必要的等待操作。
4、如果是Linux,可以采用AIO来消除磁盘I/O阻塞瓶颈。
5、在事件驱动框架或异步消息中统一处理timer事件,变同步为异步,而且可以在一个线程处理无数timer事件。
6、深入分析外部的阻塞来源,消除它。
比如数据库查询较慢,导致服务器处理较慢,并发数上不去,这时就要优化数据库性能。
7、如果与某个其他server通信量很大,导致性能下降较多。
可以考虑把这两个server放在一个主机上,采用共享内存的方式来做IPC通信,可以大大提高性能。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)