服务器提高并发量
如果提高服务器的并发量啊 ?欢迎探讨
服务器能够支持最大的并发量除了和IOCP有影响外还和哪些因素有关 ?
求教高人。在Linux上已经修改了内核 , 将__FD_SETSIZE改成成了65535 后总是在大概3000-3500路左右的时候就上不去了。请有过相关服务器经验的高手赐教。
[解决办法]
IOCP是windows下的东西, linux肯定是多线程epoll,如果你用select遍历会死人的。
[解决办法]
2.6以上的内核,可以用epoll,不是全遍历,而是修改了内核,用类似回调函数的思想来实现的并发检测。
[解决办法]
从哲学上说,消除瓶颈是提高服务器性能和并发能力的唯一途径。
如果你能够消除所有的瓶颈,你就能够最大的发挥硬件性能,让系统的性能和并发数到达最佳。
采用多线程多核编程,使用事件驱动或异步消息机制,尽量减少阻塞和等待操作(如I/O阻塞、同步等待或计时/超时等)。
原理:
1、多线程多核编程,消除cpu瓶颈。
2、采用IOCP或epoll,利用状态监测和通知方式,消除网络I/O阻塞瓶颈。
3、采用事件驱动或异步消息机制,可以消除不必要的等待操作。
4、如果是Linux,可以采用AIO来消除磁盘I/O阻塞瓶颈。
5、在事件驱动框架或异步消息中统一处理timer事件,变同步为异步,而且可以在一个线程处理无数timer事件。
6、深入分析外部的阻塞来源,消除它。
比如数据库查询较慢,导致服务器处理较慢,并发数上不去,这时就要优化数据库性能。
7、如果与某个其他server通信量很大,导致性能下降较多。
可以考虑把这两个server放在一个主机上,采用共享内存的方式来做IPC通信,可以大大提高性能。