《打造支持上千万http长连接的应用》由会员分享,可在线阅读,更多相关《打造支持上千万http长连接的应用(15页珍藏版)》请在金锄头文库上搜索。
1、打造支持上千万http长连接的应用Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望web旺旺概述Web旺旺概述Http长连接 Comet Long PoolingComet StreamingWebsocketBrowserServerBrowserServerBrowserServerrequestrequestrequestresponseresponseresponseresponseresponserequestDataDataDataComet Long PoolingCo
2、met StreamingWebsocket浏览器都支持不错大部分浏览器都支持不好Html5,大部分浏览器不支持多页面交互l每个页面一个连接lFlash方案(flashdb,localconnection)l轮询cookie第一版方案 硬件负载Jetty集群HaproxyHaproxy页面页面页面JettyJettyJettyHaproxy引入原因Session sticky软件负载LVS 4层Haproxy 7层 特点负载均衡RR 轮询Least Connection 最少连接Ip hashUri hashurl_param hashHead(“name”)Session sticky(多种
3、负载均衡,注意多台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 S
4、weeping第一步和第三步需要暂停应用仍将消耗较长时间扩大S0,S1区,确保不进入old区Eden,S0,S1各1GOld区没有数据 Minor GCParNewGC并行GC,比较消耗CPUParallelGC 并行回收GC -XX:-UseAdaptiveSizePolicyFull GCMinor GC并发GC-XX:+UseConcMarkSweepGC-XX:+UseParNewGC并行GC-XX:+UseParallelGC-XX:+UseParallelGC TCP生命周期CLOSED LISTENSYN-RECEICEDSYN-SENTESTABLISHEDFIN-WAIT-1
5、FIN-WAIT-2CLOSINGTIME-WAITCLOSE-WAITLAST-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_ra
6、nge 向外连接可用端口范围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/somax
7、conn 每一个处于监听(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文件,系统重新引导的时候会自动修改 多域名结构cookie浏览器浏览器TTcookie浏览器浏览器webserverhttp长连接http长连接 多域名下的消息推送TTwebserver1 推送消息标志1 推送消息标志2 读取消息3 推送消息变化0 接收消息 面向用户的消息推送平台haproxyLVStaobaotmallhaproxyJava进程Java进程Java进程haproxyWeb旺旺应用其他具有推送任务的系统微博: