打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
服务器长短连接应用分析
服务器长短连接应用分析
纯理论分析
优点
1. 对于每个请求,减少三次握手。
2. 对于服务器,将会减少建立连接导致的开销。包括内核进程分配TCB、建立连接时产生软中断、内核进程与用户进程切换时的时间开销。
3. 因为tcp segments的减少,减轻了网络的负担。
4. 更关键的是,减少响应时间。
缺点
1. 服务器(或代理服务器)需要维护连接队列,这将导致内存开销增大。
2. 其它,还没想到
HTTP是基于TCP的应用层协议,一个完整的HTTP事务中,服务器和客户端是这么交互的。
三次握手结束时,客户端与服务器约定好TCP窗口大小,服务器的窗口最小值默认为4096字节。
在server与client都处于连接态时,client向server发送request,server处理结束时,server向client发送response。
长连接与短连接的最大区别就在于,在保持连接的过程中减少了三次握手以及四次分手的时间和系统开销。
应用分析
1. api接口返回的数据平均大小?
取2.80上100000条连续的nginx访问日志进行分析,返回的 http response 的大小分布是(以4k做为分隔):
size < 4000                  95233         95.2%
4000 <= size < 8000   636             0.6%
size >= 8000                4018           4.0%
max : 277909
min  : 0
cnt   : 100000
sum : 3059716
avg  : 30 bytes/request
2. 十、二十、三十分钟内,api 的会话数,平均每会话发起的请求数?
取10.20的api日志进行分析。(这个时候api的日活跃用户为15w,周报活为60w)会话=userid:deviceid
时间会话数总请求数requests/session
10分钟10:00 ~ 10:1042677100593723.5
20分钟10:00 ~ 10:2072048191327026.5
30分钟10:00 ~ 10:3098959271522727.4
3. 从应用的情况来看,适宜将长连接的时间保持在10分钟,且每连接处理请求上限为50。
测试情况简述
1. 测试工具:短连接 apache bench;长连接 autobench;
2. 测试过程简述:客户端(apache-bench or autobench)向服务器发起n个静态页面请求。记录从第一个请求和最后一个请求的响应时间t1及t2,记录服务器平均每秒处理的请求数。同时通过cacti记录t1和t2间系统的状况。
3. 测试数据
concurrent测试类型last time(s)request countrpscpu(max)system loads
(1minute,max)系统TCP状态
300短连接168.7831,200,0007109.74user: 7.4
sys: 14.59
soft-iraq: 18.15
sum: 40.874.64
长连接240640,0002666.67user:2.88
sys:4.48
soft-iraq:3.66
sum:11.241.5ESTABISHED 0
ACTIVE  1602
1200短连接144.7911,200,0008287.8user: 8.76
sys:15.11
soft-iraq:19.56
sum:44.055.88ESTABISHED 184
ACTIVE 12812
长连接2671,469,6315504user: 7.23
sys:9.37
soft-iraq:9.39
sum:26.525.15ESTABISHED  1202
ACTIVE 6208
2400短连接171.2921,200,0007005.58user: 8.79
sys:13.19
soft-iraq:16.95
sum:39.754.53ESTABISHED  519
ACTIVE 21378
长连接32622444706884.88user:7.06
sys:8.90
soft-iraq:8.75
sum:25.224.93ESTABISHED  1671
ACTIVE 4634
从测试的情况来看,采用长连接时,系统的CPU相对来说处于较低的水平;而系统的吞吐率,在并发连接数在1000以上时,才会明显一些;系统消耗的内存,在百兆级别的范围内波动,在cacti上并不明显,因而没有统计数据。
4. 后续跟进:因为测试工具、测试环境的限制,比较难模拟高并发情况,将和客户端协商将短连接换成长连接,并打开其中一台 api 服务器的nginx长连接开关,观察表现。
参考资料:
1. 短连接改成长连接之后tps 的提升
2. http persistent latency
3. lvs 源地址散列调度 http://blog.csdn.net/ixidof/article/details/6673634
4. tcp     http://www.faqs.org/rfcs/rfc793.html
5. tcp/ip http://www.faqs.org/rfcs/rfc1180.html
6. autobench(not ab!!!) http://www.xenoclast.org/autobench/
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
[20191113]oracle共享连接模式端口2.txt
lwIP在Socket模式下接口:BSD Socket API
Linux 网络硬核系列:TCP/IP 协议栈
LwIP源代码文件目录解析
全方位掌握nfs服务
Delphi编写Socket通信程序实例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服