打造支持上千万http长连接的应.ppt

编辑课件 编辑课件 打造支持上千万http长连接的应用 张乐伟_韩彰 hanzhang@ 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 Comet Long Pooling Comet Streaming Websocket 浏览器都支持不错 大部分浏览器都支持不好 Html5,大部分浏览器不支持 多页面交互 每个页面一个连接 Flash方案(flashdb,localconnection) 轮询cookie 第一版方案 硬件负载 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 内存 ? 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 ParNewGC 并行GC,比较消耗CPU ParallelGC 并行回收GC -XX:-UseAdaptiveSizePolicy Full GC Minor GC 并发GC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC 并行GC -XX:+UseParallelGC -XX:+UseParallelGC 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,发送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/net/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)状态端口的监听队列的长

文档评论(0)

1亿VIP精品文档

相关文档