如何提高服务器并发数
假设,我的服务器对于一个HTTP请求进行了分布处理,图片等资源都分布到其他服务器,我的代码也进行了多进程、线程优化,带宽也不错,那么,我的服务器的并发数还是不能满足需求,...
假设,我的服务器对于一个HTTP请求进行了分布处理,图片等资源都分布到其他服务器,我的代码也进行了多进程、线程优化,带宽也不错,
那么,我的服务器的并发数还是不能满足需求,假设此时并发已经有1万/sec啦,那该如何提高性能, 展开
那么,我的服务器的并发数还是不能满足需求,假设此时并发已经有1万/sec啦,那该如何提高性能, 展开
1个回答
展开全部
消除瓶颈是提高服务器性能和并发能力的唯一途径。
如果你能够消除所有的瓶颈,你就能够最大的发挥硬件性能,让系统的性能和并发数到达最佳。
采用多线程多核编程,使用事件驱动或异步消息机制,尽量减少阻塞和等待操作(如I/O阻塞、同步等待或计时/超时等)。
原理:
1、多线程多核编程,消除cpu瓶颈。
2、采用IOCP或epoll,利用状态监测和通知方式,消除网络I/O阻塞瓶颈。
3、采用事件驱动或异步消息机制,可以消除不必要的等待操作。
4、如果是Linux,可以采用AIO来消除磁盘I/O阻塞瓶颈。
5、在事件驱动框架或异步消息中统一处理timer事件,变同步为异步,而且可以在一个线程处理无数timer事件。
6、深入分析外部的阻塞来源,消除它。
比如数据库查询较慢,导致服务器处理较慢,并发数上不去,这时就要优化数据库性能。
7、如果与某个其他server通信量很大,导致性能下降较多。
可以考虑把这两个server放在一个主机上,采用共享内存的方式来做IPC通信,可以大大提高性能。
如果你能够消除所有的瓶颈,你就能够最大的发挥硬件性能,让系统的性能和并发数到达最佳。
采用多线程多核编程,使用事件驱动或异步消息机制,尽量减少阻塞和等待操作(如I/O阻塞、同步等待或计时/超时等)。
原理:
1、多线程多核编程,消除cpu瓶颈。
2、采用IOCP或epoll,利用状态监测和通知方式,消除网络I/O阻塞瓶颈。
3、采用事件驱动或异步消息机制,可以消除不必要的等待操作。
4、如果是Linux,可以采用AIO来消除磁盘I/O阻塞瓶颈。
5、在事件驱动框架或异步消息中统一处理timer事件,变同步为异步,而且可以在一个线程处理无数timer事件。
6、深入分析外部的阻塞来源,消除它。
比如数据库查询较慢,导致服务器处理较慢,并发数上不去,这时就要优化数据库性能。
7、如果与某个其他server通信量很大,导致性能下降较多。
可以考虑把这两个server放在一个主机上,采用共享内存的方式来做IPC通信,可以大大提高性能。
更多追问追答
追问
这一篇Blog我已经看过了,
假如我这些我都已经优化过了,但是并发还是不够高,请求发出后,在这一个IP端口的服务器,负责消息的分布和重定向,
我认为,这一个IP端口上的服务器才是瓶颈所在,因为网站的DNS都解析到了你这一台计算机,就像12306,
像这时,要怎么提高并发
追答
一般的服务器是不限制这个的,
而且像一个普通的主机 dns可以绑定几百个 甚至几千个的,这个都不是什么问题(前提的是网站容量不是很大) 不过你可以看下你的主机硬件使用情况和带宽使用情况。从这两个地方进行下功夫。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询