Iawen's Blog

我喜欢这样自由的随手涂鸦,因为我喜欢风......

1. 手动设置本地网络连接:

1.1 CentOS

配置IPADDR、子网掩码NETMASK、网关GATEWAY、DNS1…, 如:

# /etc/sysconfig/network-scripts/ifcfg-enoxxxx
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.137.3
NETMASK=255.255.255.0
GATEWAY=192.168.137.2
DNS1=202.96.134.133
DNS2=8.8.8.8
DNS3=114.114.114.114
DNS4=8.8.4.4

1.2 Ubuntu 18

ubuntu 18设置静态ip,下面以设置固定Ip:192.168.1.134为例;在/etc/netplan目录下有个.yaml文件,当前环境的文件名为50-cloud-init.yaml,以修改后的内容替换原来的部分(如果当前用户无权限修改该文件,请更换操作账户) note:如果不设置静态Ip,重启后Ip有变动的话,就需要登录每个zookeeper的机器更改hosts文件,修改ip,机器名的映射

# 原来文件内容
network:
    ethernets:
        ens18:
            dhcp4: true
    version: 2

# 修改后的文件内容
network:
    ethernets:
        ens18:  #配置的网卡名称 ,该节点使用你环境的配置即可,不一定是这个名称
            dhcp4: no #dhcp4关闭
            addresses: [192.168.1.134/24]   #设置当前机器IP及掩码
            gateway4: 192.168.1.253   #设置网关,改为测试环境所在的网关
    version: 2

执行以下命令

cd /etc/netplan
vim 50-cloud-init.yaml
sudo netplan apply

# 刷新DNS
/etc/init.d/nscd restart # apt-get install nscd

2. 常用配置命令

# 重启一下网络服务:
service network restart

# 设置IP和掩码
ifconfig eth0 192.168.137.3 netmask 255.255.255.0

# 设置网关
route add default gw 192.168.137.2

# 启动对应的网卡:
sudo ifconfig eth1 up

#重启一下网络服务:
service network restart

# 要查看网卡细节,输入以下命令: 
ip addr

# 要查看网络接口统计数据,输入命令
ip link
 
# 修改主机名
hostnamectl set-hostname jiaolun.top

3. 常用的内核参数

3.1 常用的内核参数

# 解决time_wait连接数大量问题
# vim /etc/sysctl.conf
# 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
kernel.sysrq=1

# tcp
# 第一个值是为你们的TCP连接所需分配的最少字节数。该值默认是4K,最大的话8MB之多。也就是说你们有数据发送的时候我需要至少为对应的socket再分配4K内存,甚至可能更大。
net.ipv4.tcp_rmem = 4096 87380 8388608 
net.core.rmem_default = 212992
net.core.rmem_max = 8388608

# 第一个值是发送缓存区的最小值,默认也是4K。当然了如果数据很大的话,该缓存区实际分配的也会比默认值大。
net.ipv4.tcp_wmem = 4096 65536 8388608
net.core.wmem_default = 212992
net.core.wmem_max = 8388608

3.2 参数详解

net.ipv4.tcp_syncookies = 1 表示开启 syn cookies 。当出现 syn 等待队列溢出时,启用 cookies 来处理,可防范少量 syn ***,默认为 0 ,表示关闭; 
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将 time-wait sockets 重新用于新的 tcp 连接,默认为 0 ,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启 tcp 连接中 time-wait sockets 的快速回收,默认为 0 ,表示关闭。
net.ipv4.tcp_fin_timeout 修改系靳默认的 timeout 时间
net.ipv4.tcp_keepalive_time = 1200 #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 1024 65000 #表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
net.ipv4.tcp_max_syn_backlog = 8192 #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 5000 #表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
# 默认为180000,改为5000。
# 对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

4. 网络协议

4.1 安装sctp协议

使用命令yum list lksctp* 查看需要安装列表

5. 网络检测

5.1 lsof

lsof -i:端口号

5.2 netstat

netstat -tunlp|grep 端口号
netstat -antup | grep ftp
 
# 查看网络连接数:
netstat -an |wc -l
 
# 查看不同状态的连接数数量
netstat -an | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'
 
# 查看每个ip跟服务器建立的连接数
netstat -nat|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn
 
# 查看每个ip建立的ESTABLISHED/TIME_OUT状态的连接数
netstat -nat|grep ESTABLISHED|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn

# 常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭。
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 

5.3 slabtop命令

可以查看到densty、flip、sock_inode_cache、TCP四个内核对象

 Active / Total Objects (% used)    : 453512 / 464623 (97.6%)
 Active / Total Slabs (% used)      : 9031 / 9031 (100.0%)
 Active / Total Caches (% used)     : 94 / 121 (77.7%)
 Active / Total Size (% used)       : 114250.87K / 118810.99K (96.2%)
 Minimum / Average / Maximum Object : 0.01K / 0.25K / 8.00K

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
 51120  51120 100%    0.13K    852       60      6816K kernfs_node_cache
 45780  42981  93%    0.19K   1090       42      8720K dentry
 42900  41833  97%    0.10K   1100       39      4400K buffer_head
 30888  30888 100%    0.20K    792       39      6336K vm_area_struct
 25728  25728 100%    0.06K    402       64      1608K anon_vma_chain
 24732  24467  98%    0.59K    458       54     14656K inode_cache
 24448  24448 100%    0.03K    191      128       764K kmalloc-32
 23680  21298  89%    0.25K    370       64      5920K filp
 15040  14893  99%    0.50K    235       64      7520K kmalloc-512
 14076  14076 100%    0.09K    306       46      1224K anon_vma
 13632  13488  98%    0.06K    213       64       852K kmalloc-64
 12800  12800 100%    0.02K     50      256       200K kmalloc-16
 10752  10752 100%    0.07K    192       56       768K Acpi-Operand
  9216   9216 100%    0.01K     18      512        72K kmalloc-8
  8624   6904  80%    0.57K    154       56      4928K radix_tree_node
  8568   8568 100%    0.04K     84      102       336K Acpi-Namespace
  8280   7242  87%    1.05K    276       30      8832K ext4_inode_cache
  7424   7168  96%    0.25K    116       64      1856K skbuff_head_cache
  7344   6853  93%    0.66K    153       48      4896K proc_inode_cache
  7224   7009  97%    0.19K    172       42      1376K cred_jar
  5504   5504 100%    0.12K     86       64       688K pid
  5304   5304 100%    0.04K     52      102       208K ext4_extent_status
  4620   4548  98%    0.09K    110       42       440K kmalloc-96
  4536   4536 100%    0.19K    108       42       864K kmalloc-192
  4048   4048 100%    0.69K     88       46      2816K sock_inode_cache
  3552   3496  98%    1.00K    111       32      3552K kmalloc-1024
  3400   3400 100%    0.05K     40       85       160K ftrace_event_field