ntp客户端同步时间

linux使用ntp客户端自动更新时间。

使用ntp客户端工具ntpdate定期执行来进行同步时间。ntpdate只需要加ntp服务器的机器即可。 假如ntp的服务器为10.1.2.3,则同步命令为ntpdate 10.1.2.3。同步完时间后, 还可以使用hwclock -w来同步到硬件时间。

……

Continue reading

服务器超时时间和请求队列大小设置

服务器超时时间和请求列表大小关乎程序的健壮性。设置过小,会导致有效的请求被丢掉。 设置过大,严重的情况下会引起雪崩。

超时

很多后台码农对超时时间的设置都没什么概念,特别是刚毕业的后台码农。 一般都是参照前人的代码,设置一个相同的超时,而且一般都是比较大的超时,只要程序能跑就没问题了。

……

Continue reading

nf_conntrack调优

深入了解conntrack调优。

netfilter

netfilter是linux内在的一个软件框架,用来管理网络数据包。

netfilter提供了5个hook来进行管理网络包。如下图: netfilter-hooks

……

Continue reading

libpcap入门教程

libpcap是一个开源的,用于捕捉网络包的库。可以在大部分*nix系统下运行。另外, 还有一个windows版本的叫做winpcap。

包捕获

包捕获是收集网络上数据的过程。

……

Continue reading

nginx平滑的基于权重轮询算法分析

nginx使用的平滑权重轮询算法介绍以及原理分析。

轮询调度

轮询调度非常简单,就是每次选择下一个节点进行调度。比如{a, b, c}三个节点,第一次选择a, 第二次选择b,第三次选择c,接下来又从头开始。

……

Continue reading

mongo跨集群复制集同步

mongo的跨集群复制集同步方案。

在生产环境上使用mongo,需要考虑容灾。在跨idc的容灾方案上,我们需要把数据库同步到其他的idc去, 这样即使一个idc挂了,另一个idc还可以服务,而且数据不会丢。

……

Continue reading

pcap-filter手册

网络包过滤语法。tcpdump的expression。

描述

pcap_compile()是用来编译一个字符串到过滤程序的函数。这导致过滤程序可以决定哪些包可以提供给pcap_loop(), pcap_dispatch(), pcap_next(), pcap_next_ex()

……

Continue reading

tcpdump手册

tcpdumpdump网络包。

概要

tcpdump [ -AbdDefhHIJKlLnNOpqRStuUvxX ] 
        [ -B buffer_size ] [ -c count ]
        [ -C file_size ] [ -G rotate_seconds ] 
        [ -F file ] [ -i interface ] 
        [ -j tstamp_type ] [ -m module ] 
        [ -M secret ] [ -P in|out|inout ]
        [ -r file ] [ -V file ] [ -s snaplen ] 
        [ -T type ] [ -w file ] [ -W filecount ]
        [ -E spi@ipaddr algo:secret,...  ]
        [ -y datalinktype ] [ -z postrotate-command ] 
        [ -Z user ]
        [ expression ]

描述

tcpdump打印网络接口上匹配expression网络包的描述内容。另外它可以使用-w参数, 将包数据保存到文件中,以便后期分析,后期可以使用-r参数读文件中取包数据。 它还可以使用-V参数,让它从多个文件中读取。所有情况下,tcpdump只处理匹配expression的包。

……

Continue reading

tenfyzhong/goenv库介绍

goenv库将环境变量的值设置到一个结构体里, 以方便使用。类似于encoding/json解析到结构体。

背景

为了简化docker的发布,把配置从配置文件里抽取出来,设置到环境变量里。然后发布docker 容器的时候就不需要再带一个配置文件了。

……

Continue reading

golang交叉编译

golang的交叉编译。

golang的交叉编译非常简单,只要配好对应的环境变量后再go build就可以了。 需要配置以下的环境变量。

CGO_ENABLED

默认情况下这个变量为1。
交叉编译不支持cgo,所以需要关闭cgo。
linux/unix下为CGO_ENABLED=0
windows下为set CGO_ENABLED=0

……

Continue reading