数据库设计
tsdb表,存放具体的时间序列数据
tsdb-uid表,存放metric、tagk、tagv与id之间的映射关系
上面这两个图非常重要,必须看懂。
Welcon,this is my personal blog
注册完amazon账户后,1申请一台虚拟机并启动。详细过程参考网上教程。这里提别提醒一点网上没有提到的内容:需要打开两个端口,
一个是用于远程ssh登录的22端口,另一个是shadowsocks server所使用的端口号,否则无法使用翻墙功能。如下图所示
另外还可以申请一个==弹性IP==,绑定到实例上(aws为避免IP滥用,如果不绑定将会收取一定费用),公有ip在每次重启实例后ip地址会改变,弹性ip的好处是只要绑定到实例上不释放,重启实例ip也不会改变
1 | cat /etc/shaodowsocks/config.json |
bool:(true,false)
int:32位或者64位整型
int8,int16,int32,int64:8位、16位、32位、64位整型
uint8,uint16,uint32,uint64:无符号8、16、32、64位整型
byte:等价于uint8
rune:等价于int32
float32,float64:浮点32、64位
complex32,complex64:复数32位、64位
各个类型都有默认值,基础类型的默认值通常为0或者false,
map、slice等的默认值为nil,因此nil只能赋值给指针、channel、func、interface、map或slice类型的变量。如果
用int于nil进行比较,会造成panic
raw字符串:使用``括起来的字符串将按照字面意思解释,不会进行转义
go源文件都以utf-8作为默认编码
==502 Bad Gateway==
The HTTP 502 Bad Gateway server error response code indicates that the server, while acting as a gateway or proxy, received an invalid response from the upstream server.
502错误通常是指==网关或者代理==(例如nginx)从==后端服务器==接收到==无效的响应==。这个无效的响应包括以下几个方面:
The 503 (Service Unavailable) status code indicates that the server is currently unable to handle the request due to a temporary overloador scheduled maintenance, which will likely be alleviated after some delay. The server MAY send a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request.
503服务不可用,当后端服务器并发请求量+队列满了的时候,新来的请求就会出现503错误。
可以携带一个Retry-After头表明客户端需要等待多久再重试请求。
503表明后端服务器没有足够的资源(cpu、内存)接收请求或者需要调整tcp、文件打开数等相关参数
ss [option] [filter]
option:
-m 显示端口socket内存占用,
r: represents the read (inbound) buffer
w represents the write (outbound) buffer
f represents the “forward allocated memory” (memory available to the socket)
t represents the transmit queue (stuff waiting to be sent or waiting on an ACK)
SYN攻击:正常情况下,服务器收到客户端的连接SYN包后会将客户端加入半连接队列(SYN队列,这个队列长度有限,由==tcp_max_syn_backlog==参数控制)并回复一个ack包并等待客户端的确认,且超时会进行重试。重试次数由参数
tcp_synack_retries
==指定,重试间隔时间依次为1,2,4,8,16s,加上最后一次重试后等待32s,因此需要总共等待63s。
利用这种机制,攻击者向服务器发送大量SYN包,然后立即断开。会导致服务器的SYN队列长时间溢出,无法接受新的正常的连接。
==tcp_syncookies==设置为1后,当syn队列溢出后,服务器端将不再使用syn队列,对于新来的syn包服务器端TCP会利用源端地址、端口号和时间戳生成一个序号(也叫cookie)并返回给客户端(不再将其放入syn队列并分配内存),正常客户端会给出正确的响应,服务器端收到响应后直接建立连接(即使客户端不再SYN队列中),进入established状态。非正常连接不会给出正确响应同时不再被加入SYN队列也不会建立连接。
虽然tcpsyncookies可以一定程度上使得在遭受DDos攻击时依然可以对外响应请求。但是正常情况下并不应该依赖此参数。因为在正常情况下,如果打开此参数会发哦之服务器真正过载时无法看到正确的错误日志。并且此参数使得TCP协议改变(妥协版TCP),TCP滑动窗口机制失效(有待验证)_
正常情况下,对于并发量过高的问题,应该依赖以下三个参数解决:
tcp_max_syn_backlog
tcp_synack_retries
tcp_abort_on_overflow