故障排查与优化深入:生产环境服务器安全策略与系统性能优化评估

本文分享了Linux运维经验,包括精简安装策略、网络设置、Selinux和iptables配置、SSH安全策略、系统更新与NTP时钟服务、内核参数优化、系统故障排查思路与性能优化方法。详细讲解了如何确保服务器安全并提升性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux运维经验分享与故障排查思路
  1. 线上服务器安装基本策略和经验
    精简安装策略:
  • 仅安装需要的,按需安装,不用不装
  • 开发包,基本网络包,基本应用包
    CentOS6.x
    在这里插入图片描述在这里插入图片描述CentOS7.x
    在这里插入图片描述系统盘按照默认分区方式
    数据盘单独挂载
  1. 线上服务器网络设置经验和技巧

2.1 Centos7.x下最好关闭的服务
该服务专门用来管理网络,如果不关闭该服务,当我们修改IP地址后可能会出现IP地址为改变的情况
在这里插入图片描述

#关闭NetworkManager服务,并关闭开机启动
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
[root@localhost ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:NetworkManager(8)

如果不关闭此服务,那么此服务会接管Linux的网络设置。有时候会导致修改了网卡配置文件IP,但是网卡的IP不变的情况

2.2 关于DNS的设置
(1)临时修改DNS设置,修改立即生效,重启服务器或重启网络后恢复

[root@localhost ~]# cat /etc/resolv.conf 
; generated by /usr/sbin/dhclient-script
search localdomain
nameserver 192.168.100.2					#修改此条配置,DNS即可被修改。立即生效

修改/etc/resolv.conf文件里的nameserver,DNS即可被修改,立刻生效
但是重启网络或者重启服务器/etc/resolv.conf里的nameserver设置会被网卡配置文件的设置覆盖

[root@localhost ~]# vim /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
search localdomain
nameserver 192.168.100.3			 #修改了此行配置
[root@localhost ~]# systemctl restart network
[root@localhost ~]# cat /etc/resolv.conf 
; generated by /usr/sbin/dhclient-script
search localdomain
nameserver 192.168.100.2				 #配置还原了

(2)永久修改DNS设置

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.112
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=192.168.100.2      #永久修改需要修改网卡配置文件本行
DNS2=202.106.0.20

2.3 关于服务器自身主机名的修改
Centos7.x

#永久修改主机名
[root@localhost ~]# cat /etc/hostname 
localhost.localdomain
[root@localhost ~]# vim /etc/hostname
#localhost.localdomain
Centos7.5
[root@localhost ~]# hostname Centos7.5
[root@localhost ~]# exit
logout
[root@Centos7 ~]# 

2.4 关于服务器对自身主机名的映射

#映射服务器自身的主机名
[root@Centos7 ~]# echo "127.0.0.1 Centos7" >> /etc/hosts
[root@Centos7 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 Centos7

请注意服务器映射自己的主机名,务必映射为127.0.0.1不要映射成网卡的IP
这是因为很多服务的运行都要验证自身的主机名是否被映射,不然会导致未知的故障

  1. 线上服务器Selinux,iptables策略设置

3.1 selinux配置(如何关闭selinux)

[root@Centos7 ~]# sestatus
SELinux status:                 disabled    #selinux 目前处于关闭状态

#永久关闭selinux开机自启动
[root@Centos7 ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled        #当然selinux开启自启动不能(enforcing开启;disabled关闭)
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

#临时关闭selinux
[root@Centos7 ~]# setenforce 0

3.2 iptables配置
如果我们的机房没有硬件防火墙的话,那么我们必须通过iptables对拥有公网网卡的服务器做安全

#防火墙配置文件/etc/sysconfig/iptables-config
#推荐配置
iptables -P INPUT ACCEPT
iptables -F
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 1.1.1.0/24 -p tcp -m tcp --dport 22 -j ACCEPT    		#放开公司内网环境 1.1.1.0/24网段的22端口给运维人员访问
iptables -A INPUT -s 2.2.2.2/32 -p tcp -m tcp --dport 22 -j ACCEPT			
iptables -A INPUT -i eth1 -j ACCEPT				#允许所用通过eth1进来的用户访问
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT				#以下是对web服务器的tcp连接做限制,防止tcp握手攻击
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags PSH,ACK PSH -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
  • 保存防火墙规则:iptables_save=“”
  • 禁止某个IP地址或网段访问
  • [ ](1)防火墙iptables -A INPUT -s1.1.1.0/24 -j DROP
  • [ ](2)nginx配置文件中location拒绝
  • [ ](3) nginx,deny
  • 允许所用通过eth1进来的用户访问:iptables -A INPUT -i eth1 -j ACCEPT
  • 可能出现的情况(web服务器):
    (1)不允许外网通过eth0网卡访问,但不限制内网通过eth1网卡出去
    (2)eth1为心跳线的网卡,允许心跳包通过
  • 企业防火墙规则:
  1. 打开所有内网,运维和开发各留两个内网网段
  2. web服务器打开tcp的80(8080)端口
  3. 存在心跳线的话,放开心跳线网卡
  4. 对数据包进行转发,是数据包能够从内网出外网,对外网进内网的数据包做限制
  5. 对web服务器的tcp连接做限制(模板)
  1. 线上服务器ssh登陆安全策略

4.1 ssh登陆策略
(1)登陆策略
备份:cp /etc/ssh/sshd_config{,.bak}

[root@www ~]# cat -n /etc/ssh/sshd_config.bak | sed -n '17p;38p;43p;47p;65p;79p;115p'
    17  #Port 22                    #修改ssh连接端口
    38  #PermitRootLogin yes        #是否允许root账号远程登陆
    43  #PubkeyAuthentication yes   #是否开启公钥连接认证
    47  AuthorizedKeysFile  .ssh/authorized_keys    #公钥文件的放置位置
    65  PasswordAuthentication yes  #是否开启密码验证登陆
    79  GSSAPIAuthentication yes    #是否关闭GSSAPI认证
   115  #UseDNS yes                 #是否关闭DNS反向解析
[root@www ~]# cat -n /etc/ssh/sshd_config | sed -n '17p;38p;43p;47p;65p;79p;115p'
    17  Port 22221                  #工作中需要设定到1万以上的端口,避免被扫描出来(生产环境),因为nmap能扫描1万一下的端口
    38  PermitRootLogin yes         #如果不是超大规模的服务器,为了方便我们可以暂时开启root远程登录
    43  PubkeyAuthentication yes    #开启公钥认证模式
    47  AuthorizedKeysFile  .ssh/authorized_keys    #公钥放置位置
    65  PasswordAuthentication no   #因为我们开启了root远程登录,因此为了安全我们关闭密码认证的方式
    79  GSSAPIAuthentication no     #关闭GSSAPI认证,极大提高ssh连接速度
   115  UseDNS no                   #关闭DNS反向解析,极大提高ssh连接速度

(2)设置xshell私钥登陆Linux

公钥在服务端,私钥在客户端,也就是说公钥只有一个,私钥可以有许多个;若想登陆对方服务器就需要把公钥给对方;
当用xshell登陆webA时,需要把私钥给xshell

#查看服务器端IP
[root@www .ssh]# hostname -I
192.168.200.174

#在Linux服务器端生成rsa密钥对
[root@www ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:royhAEKx9bhe4jLZ3SzfZ/yvhkzPgToDIx+1gSxoOLM root@www
The keys randomart image is:
+---[RSA 2048]----+
| . .             |
|  + o            |
| o..... .        |
|.+ o.. o o       |
|o =o .. S o .    |
|oE= +.o= . o .   |
|.+ +.ooo= = + .  |
| .o. +oo.+ * +   |
|  . . o. .= ooo. |
+----[SHA256]-----+

#将生成的公钥导入到服务器端的~/.ssh/authorized_keys文件里
[root@www ~]# cd .ssh/
[root@www .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub
[root@www .ssh]# cat id_rsa.pub > authorized_keys 
[root@www .ssh]# cat authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDS7U4vgjCpWrMFwnWjUlrebldvPw5NNQpnyGT/1cTsyI6ryPm19J+IQ2wNn67BpYz0NKyLjq/hYlSxlQmD7xHwNM5KQirUYPgwPhhDqGuNE+UrBZ2lUkknt358YWGpEC+TUPy/MLNbnIepPpZr0y0qyXmtp7KpeXJwLeKLzZLpHnzA8Vr3A7w/jNaDnQJmKYvDvD0Q6O54CVkkSdxaYPAT1hVfX1pKz0dSNQbJpl5ZJXigQo26M+7qYXeUBxI5Guaapl6uT5sySzTBwwd9Yt49NKE/kIivClegVfHPGF4iSqfCiCd2BTJGTuCVBS2j4lhrjTLyWRO8po7BM4yImRGf root@www

#将私钥文件id_rsa改名为rd_rsa_root并导出到宿主机桌面上
[root@www .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub
[root@www .ssh]# mv id_rsa id_rsa_root
[root@www .ssh]# ls
authorized_keys  id_rsa.pub  id_rsa_root

查看导入到桌面上的私钥文件
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
而后xshell显示登陆成功! 此时的xshell相对于其他服务器就是服务端
其实这个私钥id_rsa_root,发给其他人作为密钥就都可以登陆服务器端了
也可以发给其他Linux服务器使得他们可以ssh密钥登陆到192.168.200.174服务器端
具体操作过程如下

#将桌面上的id_rsa_root私钥文件拷贝到任意Linux服务器上并创建~/,ssh目录
[root@localhost .ssh]# ls
id_rsa_root  known_hosts

#在Linux服务器上就不能随意改名字了。将id_rsa_root改名id_rsa
[root@localhost .ssh]# mv id_rsa_root id_rsa

#授权600权限
[root@localhost .ssh]# chmod 600 id_rsa

#进行登陆测试
[root@localhost .ssh]# ssh root@192.168.200.174 -p 22221
Last login: Fri Aug 31 21:59:17 2018 from 192.168.200.131
[root@www ~]# hostname -I
192.168.200.174 
[root@www ~]# exit
logout
Connection to 192.168.200.174 closed.
[root@localhost .ssh]# hostname -I
192.168.200.131

xshell密钥登陆服务器端的普通用户yunjisuan

#创建用户
[root@www .ssh]# useradd yunjisuan

#创建普通用户云计算下的.ssh密钥目录
[root@www .ssh]# mkdir -p /home/yunjisuan/.ssh

#授权普通用户属主属组
[root@www .ssh]# chown yunjisuan.yunjisuan /home/yunjisuan/.ssh

#.ssh目录必须700权限
[root@www .ssh]# chmod 700 /home/yunjisuan/.ssh
[root@www .ssh]# ll
总用量 12
-rw------- 1 root root  390 8月  31 21:33 authorized_keys
-rw-r--r-- 1 root root  390 8月  31 21:33 id_rsa.pub
-rw------- 1 root root 1675 8月  31 21:33 id_rsa_root

#将之前root下的authorized_keys文件拷贝过去,然后修改属主属组
[root@www .ssh]# cp -p authorized_keys /home/yunjisuan/.ssh/
[root@www .ssh]# chown yunjisuan.yunjisuan /home/yunjisuan/.ssh/authorized_keys 
[root@www .ssh]# ll /home/yunjisuan/.ssh/authorized_keys
-rw------- 1 yunjisuan yunjisuan 390 8月  31 21:33 /home/yunjisuan/.ssh/authorized_keys

最后在xshell端用同样的方法远程登录yunjisuan用户选择密钥认证方式即可。
(3)用户权限策略
禁止root用户远程登录系统,授权仅普通用户登陆系统,需要管理员权限执行sudo即可,避免root用户之间登陆

#以root账号授权普通用户yunjisuan所有权限并免输入密码
[root@www ~]# sed -n '93p' /etc/sudoers
yunjisuan   ALL=(ALL)   NOPASSWD: ALL

#以yunjisuan用户测试提权
[yunjisuan@www ~]$ sudo -l
匹配 %2$s 上 %1$s 的默认条目:
    !visiblepw, always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR
    LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER
    LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

用户 yunjisuan 可以在 www 上运行以下命令:
    (ALL) NOPASSWD: ALL

[yunjisuan@www ~]$ ls /root
ls: 无法打开目录/root: 权限不够
[yunjisuan@www ~]$ sudo ls /root
anaconda-ks.cfg

#如果ssh设置了不然root用户远程登录的配置
#那么我们可以通过此普通用户面密码方式切换成root账户
[yunjisuan@www ~]$ sudo su -
上一次登录:五 8月 31 22:01:29 CST 2018从 192.168.200.131pts/1 上
[root@www ~]# ls
anaconda-ks.cfg
  1. 线上服务器更新yum源及必要软件安装以及NTP时钟服务设置

5.1 更新常用的yum源及必要软件包的安装
epel源:https://fedoraproject.org/wiki/EPEL
repoforge源:http://repoforge.org/use/
CentOS7.x服务器

#在CentOS7.x服务器上
#测试一下本机是否能上网
[root@www ~]# ping -c 1 www.baidu.com
PING www.baidu.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=1 ttl=128 time=5.42 ms

--- www.baidu.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 5.426/5.426/5.426/0.000 ms
[root@www ~]# ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
[root@www ~]# rm -rf /etc/yum.repos.d/*

#安装epel源
[root@www ~]# yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@www ~]# ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo  epel-testing.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  epel.repo

#下载并安装repoforge源
[root@www ~]# yum -y install http://repository.it4i.cz/mirrors/repoforge/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
[root@www yum.repos.d]# ls
epel.repo  epel-testing.repo  mirrors-rpmforge  mirrors-rpmforge-extras  mirrors-rpmforge-testing  rpmforge.repo

#清空旧yum缓存,创建新yum缓存
[root@www ~]# yum -y clean all
[root@www ~]# yum makecache

#更新系统中已经安装的软件包
[root@www yum.repos.d]# yum -y update

CentOS6.x服务器

#在CentOS6.x服务器上
[root@localhost ~]# ls /etc/yum.repos.d/
bak  CentOS-Media.repo

#测试一下服务器是否能上网
[root@localhost ~]# ping -c 1 www.baidu.com
PING www.baidu.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121: icmp_seq=1 ttl=128 time=4.56 ms

--- www.baidu.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 10ms
rtt min/avg/max/mdev = 4.563/4.563/4.563/0.000 ms

#安装epel源
[root@localhost ~]# yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
[root@localhost ~]# ls /etc/yum.repos.d/
bak  CentOS-Media.repo  epel.repo  epel-testing.repo

#下载并安装repoforge源
[root@localhost ~]# yum -y install http://repository.it4i.cz/mirrors/repoforge/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
[root@localhost ~]# ls /etc/yum.repos.d/
bak                epel.repo          mirrors-rpmforge         mirrors-rpmforge-testing
CentOS-Media.repo  epel-testing.repo  mirrors-rpmforge-extras  rpmforge.repo

#清空旧yum缓存,创建新yum缓存
[root@www ~]# yum -y clean all
[root@www ~]# yum makecache

#更新系统中已经安装的软件包
[root@www yum.repos.d]# yum -y update

5.2 修改时区与定时自动更新服务器时间
推荐时间服务器:ntp.sjtu.edu.cn ntp1.aliyun.com

#安装ntpdate时间同步客户端
[root@localhost ~]# yum -y install ntpdate

#修改时区
[root@localhost ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#进行时间同步
[root@www yum.repos.d]# ntpdate ntp1.aliyun.com
[root@localhost ~]# ntpdate ntp.sjtu.edu.cn

#将时间同步加入定时任务
[root@www ~]# echo '*/5 * * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn >> /var/log/ntp.log 2>&1;/sbin/hwclock -w' >> /var/spool/cron/root
[root@www ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn >> /var/log/ntp.log 2>&1;/sbin/hwclock -w

说明:
/sbin/hwclock -w :将时钟信息刷新到bios里,bios的主板时间没有变,让bios的时间进行同步
  1. 精简开机服务,删除无关用户,清理垃圾文件,重要文件安全策略

6.1 线上服务器必须开启的五个服务
crond,network,syslog,sshd,sysstat

6.2 删除无关用户

6.3 定时自动清理垃圾文件
(1)查找大文件的方法
先从根下排查,根据内存大的目录进行分析,进到相对的目录继续排查…

[root@www /]# du -sh ./*
0   ./bin
127M    ./boot
0   ./dev
31M ./etc
20K ./home
0   ./lib
0   ./lib64
4.2G    ./media
0   ./mnt
0   ./opt
du: 无法访问"./proc/16820/task/16820/fd/4": 没有那个文件或目录
du: 无法访问"./proc/16820/task/16820/fdinfo/4": 没有那个文件或目录
du: 无法访问"./proc/16820/fd/4": 没有那个文件或目录
du: 无法访问"./proc/16820/fdinfo/4": 没有那个文件或目录
0   ./proc
68K ./root
7.7M    ./run
0   ./sbin
0   ./srv
0   ./sys
4.0K    ./tmp
1.2G    ./usr
457M    ./var
[root@www /]# cd /usr/
[root@www usr]# du -sh ./*
69M ./bin
0   ./etc
0   ./games
18M ./include
486M    ./lib
169M    ./lib64
55M ./libexec
0   ./local
42M ./sbin
300M    ./share
0   ./src
0   ./tmp

(2)定时任务清理的关键目录路径
/var/spool/mail/ #邮件路径
/var/spool/postfix/maildrop #小碎片路径

6.4 重要文件安全策略
chattr +i /etc/sudoers
chattr +i /etc/shadow
chattr +i /etc/passwd
chattr +i /etc/grub.conf #引导配置文件

  1. 线上服务器系统内核参数优化策略

7.1 显示当前所有系统资源使用限制
ulimit -a 查看所有内核配置参数

[root@localhost ~]# ulimit -a 
core file size          (blocks, -c) 0  #core文件的最大值为100blocks(core文件是针对C语言、c++语言,一旦该语言代码出错就会在内核中生成一个报告,就是core文件)
data seg size           (kbytes, -d) unlimited  #进程的数据段可以任意大
scheduling priority             (-e) 0          #调度优先级
file size               (blocks, -f) unlimited  #文件可以任意大
pending signals                 (-i) 7696       #最多有7696个待处理的信号
max locked memory       (kbytes, -l) 64         #一个任务锁住的物理内存的最大值为64KB
max memory size         (kbytes, -m) unlimited  #一个任务的常驻物理内存的最大值
open files                      (-n) 1024       #一个任务最多可以同时打开1024个文件
pipe size            (512 bytes, -p) 8          #管道的最大空间为4096(512*8)字节
POSIX message queues     (bytes, -q) 819200     #POSIX的消息队列的最大值为819200字节
real-time priority              (-r) 0          #real-time调度优先级
stack size              (kbytes, -s) 10240      #进程的栈的最大值为10240字节
cpu time               (seconds, -t) unlimited  #进程使用的CPU时间
max user processes              (-u) 7696       #当前用户同时打开的进程(包括线程)的最大个数为7696
virtual memory          (kbytes, -v) unlimited  #没有限制进程的最大地址空间
file locks                      (-x) unlimited  #所能锁住的文件的最大个数没有限制

需要重点关注的内核参数(1):ulimit -c

[root@www ~]# ulimit -c     #查看core file size大小,默认0是关闭状态,unlimited是没有限制状态
0                           

说明:
系统调试时用,当系统的某些进程出现问题,内部会生成一些core文件,我们通过查看这个core文件我们就可以知道发生了什么问题。具体使用在C和C++程序中,它们利用这些文件进行调试

#打开core file size无限制状态
[root@www ~]# ulimit -c unlimited
[root@www ~]# ulimit -c
unlimited

需要重点关注的内核参数(2):ulimit -f

[root@www ~]# ulimit -f     #系统文件的最大大小,默认unlimited是没有限制
unlimited

说明:
控制操作系统中文本文件的大小,有时候,我们的一些应用程序的日志文件,如果我们想控制日志文件的最大的量值的话,我们就需要对这个参数做一些限制。这个参数具体到底限制还是不限制,要具体思考。因为如果限制文件的大小。那么一旦到了文件设定的最大大小,应用程序就不能再写入日志文件了。

需要重点关注的内核参数(3):ulimit -n

[root@www ~]# ulimit -n				#单个进程文件最大打开数
1024

说明:
这个参数是我们必须要调整的参数,在生产中1024这个数值基本是不够的。1024就代表系统的内存中同时只能放1024个文件的句柄(打开文件)。一般来说65536就够用了。


[root@www ~]# ulimit -n 65536
[root@www ~]# ulimit -n
65536

永久修改limits.conf主配置文件

[root@localhost ~]# vim /etc/security/limits.conf

2、在主配置文件最后加入下面两句

  • soft nofile 65535
  • hard nofile 65535

注意“”是要加到文件里面的。这两句话的含义是soft(应用软件)级别限制的最大可打开文件数的限制,hard表示操作系统级别限制的最大可打开文件数的限制,“”表示所有用户都生效。保存这个文件(只有root用户能够有权限)。

保存这个文件后,配置是不会马上生效的,为了保证本次shell会话中的配置马上有效,我们需要通过ulimit命令更改本次的shell会话设置(当然您如果要重启系统,我也不能说什么)。

[root@localhost ~]# ulimit -n 65535

需要重点关注的内核参数(4):ulimit -u

[root@www ~]# ulimit -u #系统用户同时打开的进程(线程)的最大数
3804

说明:
很多程序都是用普通用户运行的。用户能够同时并发启用的进程(线程)个数,就代表了我们程序的性能,很多程序都是支持高并发的。因此,这个参数我们是需要修改大的。一般来说65536就够用了

[root@www ~]# ulimit -u 65536
[root@www ~]# ulimit -u
65536

对于Web服务器、MySQL等支持并发的服务器必改的优化参数:(1)单个进程文件最大打开数ulimit -n
(2)用户同时打开的最大进程(线程)数 ulimit -u

7.2 修改内核参数的几种修改方法

  • /etc/profile: 所有用户生效,永久有效;
  • ~/.bash_profile:当前用户生效,永久有效;
  • 直接在控制台输入,当前用户有效,临时生效;
  • /etc/security/limits.conf:指定用户或用户组生效,永久生效(centos7版本);
  #在/etc/security/limits.conf中设定对内核的修改,永久生效
    [root@www ~]# tail -12 /etc/security/limits.conf 
    #<domain>      <type>  <item>         <value>
    #
    
    #*               soft    core            0
    #*               hard    rss             10000
    #@student        hard    nproc           20
    #@faculty        soft    nproc           20
    #@faculty        hard    nproc           50
    #ftp             hard    nproc           0
    #@student        -       maxlogins       4
    
    # End of file
    
    说明:
    <domain> 指定匹配参数修改的用户和用户组,*代表所有用户;
    <type> 限制的类型soft软限制,hard硬限制;
    <item> nproc代表最大进程数;nofile代表最大文件打开数;core代表限制内核文件大小;maxlogins代表此用户允许登陆的最大数目
    <value> 具体的限制数值
    hard硬限制:用户在任何时候都可以活动的进程的最大数量,这是上限。没有任何非root进程能够增加hard ulimit;
    soft软限制:是对会话或进程实际执行的限制,但任何进程都可以将其增加到hard ulimit的最大值
    
    #增加对系统内核参数的限制,修改完毕,退出登陆在进入即可生效
    [root@www ~]# tail -4 /etc/security/limits.conf
    * soft nofile 65536
    * hard nofile 65536
    * soft nproc 65536
    * hard nproc 65536
    
    #退出登录后,再验证
    [root@www ~]# ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 3804
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 65536      #已经改变
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 65536      #已经改变
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
  1. 线上服务器系统故障排查思路与关注点
    (1)tail -f /usr/local/nginx/logs/error.log #服务应用类日志查询
    (2)tail -f /var/log/messages #系统应用类日志查询
    (3)tail -f /var/log/secure #登录日志查询
    (4)dmesg #系统日志查询
    (5)/var/tmp,/tmp #容易被攻击的点查询
    (6)crontab -l,/etc/crontab #计划任务查询(经常攻击对象)
[root@localhost ~]# tail -1000 /var/log/secure | grep Accepted
Jan 18 07:04:45 localhost sshd[1199]: Accepted password for root from 192.168.100.1 port 65167 ssh2
Jan 18 10:02:15 localhost sshd[11661]: Accepted publickey for root from 192.168.100.1 port 50803 ssh2: RSA SHA256:r7vd1uXOJHjclXOeFLLW2aG+Hx5OA5gfoMxcIw293NI
Jan 18 10:04:40 localhost sshd[11688]: Accepted password for root from 192.168.100.1 port 50824 ssh2
Jan 18 10:08:19 localhost sshd[11734]: Accepted publickey for root from 192.168.100.1 port 50855 ssh2: RSA SHA256:r7vd1uXOJHjclXOeFLLW2aG+Hx5OA5gfoMxcIw293NI
Jan 18 10:10:08 localhost sshd[11765]: Accepted publickey for root from 192.168.100.1 port 50869 ssh2: RSA SHA256:r7vd1uXOJHjclXOeFLLW2aG+Hx5OA5gfoMxcIw293NI
Jan 18 10:12:12 localhost sshd[11795]: Accepted publickey for root from 192.168.100.1 port 50887 ssh2: RSA SHA256:r7vd1uXOJHjclXOeFLLW2aG+Hx5OA5gfoMxcIw293NI
Jan 18 10:18:21 localhost sshd[11856]: Accepted publickey for root from 192.168.100.113 port 60540 ssh2: RSA SHA256:nikM6oe6BwfsJ1nQsDdsbTaPbanVXSfBy+a0CtttPgc
Jan 18 10:24:27 localhost sshd[11897]: Accepted publickey for daisy from 192.168.100.1 port 51038 ssh2: RSA SHA256:nikM6oe6BwfsJ1nQsDdsbTaPbanVXSfBy+a0CtttPgc
Jan 18 10:29:44 localhost sshd[1218]: Accepted publickey for daisy from 192.168.100.1 port 51158 ssh2: RSA SHA256:nikM6oe6BwfsJ1nQsDdsbTaPbanVXSfBy+a0CtttPgc
Jan 18 11:09:17 localhost sshd[1378]: Accepted publickey for daisy from 192.168.100.113 port 60548 ssh2: RSA SHA256:nikM6oe6BwfsJ1nQsDdsbTaPbanVXSfBy+a0CtttPgc

Linux系统性能优化思路和方法
  1. 影响Linux性能的CPU,内存,磁盘,网络等因素分析

1.1 CPU

查看CPU的平均负载值

  1. w
    2.uptime
    3.cat pro/loadavg
    4.top

-如何判断多核CPU与超线程

  • top命令按数字1,可以看到CPU一共有多少核
  • 在/proc/cpuinfo查看并过滤
    在这里插入图片描述
#查看/proc/cpuinfo里部分信息
[root@localhost ~]# cat /proc/cpuinfo
processor	: 0									#CPU的线程号,过滤这个获得服务器的总线程数
vendor_id	: GenuineIntel
cpu family	: 6
model		: 158
model name	: Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz
stepping	: 10
microcode	: 0x84
cpu MHz		: 2808.004
cache size	: 9216 KB
physical id	: 0								#CPU的物理ID号。过滤这个获得服务器的物理CPU数
siblings	: 1
core id		: 0									#表示当前的信息出自physical id为0的CPU上的第一个核心
cpu cores	: 1								表示当前物理physical id为0的CPU上有4个核心
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 22
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat
bogomips	: 5616.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management:

#查看物理服务器有几个物理CPU
[root@Centos7 ~]# cat /proc/cpuinfo | grep "physical id"
physical id	: 0								#物理id号
physical id	: 0	
physical id	: 0	
physical id	: 0	
physical id	: 1
physical id	: 1
physical id	: 1
physical id	: 1
[root@Centos7 ~]# cat /proc/cpuinfo | grep "physical id" | uniq 
physical id : 0
physical id : 1
[root@Centos7 ~]# cat /proc/cpuinfo | grep "physical id" | uniq  | wc -l
2                       #服务器一共有两个物理CPU

#查看物理服务器的CPU的总线程数
[root@Centos7 ~]# cat /proc/cpuinfo | grep "processor" | uniq  | wc -l
8

#查看物理服务器的CPU的总核心数
[root@Centos7 ~]# cat /proc/cpuinfo | grep "core id" | wc -l
8

特别说明:
如果CPU的总核心数和总线程数相等,则CPU不具备超线程能力。如果总线程数是总核心数的二倍,则当前服务器的CPU具备超线程的能力。

主要消耗CPU的业务:动态Web服务,mail服务

1.2 内存
缓存占用硬盘空间,临时充当内存,防止内存不够

  • 物理内存与swap的取舍
  • 选择64位Linux操作系统,32位最多只支持4g内存

如果物理内存大于16G,那么swap等于物理内存或者是物理内存两倍都是可以的。 如果物理内存小于16G,那么swap和内存大小保持一致。
消耗内存的业务:内存数据库(redis/hbase/mongodb)

1.3 磁盘I/O

  • RAID技术(RAID 0/1/5/10)
  • SSD磁盘

消耗磁盘的业务:数据库服务器

1.4 网络带宽

  • 网卡/交换机的选择:起码千兆网卡/千兆普通交换机/万兆核心交换机
  • 操作系统双网卡绑定:通过绑定提高网卡带宽吞吐量

消耗带宽的业务:分布式文件系统,视频业务平台

  1. 影响Linux性能的操作系统相关资源分析

2.1 系统安装优化

磁盘分区,RAID设置,swap设置

2.2 内核参数优化
ulimit -n(单进程文件最大打开数)
ulimit -u(最大用户的进程数)

2.3 文件系统优化

  • ext4:Linux原生态文件格式
  • xfs:Centos7开始默认支持

应用建议:
读操作频繁,同时小文件众多的应用:首选ext4文件系统
写操作频繁的应用,首选xfs

2.4 程序问题

此类问题需要开发人员查看代码,介入处理。但作为运维人员需要给出程序问题的有力证据。

  1. 系统性能调优之CPU性能评估工具与优化经验

3.1 vmstat(系统默认自带)

利用vmstat命令可以对操作系统的内存信息,进程状态,CPU活动等进行监视。

[root@Centos7 ~]# vmstat 3 5        #每3秒刷新一次,输出5次数据
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 778888   2124 125340    0    0     3     0   10    9  0  0 100  0  0
 0  0      0 778988   2124 125340    0    0     0     0   52   43  0  0 100  0  0
 0  0      0 778988   2124 125340    0    0     0     0   51   47  0  0 100  0  0
 0  0      0 778988   2124 125340    0    0     0     0   40   39  0  0 100  0  0
 0  0      0 778984   2124 125340    0    0     0     0   42   41  0  0 100  0  0
  • procs:
  • r 列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU个数,说明CPU不足,需要增加CPU
  • b 列表示在等待资源的进程数,比如正在等待I/O,或者内存交换等。长期大于0,那么说明CPU不足
  • memory:
  • swpd 列表示切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者比较大,只要si,so的值长期为0,这种情况下一般不用担心,不会影响系统性能。
  • free 列表示当前空闲的物理内存数量(以k为单位)
  • buff 列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲。
  • cache 列表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached,如果cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好。
  • swap
  • 默认剩余内存小于60%就会使用缓存
  • si 列表示由磁盘调入内存,也就是内存进入内存交换区的数量
  • so 列表示由内存调入磁盘,也就是内存交换区进入内存的数量 一般情况下,si,so的值都为0,如果si,so的值长期不为0,则表示系统内存不足。需要增加系统内存。
  • IO项显示磁盘读写状况
  • Bi列表示从块设备读入数据的总量(即读磁盘)(每秒kb)
  • Bo列表示写入到块设备的数据重量(即写磁盘)(每秒kb) 这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大,则表示系统磁盘IO有问题,应该考虑提高磁盘的读写性能。
  • system 显示采集间隔内发生的中断数 (系统对CPU的占用)
  • in 列表示在某一时间间隔中观测到的每秒设备中断数
  • cs 列表示每秒产生的上下文切换次数 上边这两个值越大,会看到由内核消耗的CPU时间会越多
  • CPU项显示了CPU的使用状态,此列是我们关注的重点
  • us 列显示了用户进程消耗的CPU时间百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法。
  • sy 列显示了内核进程消耗的CPU时间百分比。Sy的值比较高时,说明内核消耗的CPU资源很多。
  • us+sy的参考值为80%,如果us+sy大于80%说明可能存在CPU资源不足。
  • id 列显示了CPU处在空闲状态的时间百分比。
  • wa 列显示了IO等待所占用的CPU时间百分比。
  • wa值越高,说明IO等待越严重,根据经验,wa的参考值为20%,如果wa超过20%,说明IO等待严重,引起IO等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者磁盘控制器的带宽瓶颈造成的(主要是块操作)

综上所述: 在对CPU的评估中,需要重点注意的是procs项r列的值和CPU项中us,sy和id列的值

3.2 iostat

   [root@Centos7 ~]# iostat -c 3 5
   Linux 3.10.0-862.3.3.el7.x86_64 (Centos7.5)     2018年09月01日     _x86_64_    (8 CPU)
   
    vg-cpu:  %user   %nice %system %iowait  %steal   %idle
              0.03    0.00    0.02    0.00    0.00   99.95
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              0.00    0.00    0.00    0.00    0.00  100.00
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.00    0.00    0.00    0.00    0.00  100.00
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.00    0.00    0.04    0.00    0.00   99.96
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.00    0.00    0.00    0.00    0.00  100.00

3.3 uptime和w

root@Centos7 ~]# uptime
22:43:43 up  2:20,  2 users,  load average: 0.00, 0.01, 0.01
[root@Centos7 ~]# w
15:38:48 up  3:09,  1 user,  load average: 0.00, 0.01, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
yunjisua pts/0    192.168.200.1    15:29    0.00s  0.01s  0.00s sshd: yunjisuan [priv]
  1. 系统性能调优之内存性能,磁盘性能评估工具与优化经验

4.1 free -m(评估内存)

    #查看Centos6.x的内存情况
    [root@localhost ~]# free -m
                 total       used       free     shared    buffers     cached
    Mem:           980        368        612          0         12        286
    -/+ buffers/cache:         68        911
    Swap:         1983          0       1983
    
    说明:
    系统可使用的剩余内存容量:911M   ===> 系统剩余内存 612M + buffers 12M + cached 286M
    通过swap可以看出来,交换分区使用量为0,说明系统内存资源还非常充足。
    
    #查看Centos7.x的内存情况
    [root@Centos7 ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:            974          89         573           7         312         707
    Swap:          2047           0        2047
    
    说明:
    系统剩余内存容量:573M
    buffers+cache容量:312M
    系统可用剩余内存容量为:available 707M

  • 一般情况我们可以这样去判断内存:
  • 系统可用剩余内存总量/系统物理内存重量>70%时,表示系统内存资源非常充足,不影响系统性能;
  • 系统可用剩余内存总量/系统物理内存重量<20%时,表示系统内存资源紧缺,需要增加系统内存;
  • 20%<系统可用剩余内存总量/系统物理内存重量<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。

4.2 sar(主要评估内存)

此两个命令主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存,设备I/O

三个公用参数:-u(获取CPU状态),-r(获取内存状态),-d(获取磁盘)

[root@Centos7 ~]# sar -u 3      #每3秒获取一次CPU状态信息
Linux 3.10.0-862.3.3.el7.x86_64 (Centos7.5)     2018年09月02日     _x86_64_    (8 CPU)

15时46分38秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
15时46分41秒     all      0.00      0.00      0.04      0.00      0.00     99.96
15时46分44秒     all      0.00      0.00      0.00      0.00      0.00    100.00


[root@Centos7 ~]# sar -r 3      #每3秒获取一次MEM状态信息
Linux 3.10.0-862.3.3.el7.x86_64 (Centos7.5)     2018年09月02日     _x86_64_    (8 CPU)

15时47分57秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
15时48分00秒    586576    411396     41.22      2684    256608    193496      6.25    191660    103324         0
15时48分03秒    586584    411388     41.22      2684    256608    193496      6.25    191660    103324         0

说明:
kbmemfree:表示空闲物理内存大小
kbmemused:表示已经使用的物理内存大小
%memused:表示已经使用内存占总内存百分比
kbbuffers和kbcached:表示buffers和cache占用的大小
kbcommit和%commit分别表示应用程序当前使用的内存大小和使用百分比

4.3 iostat -d 组合(主要评估磁盘)

[root@Centos7 ~]# iostat -d 2 3
Linux 3.10.0-862.3.3.el7.x86_64 (Centos7.5)     2018年09月02日     _x86_64_    (8 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.62        16.00         6.85     207832      89039
scd0              0.02         0.23         0.00       2978          0
dm-0              0.48        15.20         6.70     197510      86991
dm-1              0.01         0.17         0.00       2228          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
scd0              0.00         0.00         0.00          0          0
dm-0              0.00         0.00         0.00          0          0
dm-1              0.00         0.00         0.00          0          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
scd0              0.00         0.00         0.00          0          0
dm-0              0.00         0.00         0.00          0          0
dm-1              0.00         0.00         0.00          0          0

说明:
DEV:表示磁盘设备名称
tps:表示每秒到物理磁盘的传送数,也就是每秒的I/O流量。一个传送就是一个I/O请求,多个逻辑请求可以被合并为一个物理I/O请求。
kB_read/s:每秒读取的数据块
kB_wrtn/s:每秒写入的数据块
kB_read:读取的所有数据块总数
kB_wrtn:写入的所有数据块总数
  1. 系统性能调优之网络性能评估工具

开发人员反应有一台内网的物理服务器xshell连接不上,排查思路:

  1. 网络连接情况,ping网关本地IP或外网
  2. 网关正常,查看物理服务器是否宕机,sshd服务是否启动
  3. 对数据包进行追踪:
    查看网络路由:
    route -n
    netstat -rn
    ip route

5.1 ping命令

[root@Centos7 ~]# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.013 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.047 ms

--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.013/0.035/0.047/0.016 ms

说明:
     在这个输出中,time值表示了两台主机之间的网络延时情况,如果值很大,则表示网络的延时很大,单位为毫秒。在这个输出的最后,还有一个统计总结。packet loss表示网络丢包率,值越小,网络质量越高。

5.2 netstat命令

  • netstat -rn(查看路由情况) <====> route -n
  • netstat -i(查看网络接口状态)
[root@Centos7 ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.200.2   0.0.0.0         UG        0 0          0 ens32
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 ens32
192.168.200.0   0.0.0.0         255.255.255.0   U         0 0          0 ens32
[root@Centos7 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.200.2   0.0.0.0         UG    0      0        0 ens32
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens32
192.168.200.0   0.0.0.0         255.255.255.0   U     0      0        0 ens32
[root@Centos7 ~]# netstat -i
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
ens32     1500    17338      0      0 0          3869      0      0      0 BMRU
lo       65536       70      0      0 0            70      0      0      0 LRU

5.3 mtr/traceroute命令

跟踪网络路由状态,推荐使用mtr,动态跟踪网络路由,用于排除网络问题非常方便。

#安装命令
[root@Centos7 ~]# yum -y install traceroute mtr

#traceroute追踪到www.baidu.com的路由器
[root@Centos7 ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 60 byte packets
 1  localhost (192.168.200.2)  0.091 ms  0.050 ms  0.074 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
......下边省略无穷多......

[root@localhost ~]# mtr -n -c 10 124.207.131.181 --report
Start: Sat Jan 19 12:18:20 2019
HOST: localhost.localdomain       Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.168.100.2              0.0%    10    0.4   0.6   0.3   1.7   0.3
  2.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0
  3.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0
  4.|-- 124.207.131.181            0.0%    10    5.9   7.6   5.8  13.3   2.7


traceroute虽然也能追踪数据包,但是并不能直观的看
mtr命令 -n 不用主机解析 -c 发送数据包个数 --report结果显示,不动态

在这里插入图片描述

mtr这个命令在排查网络故障时非常好用

  1. Linux操作系统性能分析标准
影响性能因素评判标准评判标准评判标准
糟糕
CPUuser%+sys%<70%user%+sys%=85%user%+sys%>=90%
内存Swap In(si)=0;Swap Out(so)=0Per CPU with 10 page/sMore Swap In & Swap Out
磁盘iowait % < 20%iowait % = 35%iowait % >=50%
  • %user:表示CPU处在用户模式下的时间百分比
  • %sys:表示CPU处在系统模式下的时间百分比
  • %iowait:表示CPU等待输入输出完成时间的百分比
  • swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值