100万并发连接服务器笔记之Java Netty处理1M连接会怎么样
100万并发连接服务器笔记之Java Netty处理1M连接的预测如下:
1、不说Netty会如何,服务器都有可能直接崩溃掉。
2、按平均每链接传输数据1K,100W链接大概数据量会在1G左右,G级服务器网卡也受不了的。
3、在网络编程中对单机来讲,成功解决了C10K的问题,这种M级别的链接,可能暂时解决不了。
4、对于如此大的并发,一般都是通过负载均衡的方式进行处理,如新浪微博,同时在线100W以上,通过约100多个节点处理,每个节点也就才10000并发左右。
总结如下:
1、JVM需要提前指定堆大小,相比Erlang/C,这可能是个麻烦。
2、GC(垃圾回收),需要持续不断的根据日志、JVM堆栈信息、运行时情况进行JVM参数微调。
3、设置一个最大连接目标,多次测试达到顶峰,然后释放所有连接,反复观察内存占用,获得一个较为合适的系统运行内存值。
4、Eclipse Memory Analyzer结合jmap导出堆栈DUMP文件,分析内存泄漏,还是很方便的。
5、想修改运行时内容,或者称之为热加载,默认不可能。
大。云数据库是指被优化或部署到一个虚拟计算环境中的数据库,可以实现按需付费、按需扩展、高可用性以及存储整合等优势,其比普通服务器并发大,并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
消除瓶颈是提高服务器性能和并发能力的唯一途径。
如果你能够消除所有的瓶颈,你就能够最大的发挥硬件性能,让系统的性能和并发数到达最佳。
采用多线程多核编程,使用事件驱动或异步消息机制,尽量减少阻塞和等待操作(如I/O阻塞、同步等待或计时/超时等)。
原理:
1、多线程多核编程,消除cpu瓶颈。
2、采用IOCP或epoll,利用状态监测和通知方式,消除网络I/O阻塞瓶颈。
3、采用事件驱动或异步消息机制,可以消除不必要的等待操作。
4、如果是Linux,可以采用AIO来消除磁盘I/O阻塞瓶颈。
5、在事件驱动框架或异步消息中统一处理timer事件,变同步为异步,而且可以在一个线程处理无数timer事件。
6、深入分析外部的阻塞来源,消除它。
比如数据库查询较慢,导致服务器处理较慢,并发数上不去,这时就要优化数据库性能。
7、如果与某个其他server通信量很大,导致性能下降较多。
可以考虑把这两个server放在一个主机上,采用共享内存的方式来做IPC通信,可以大大提高性能。
0条评论