nginx默认http代理用的是 HTTP/1.0版本
linux命令大全网址
开发者中文文档大全(有java8, spring全家桶, mysql, nginx, Hive, HBase等等)
网络优化 配置文件 /etc/sysctl.conf
查看所有系统配置 sysctl -a
sysctl -w net.core.somaxconn=1024
sysctl -w net.inet.tcp_syncookies=1
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_tw_recycle=0
sysctl -w net.ipv4.tcp_synack_retries=2
防止一个套接字在有过多试图链接导致网络过载.
SYN cookies是一种用于通过选择加密的初始化TCP序列号,可以对回应的包做验证来降低SYN'洪水'攻击的影响的技术。
syn cookies在一定程度上能缓解"syn flood attack",建议生产系统中开启该选项
sysctl -w net.inet.tcp_syncookies=1
该参数决定保持在FIN-WAIT-2状态的时间
sysctl -w net.ipv4.tcp_fin_timeout=30
允许对新连接重用TIME-WAIT sockets
sysctl -w net.ipv4.tcp_tw_reuse=1
指定当接收到SYN请求时,会进行多少次SYN ACK重传(retransmit),该值默认是5,每次重传大约花费30-40s,意味着默认情况下被动(passive) TCP连接握手最大会花费180s
sysctl -w net.ipv4.tcp_synack_retries=2
禁用回收
sysctl -w net.ipv4.tcp_tw_recycle=0
表示socket监听(listen)的backlog上限(默认128)
sysctl -w net.core.somaxconn=1024
阿里云配置 (点我另存为下载) sysctl.conf.
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time=120
# see details in https://help.aliyun.com/knowledge_detail/39428.html
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_announce=2
# see details in https://help.aliyun.com/knowledge_detail/41334.html
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
kernel.sysrq=1
fs.file-max=65535
超好用的文本编辑工具
yum install -y nano;
nano /路径/文件名
交互很友好
查询上下文切换次数
vmstat
dstat
pidstat -w
升级k8s的containerd。 Containerd是一个工业标准的容器运行时,形成开放容器接口(OCI)标准的一部分.
您在所有节点上执行下这个命令,看下systemd 和containerd 的版本是否比较低。
rpm -qa |grep -E "systemd|containerd" 查看这个节点的组件不是最新,老版本有已知问题。
新版:
systemd-libs-219-67.el7_7.2.x86_64
systemd-219-67.el7_7.2.x86_64
containerd.io-1.2.10-3.2.el7.x86_64
systemd-sysv-219-67.el7_7.2.x86_64
相关细节可以参考下这篇文章 https://yq.aliyun.com/articles/699200
建议: 可以创建下快照备份,然后将节点升级下systemd
下载地址
wget https://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/daemon-build/centos/containerd.io-1.2.10-3.2.el7.x86_64.rpm
或
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.10-3.2.el7.x86_64.rpm ;
然后升级
yum -y install ./containerd.io-1.2.10-3.2.el7.x86_64.rpm;
yum update systemd;
查询java的GC信息
jstat -gcutil 进程ID
S0:幸存1区当前使用比例
S1:幸存2区当前使用比例
E:伊甸园区使用比例
O:老年代使用比例
M:元数据区使用比例
CCS:压缩使用比例
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
查询哪个进程打开的文件句柄数最多
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
lsof -p 进程id
MD5计算
md5sum xxx.jar
解决出现 Connection reset by peer
vim /etc/security/limits.conf
设置如下
root soft nofile 655350
root hard nofile 655350
root soft nproc 40960
root hard nproc 40960
* soft nofile 655350
* hard nofile 655350
* soft nproc 40960
* hard nproc 40960
刷新字体文件
安装字体
yum install -y fontconfig mkfontscale
查询已安装的中文字体
fc-list :lang=zh
cd /usr/share/fonts/
mkfontscale
mkfontdir //这两条命令是生成字体的索引信息
fc-cache -fv //更新字体缓存
开启mysql慢查询日志 (单位/秒)
set global slow_query_log=1;
set global long_query_time = 5;
show global variables like 'slow_query_log_file';
添加磁盘交换
原文地址 https://blog.csdn.net/ithomer/article/details/53942718
[root@ithomer ~]# cd /var (进入一个文件夹)
[root@ithomer var]# dd if=/dev/zero of=swapfile bs=1024 count=1024000 (创建1GB的swap ,一般是内存的两倍)
[root@ithomer var]# /sbin/mkswap swapfile (创建swap文件,实际上dd已创建,此处不必再创建)
[root@ithomer var]# ll swapfile
[root@ithomer var]# /sbin/swapon swapfile (激活swap文件)
[root@ithomer var]# /sbin/swapon -s (检查swap是否正确)
[root@ithomer var]# vim /etc/fstab (加到fstab文件中让系统引导时自动启动)
在末尾增加以下内容:
/var/swapfile swap swap defaults 0 0
# 清理磁盘交换
sync;echo 1 > /proc/sys/vm/drop_caches;swapoff -a;swapon -a;
配置ssh免密登录
在源机器上生成密匙, 拷贝到目标机器上
ssh-keygen -t rsa
ssh-copy-id targetuser@192.168.101.230
ssh 'targetuser@192.168.101.230'
登录成功!
查看当前tcp链接数
netstat -anp |grep tcp
查看TCP状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
查看磁盘空间命令
df
df -m 按M显示大小
搜索文件
find /opt/upload -name '*c5300093-68cc-4d7f-8dd2-cc0875f8fedd*'
grep -C 10 'aaa' myfile.txt 搜索前后十行
实时监控磁盘读写 (1秒刷新一次)
iostat -x 1
yum install iotop
iotop
实时监控网络流量 (1秒统计一次)
watch -n 1 "/sbin/ifconfig" (系统自带)
-----------------------
yum install libpcap nethogs -y
nethogs (查看所有流量)
nethogs eth0 (指定网卡流量)
实时监控某进程的CPU
top -p 进程ID
查询被杀掉的进程
egrep -i -b3 'Killed process' /var/log/messages
-i忽略大小写,-b展示前后3行的上下文
查看占用磁盘swap最多的进程
for i in $(ls /proc | grep "^[0-9]" | awk '$0>100'); do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps;done| sort -k2nr | head
查看占用CPU资源最多的10个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
查看占用内存资源最多的10个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
查询最大的10个文件
find / -type f -print0 | xargs -0 du -h | sort -rh | head -n 10
详解:
find:在目录结构中搜索文件的命令
/:在整个系统(从根目录开始)中查找
-type:指定文件类型
f:普通文件
-print0:在标准输出显示完整的文件名,其后跟一个空字符(null)
:控制操作符,将一条命令的输出传递给下一个命令以供进一步处理 |
xargs:将标准输入转换成命令行参数的命令
-0:以空字符(null)而不是空白字符(LCTT 译者注:即空格、制表符和换行)来分割记录
du -h:以可读格式计算磁盘空间使用情况的命令
sort:对文本文件进行排序的命令
-r:反转结果
-h:用可读格式打印输出
head:输出文件开头部分的命令
n -10:打印前 10 个文件
统计nginx日志中某url分别被不同ip的访问次数
grep -w '/user/list' access.log | awk '{print $1}'|sort|uniq -c
匹配 精确等于 /user/list 从access.log文件中找 并且 将空格分割后下标为1的(ip)拼接下标为7的(api地址) 并且 排序令ip相邻 并且 去重 统计
统计日志中 MetaTask-5线程执行的平均值
2019-08-30 16:11:27.823 [MetaTask-1] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> saveZuesDB -
2019-08-30 16:11:27.945 [MetaTask-9] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 1.204秒 -> (saveZuesDB) -
2019-08-30 16:11:27.945 [MetaTask-9] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> saveMetaDB -
2019-08-30 16:11:29.485 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 1.833秒 -> (ZuesBizTaskPacket build) -
2019-08-30 16:11:29.485 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentAttchmentPacket build -
2019-08-30 16:11:29.664 [MetaTask-9] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 1.719秒 -> (saveMetaDB) -
2019-08-30 16:11:29.664 [MetaTask-9] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 225.233秒 -> (handler(packet)) -
2019-08-30 16:11:29.795 [MetaTask-9] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> handler(packet) -
2019-08-30 16:11:30.390 [MetaTask-9] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentPacket build. size[200] -
2019-08-30 16:11:30.397 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 0.912秒 -> (ZuesTalentAttchmentPacket build) -
2019-08-30 16:11:30.397 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesPipelineSnapshotPacket build -
2019-08-30 16:11:31.074 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 0.677秒 -> (ZuesPipelineSnapshotPacket build) -
2019-08-30 16:11:31.074 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesPipelineSnapshotItemPacket build -
2019-08-30 16:11:34.495 [MetaTask-1] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 6.672秒 -> (saveZuesDB) -
2019-08-30 16:11:34.495 [MetaTask-1] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> saveMetaDB -
2019-08-30 16:11:34.677 [MetaTask-1] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 0.182秒 -> (saveMetaDB) -
2019-08-30 16:11:34.677 [MetaTask-1] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 160.535秒 -> (handler(packet)) -
2019-08-30 16:11:35.361 [MetaTask-1] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> handler(packet) -
2019-08-30 16:11:35.531 [MetaTask-1] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentPacket build. size[200] -
2019-08-30 16:11:43.539 [MetaTask-1] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 8.008秒 -> (ZuesTalentPacket build. size[200]) -
2019-08-30 16:11:43.539 [MetaTask-1] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentEduExpPacket build -
2019-08-30 16:11:47.694 [MetaTask-9] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 17.304秒 -> (ZuesTalentPacket build. size[200]) -
2019-08-30 16:11:47.694 [MetaTask-9] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentEduExpPacket build -
2019-08-30 16:11:48.107 [MetaTask-9] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 0.413秒 -> (ZuesTalentEduExpPacket build) -
2019-08-30 16:11:48.107 [MetaTask-9] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentProjectExpPacket build -
2019-08-30 16:11:48.181 [MetaTask-9] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 0.074秒 -> (ZuesTalentProjectExpPacket build) -
2019-08-30 16:11:48.181 [MetaTask-9] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentWorkExpPacket build -
2019-08-30 16:11:48.961 [MetaTask-1] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 5.422秒 -> (ZuesTalentEduExpPacket build) -
2019-08-30 16:11:48.961 [MetaTask-1] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentProjectExpPacket build -
2019-08-30 16:11:48.968 [MetaTask-1] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 0.007秒 -> (ZuesTalentProjectExpPacket build) -
2019-08-30 16:11:48.968 [MetaTask-1] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentWorkExpPacket build -
2019-08-30 16:12:06.626 [MetaTask-2] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 45.809秒 -> (ZuesPipelineSnapshotItemPacket build) -
2019-08-30 16:12:06.626 [MetaTask-2] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> saveZuesDB -
2019-08-30 16:12:06.772 [MetaTask-4] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 124.203秒 -> (ZuesPipelineSnapshotItemPacket build) -
2019-08-30 16:12:06.772 [MetaTask-4] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> saveZuesDB -
2019-08-30 16:12:10.796 [MetaTask-4] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 4.024秒 -> (saveZuesDB) -
2019-08-30 16:12:10.796 [MetaTask-4] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> saveMetaDB -
2019-08-30 16:12:11.625 [MetaTask-2] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 4.999秒 -> (saveZuesDB) -
2019-08-30 16:12:11.625 [MetaTask-2] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> saveMetaDB -
2019-08-30 16:12:14.470 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 43.396秒 -> (ZuesPipelineSnapshotItemPacket build) -
2019-08-30 16:12:14.470 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> saveZuesDB -
2019-08-30 16:12:14.663 [MetaTask-4] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 3.867秒 -> (saveMetaDB) -
2019-08-30 16:12:14.663 [MetaTask-4] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 260.691秒 -> (handler(packet)) -
2019-08-30 16:12:14.669 [MetaTask-4] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> handler(packet) -
2019-08-30 16:12:14.708 [MetaTask-2] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 3.083秒 -> (saveMetaDB) -
2019-08-30 16:12:14.708 [MetaTask-2] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 136.07秒 -> (handler(packet)) -
2019-08-30 16:12:14.730 [MetaTask-2] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> handler(packet) -
2019-08-30 16:12:15.154 [MetaTask-2] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentPacket build. size[200] -
2019-08-30 16:12:15.227 [MetaTask-4] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentPacket build. size[200] -
2019-08-30 16:12:15.981 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 1.511秒 -> (saveZuesDB) -
2019-08-30 16:12:15.981 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> saveMetaDB -
2019-08-30 16:12:16.134 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 0.153秒 -> (saveMetaDB) -
2019-08-30 16:12:16.134 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 104.815秒 -> (handler(packet)) -
2019-08-30 16:12:18.699 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> handler(packet) -
2019-08-30 16:12:19.121 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentPacket build. size[200] -
2019-08-30 16:12:25.275 [MetaTask-2] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 10.121秒 -> (ZuesTalentPacket build. size[200]) -
2019-08-30 16:12:25.275 [MetaTask-2] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentEduExpPacket build -
2019-08-30 16:12:27.430 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 停止 , 时长 : 8.309秒 -> (ZuesTalentPacket build. size[200]) -
2019-08-30 16:12:27.430 [MetaTask-8] INFO com.ig.transform.service.task.TalentTask- 任务 : 启动 -> ZuesTalentEduExpPacket build -
grep -w "(handler(packet))" nohup.out |grep -w "MetaTask-5"|awk '{ print $12 }'|awk '{gsub("秒","");print $0 }'|awk '{sum+=$1} END {print "平均值 = ", sum/NR}'
输出: 平均值 = 67.9735
基本脚本编写
vi替换字符
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
详细模式调试脚本
sh -x startup.sh
数学运算 (不能算小数)
a=`expr 1 + 2`
echo $a
输出3
逻辑运算 (与-a 或-o)
if [ $1 -eq $2 -a $1 = 1 ]
then
echo "param1 == param2 and param1 = 1"
elif [ $1 -ne $2 -o $1 = 2 ]
then
echo "param1 != param2 or param1 = 2"
else
echo "others"
fi
for循环 # for var in [params] do … done
for var in 1 2 3 4 5 6 7 8 9 10
do
echo "number is $var"
done
while循环 # while test do … done
num=1
sum=0
while [ $num -le 100 ]
do
sum=`expr $sum + $num`
num=`expr $num + 1`
done
#sleep 5
echo $sum
case判断
op=a
case $op in
a)
echo "you selected a";;
b)
echo "you selected b";;
c)
echo "you selected c";;
*)
echo "error"
esac
菜单选择 # select var in [params] do … done
select var in "java" "c++" "php" "linux" "python" "ruby" "c#"
do
break
done
echo "you selected $var"
判断是否是文件夹 # if test $1 then … else … fi
if [ -d $1 ]
then
echo "this is a directory!"
else
echo "this is not a directory!"
fi
循环中退出 # continue, break
i=0
while [ $i -le 100 ]
do
i=`expr $i + 1`
if [ $i -eq 5 -o $i -eq 10 ]
then continue;
else
echo "this number is $i"
fi
if [ $i -eq 15 ]
then break;
fi
done
json解析
yum install jq
data=$(curl "localhost:$PORT/transform/meta/task/setStateSuspendAll")
jq -n "$data" #打印控制台json
form_port=$(jq -n "$data" | jq .form_port) #获取某个值