运维体系-单机架构

从一个http请求开始:

 

单机时代 --单机模式

单台web服务器+DB , 日志每日凌晨进行备份。

动静分离:ngix+php 进行动静分离。

组件分离:静态服务器使用单独的服务器,使用一级域名防止cookie提交,使用多个二级域名提高加载速度,静态资源作为NFS ,存放在NFS上,数据库每日凌晨备份,保存在NFS上。

说明:浏览器针对一个域名 有下载线程的限制,所以使用不同域名来提高加载速度。还有 懒加载的手段,监听页面下滑的事件,往下拉页面时在读取相应的内容,这样可以降低首屏显示的时间,还可以减少带宽。

 

源端口 为随机端口。

TCP 三次握手

说明:SYN = 1 ,ACK = 1是把 报文中的SYN,ACK 标志位 设为1;

SYN(用于连接),ACK,FIN(用于关闭) 标志位 位于报文图中的 CONtrol bits 位置处。

首次客户端发给 服务器的seq 序列号=x 是随机生成的,服务器返回的ack = x  + 1 说明 收到了客户端的请求。

第二次客户端发给服务器的seq=x +1 ,和ack = y+1 也是保证 客户端收到了服务器发送的请求。至此两者都变成EST状态,连接成功。

在进行连接时,客户端与服务器一共涉及到了 五钟状态,CLOSE,LISTEN,SYN-SEND, SYN-RCVD,ESTAB-LISHED

TCP断开 需要四次挥手。

需要四次挥手的原因: 因为TCP是全双工的, 需要两者共同确认才能断开。

说明:客户端首先发送FIN 要断开,服务器返回ACK,确定客户端可以关闭。

然后服务器在向客户端发送FIN 要断开,然后客户端返回ACK,确定服务器可以关闭。

如果服务器有很多端口处于CLOSE-WAIT状态,说明程序写的有问题。因为服务器向客户端发送FIN请求失败了,这时可能客户端已经关闭了,服务器就会一直处于CLOSE-WAIT 状态。

服务器发送FIN请求,变成LAST-ACK 状态,如果收到了ACK 就直接关闭了。客户端处于TIME-WAIT 状态会 持续一段时间。

 

TIME-WAIT状态 出现在 主动关闭的地方,总共会持续60s. 持续60s 时间是为了 完全断开连接。

这里就可以对 TIME-WAIT 状态进行一个优化,因为处于该状态时,会占用该端口,来新连接时不能创建。

优化时,涉及三个参数

reuse : 0 关闭 1 打开。复用,一个socket 处于 TIME-WAIT状态时,如果新来一个连接请求,可以复用该socket, 这时就必须开启

timestamp 参数 设为1,因为不同连接之间要通过时间戳来区分,从而不同连接间的数据不会混乱。

recycle 该参数 会关闭 处于TIME-WAIT状态的socket。 这个参数不能用户NAT 模式的网络下(例如负载均衡 ngnix),因为NAT 模式下内部网络 对外是 一个ip 地址。

 

出现socket限制的根本原因是原目的ip 只有一个,端口也是固定的,如果 原目的ip 设置为多个,那么就不会出现限制。http-proxy 就可以 做这个事情,支持设置ip 地址来解决一个限制问题,不用进行参数调优。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值