修改nginx和Linux系统的一些参数
优化cpu (进程调度)
网络层优化
磁盘IO优化
vmstat 1
dstat 1
pidstat -w -p 进程号 1
要防止惊群现象 防止一个请求激活很多甚至所有worker
多核访问内存的架构
可以关闭远程访问内存,如果missing较高
只有不到3W个端口 及并发连接
半连接;防止半连接攻击
nagle 算法:eg:先发一个字符;等收到ack时再发送剩下的字符,允许一个小报文
吞吐量高时候使用nagle 算法
RTT是客户到服务器往返所花时间(round-trip time,简称RTT)
RTO(Retransmission TimeOut)即重传超时时间
MTU
Maximum Transfer Unit 最大传输单元
链路层的帧(frame)中的数据部分的最大字节数
以太网中的一般为1500字节
MSS
Maximum Segment Size 最大报文段大小
TCP的报文段中的数据部分的最大字节数,MTU减去IPv4的Header和TCP的Header
IPv4的Header和TCP的Header一般都是20字节,则MSS=1500-20-20 = 1460字节
MSL
Maximum Segment Lifetime 报文最大生存时间
报文在网络上存在的最长时间,TCP四次挥手是主动断开连接的一方再发送完最后一个ACK后进入TIME_WAIT状态时,需要等待2MSL时间后才变成CLOSED状态
RFC 793建议为2分钟
RTT
Round-Trip Time
从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延
TCP中保留了RTT的加权平均值RTTS(下标S表示Smoothed)
对于i=1,RTTS[i]=新RTT样本
对于i>1,RTTS[i]=(1-a) * RTTS[i-1] + a * 新RTT样本,RFC2988建议a=1/8
TTL
Time To Live
该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4包头的一个8 bit字段。
RTO
Retransmission Timeout 超时重传时间
TCP中触发超时重传机制的时间,应略大于RTT
RFC2988中建议RTO = RTTS + 4 * RTTD
RTTD时RTT的偏差的加权平均值
对于i=1,RTTD[i] = 新RTT样本/2
对于i>1,RTTD[i] = (1 - b) * RTTD[i-1] + b * | 新RTT样本 - RTTD[i] |,建议b=1/4
后三个对应前三个的值
time_wait 比较久
RST 是 reset包
应用层协议优化方法
原始缓存(如下)
sendfile如下
使用TCmalloc