Nops Blog

Welcon,this is my personal blog


  • 首页

  • 归档

opentsdb学习

发表于 2017-02-26 | 分类于 技术

数据库设计

tsdb表,存放具体的时间序列数据
tsdb表设计

tsdb-uid表,存放metric、tagk、tagv与id之间的映射关系
tsdb-uid

上面这两个图非常重要,必须看懂。

阅读全文 »

hdfs架构学习

发表于 2017-02-26 | 分类于 技术

特点:

  • 大文件存储,单个文件可达到G
  • 关注高吞吐量而非低延迟
  • 块大小默认为64MB,大文件会分为多个文件块存储在不同的datanode几点上。小文件单独占用块,多个小文件不会合并到一个块中。因此hdfs更加喜欢大文件。

架构图

hdfs架构图1
hdfs架构图2

NameNode

  • 负责存放文件元数据,文件系统命名空间的维护,任何对命名空间的更改,例如属性、名字等都将记录到NameNode中
  • 不记录文件保存的位置,文件位置信息会由DataNode上报并保存在内存中,同时也会持久化到本地文件系统(fsimage和edits)
  • NameNode消耗大量内存和I/O资源。因此其不存储用户数据,也不进行mapreduce任务。
    阅读全文 »

rrdtool原理

发表于 2017-02-26 | 分类于 技术

RRD全称是Round Roubin Database,即环形数据库,他是一种循环使用存储空间的数据库,在创建的时候就一定定义好了大小(通过RRA),因此他所创建的数据库大小可控,不会线性增长。(一个rrd文件就是一个数据库文件)

创建一个rrd文件时需要设定以下几个参数:
创建 RRD 基本语法

rrdtool create filename
[–start|-b start-time]
[–step|-s step]
[DS:ds-name:DST:dst-arguments]
[RRA:CF:xff:step:rows]

阅读全文 »

python学习笔记

发表于 2017-02-26 | 分类于 学习

基本

所有标准对象都可以进行bool判断,以下项的bool判断结果都为false:
None,false,值为0的数,0,所有的浮点数,空字符串"",[],{},()

python的文件名不能和导入的模块名字相同,否则会报如下错误:

1
AttributeError: 'module' object has no attribute 'xxxx'

阅读全文 »

教程-利用aws ec2搭建shadowshocks服务

发表于 2017-02-26 | 分类于 教程

1. 申请一台aws ec2服务器(可免费使用一年)

注册完amazon账户后,1申请一台虚拟机并启动。详细过程参考网上教程。这里提别提醒一点网上没有提到的内容:需要打开两个端口,
一个是用于远程ssh登录的22端口,另一个是shadowsocks server所使用的端口号,否则无法使用翻墙功能。如下图所示
入站规则配置

另外还可以申请一个==弹性IP==,绑定到实例上(aws为避免IP滥用,如果不绑定将会收取一定费用),公有ip在每次重启实例后ip地址会改变,弹性ip的好处是只要绑定到实例上不释放,重启实例ip也不会改变

2. 安装shaodowsocks服务端,编写如下配置文件

1
2
3
4
5
6
7
8
9
10
11
cat /etc/shaodowsocks/config.json
{
"server":"0.0.0.0",
"server_port":9999,
"local_address":"127.0.0.1",
"local_port":8888,
"password":"yourpassword",
"timeout":600,
"method":"aes-256-cfb",
"fast_open": false
}

3.启动shadowsocks服务器

4.配置客户端访问

golang基础学习

发表于 2017-02-26 | 分类于 技术

golang基础类型

  • 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位
    除非非常明确符号及位数,否则通常的整型最好都使用int

默认值

各个类型都有默认值,基础类型的默认值通常为0或者false,
map、slice等的默认值为nil,因此nil只能赋值给指针、channel、func、interface、map或slice类型的变量。如果
用int于nil进行比较,会造成panic

string字符串

raw字符串:使用``括起来的字符串将按照字面意思解释,不会进行转义

UTF-8编码:

go源文件都以utf-8作为默认编码
utf-8

阅读全文 »

php参数研究

发表于 2017-02-26 | 分类于 技术

部分参数解释

  • memory_limit
    限制单个脚本允许分配的最大内存。若整个进程占用的总内存超过这个限制时就会报如下错误:

    “Fatal Error: Allowed memory size of xxxxxx bytes exhausted”

阅读全文 »

http协议学习

发表于 2017-02-26 | 分类于 学习

状态码

502

==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)从==后端服务器==接收到==无效的响应==。这个无效的响应包括以下几个方面:

  • 响应为空(连接失败,没有建立连接)
  • 不完整的响应头或者body

503

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命令

发表于 2017-02-26 | 分类于 学习

命令格式

ss [option] [filter]
option:

  • -V:显示当前ss版本
  • -n:不解析服务名字(默认端口号可能会被解析为服务的名字).例如不加n参数,80端口可能显示为http,22端口显示为ssh。
  • -a 显示所有的连接
  • -l 仅显示处于listen状态的socket
  • -o 显示计时器信息,例如timer:(keepalive,24sec,0)
  • -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)

    阅读全文 »

linux内核一些参数研究

发表于 2017-02-26 | 分类于 技术

linux内核中的参数:

  • tcp_syncookies
    用于防止syn攻击。要慎用此参数,因为这与tcp协议的其他部分冲突。

    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

阅读全文 »
123

Nops

世上本无事,佣人自扰之

23 日志
6 分类
33 标签
© 2018 Nops
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4