良玉的博客 点点滴滴,积水成河_良玉的博客_页游、手游linux运维工程师之路

Linux内核优化配置提升系统性能,亲测nginx访问性能提升

以下Linux 系统内核优化配置均经在线业务系统测试,服务器运行状态良好,用了一些时间整理,现和大家分享一下,如有那位高人看到配置上有问题,请给与指出!

# Controls the use of TCP syncookies

#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_syncookies = 1

#一个布尔类型的标志,控制着当有很多的连接请求时内核的行为。启用的话,如果服务超载,内核将主动地发送RST包。

net.ipv4.tcp_abort_on_overflow = 1


阅读全文...

linux下使用flock锁文件(适用于crontab)

当多个进程可能会对同样的数据执行操作时,这些进程需要保证其它进程没有也在操作,以免损坏数据。

但是flock有不适合的地方,比如和网络有关的计划任务跑了一半,网络中断了,任务是不会退出的,等网络好了,计划任务不会继续执行下去。这种不灵活的东西,最好还是shell里自己写好执行状态去操作,管理更加方便自如。


阅读全文...

linux命令dd详解及实例

dd

使用dd这个linux命令可以创建一定大小文件。

linux创建文件命令:dd命令
把指定的输入文件拷贝到指定的输出文件中,并且在拷贝的过程中可以进行格式转换。语法:
CODE:[Copy to clipboard]dd 〔选项〕
QUOTE:
if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写 入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置obs和obs)。
cbs = bytes 一次转换bytes字节。
count = blocks 只拷贝输入的blocks块。
conv = ASCII 把EBCDIC码转换为ASCII码。
conv = ebcdic 把ASCII码转换为EBCDIC码。
conv = ibm 把ASCII码转换为alternate EBCDIC码。
conv = blick 把变动位转换成固定字符。
conv = ublock 把固定们转换成变动位
conv = ucase 把字母由小写变为大写。
conv = lcase 把字母由大写变为小写。
conv = notrunc 不截短输出文件。
conv = swab 交换每一对输入字节。
conv = noerror 出错时不停止处理。
conv = sync 把每个输入记录的大小都调到ibs的大小(用ibs填充)。


阅读全文...

​lvs的ActiveConn介绍

    今天测试lvs,发现ActiveConn总是不准确,明明并发是1w,可是总在6k徘徊,又无报错。

    lvs的activeconn是个一直让我很迷惑的东东.每次看到这个数巨大而真实机上的活动连接数并不是很高的时候,我都忍不住网上搜索一番,虽然大多时候总是无功而返,但是渐渐的总结出来了以下理论.

    ActiveConn是活动连接数,也就是tcp连接状态

阅读全文...

kernel: TCP: time wait bucket table overflow

kernel: TCP: time wait bucket table overflow错误的解决办法

现象为message日志报如下错误:

Feb 27 10:53:36 web kernel: __ratelimit: 5 callbacks suppressed

Feb 27 10:53:36 web kernel: TCP: time wait bucket table overflow
Feb 27 10:53:36 web kernel: TCP: time wait bucket table overflow
Feb 27 10:53:36 web kernel: TCP: time wait bucket table overflow


阅读全文...

快速回收TCP连接

通过sysctl去改变established状态的timeout值:

# sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=600

永久保存:写入/etc/sysctl.conf   再执行sysctl -p


然后你再试试,应该就好了,默认 TCP 连接痴呆保持是 120 小时,也就是 5 天
这样就改成 10 分钟了,数值可随你心意去调


阅读全文...

看牛人说话,知mongodb和redis的区别及应用场景

 【虾米】
大伙手头有用redis的吗?实战中最大的数据库多大?占内存多少?
【大虾】
我们这边有用
【大虾】
不过没注意过, 这边用到的最多几十兆
【大虾】
都说 缓存和队列
【码农】
Redis有用
【码农】
used_memory:1490836776
used_memory_human:1.39G
used_memory_rss:16965427

阅读全文...

Linux下使用dsniff的tcpkill将一个已经创建TCP连接断开

今天发现服务器很多ESTABLISHED 状态无法消除,导致服务不正常,一直找解决办法,最后发现使用工具tcpkill就可以了,yum install -y dsniff

或者源码编译都可以http://www.monkey.org/~dugsong/dsniff/

tcpkill是不断去监听端口的,所以输出可以 &>/dev/null


阅读全文...

yum报错GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EP

Yum 遇到

warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY

Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

 

GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

阅读全文...

error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key

修改 linux 内核文件 
#vi /etc/sysctl.conf后执行sysctl  -p 报错
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
 
解决方法如下:

阅读全文...

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

今天在虚拟机vm中使用yum安装,遇到一个问题:

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again


处理很简单,修改文件“/etc/yum.repos.d/epel.repo”, 将baseurl的注释取消, mirrorlist注释掉。即可。

还有可能是网络不通,看下route,能不能出去,发现只要一个桥接的网卡就好了!



阅读全文...