1、打造支持上千万http长连接的应用,张乐伟_韩彰 ,web旺旺概述,Web旺旺概述,Http长连接,Comet Long Pooling,Comet Streaming,Websocket,Browser,Server,Browser,Server,Browser,Server,request,request,request,response,response,response,response,response,request,Data,Data,Data,多页面交互,每个页面一个连接 Flash方案(flashdb,localconnection) 轮询cookie,第一版方案,硬件负载,
2、Jetty集群,Haproxy,Haproxy,页面,页面,页面,Jetty,Jetty,Jetty,Haproxy,引入原因 Session sticky 软件负载 LVS 4层 Haproxy 7层特点 负载均衡 RR 轮询 Least Connection 最少连接 Ip hash Uri hash url_param hash Head(“name”) Session sticky(多种负载均衡,注意多台haproxy情况) 虚拟主机 一致性hash支持 Connection keep alive,瓶颈,连接数 ? Jetty 4万以上QPS ? 40000/30 = 1300内存 ?
3、 10K*40000 = 400M,GC是个问题,Old区内存情况,30000连接 30s断开一次连接 30s将建立30000个连接 每30s产生300m内存 全部进入old区full gc频繁,应用暂停时间长,GC调优,并发GC(CMS:Concurrent Mark-Sweep GC) 1.Initial Marking 2.Concurrent Marking 3.Final Marking 4.Concurrent Sweeping 第一步和第三步需要暂停应用 仍将消耗较长时间扩大S0,S1区,确保不进入old区 Eden,S0,S1各1G Old区没有数据Minor GC ParNe
4、wGC 并行GC,比较消耗CPU ParallelGC 并行回收GC -XX:-UseAdaptiveSizePolicy,TCP生命周期,CLOSED,LISTEN,SYN-RECEICED,SYN-SENT,ESTABLISHED,FIN-WAIT-1,FIN-WAIT-2,CLOSING,TIME-WAIT,CLOSE-WAIT,LAST-ACK,被动打开,主动打开,发送SYN,收到SYN,发送SYN+ACK,收到ACK,收到SYN+ACK,发送ACK,同时打开,收到SYN,发送ACK,打开-响应方序列,打开-发起方序列,关闭-发起方序列,关闭-响应方序列,关闭,发送-FIN,收到FIN
5、,发送ACK,收到对FIN的ACK,收到FIN,发送ACK,收到FIN,发送ACK,收到对FIN的应答,等待应用程序关闭,发送FIN,收到对FIN的ACK,定时器过期,同时关闭,Linux TCP调优,echo “1024 65535” /proc/sys/net/ipv4/ip_local_port_range 向外连接可用端口范围echo 1 /proc/sys/net/ipv4/tcp_tw_reuse time_wait连接重用echo 1 /proc/sys/net/ipv4/tcp_tw_recycle 快速回收time_wait连接echo 180000 /proc/sys/ne
6、t/ipv4/tcp_max_tw_buckets 最大time_wait连接长度echo 20000 /proc/sys/net/ipv4/tcp_max_syn_backlog 最大等待处于客户端还没有应答回来的连接数(在三次握手中)echo 10000 /proc/sys/net/core/somaxconn 每一个处于监听(Listen)状态端口的监听队列的长度(establisthed 状态之前)echo 10000 /proc/sys/net/core/netdev_max_backlog 最大等待cpu处理的包的数目echo 2000000 /proc/sys/fs/file-max 最大打开文体数echo 3 /proc/sys/net/ipv4/tcp_fin_timeout FIN-WAIT-2状态等待回收时间/proc目录下的所有内容都是临时性的, 所以重启动系统后任何修改都会丢失,增加到/etc/rc.local文件,系统重新引导的时候会自动修改,多域名结构,多域名下的消息推送,面向用户的消息推送平台,haproxy,LVS,taobao,tmall,haproxy,Java进程,Java进程,Java进程,haproxy,Web旺旺应用,其他具有推送任务的系统,微博: