[关闭]
@zhangsiming65965 2019-02-23T12:09:15.000000Z 字数 15580 阅读 146

生产环境服务器安全策略与系统性能优化

云计算

---Author:张思明 ZhangSiming

---Mail:1151004164@cnu.edu.cn

---QQ:1030728296

如果有梦想,就放开的去追;
因为只有奋斗,才能改变命运。


一、系统性能优化

1.1精简化安装系统

精简安装策略:
1.仅安装需要的,按需安装,不用不装;
2.开发包、基本网络包、基本应用包。
3.系统盘按照默认分区方式 ,数据盘单独挂载

1.2关闭NetworkManager服务并关闭开机自启动

  1. [root@ZhangSiming ~]# systemctl stop NetworkManager
  2. [root@ZhangSiming ~]# systemctl disable NetworkManager
  3. Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
  4. Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
  5. Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
  6. #如果不关闭此服务,那么此服务会接管Linux的网络设置。有时候会导致修改了网卡配置文件IP,但是网卡的IP不变的情况;或者导致IP地址自动变化的故障。

1.3进行配置DNS设置

1./etc/resolv.conf:临时修改DNS地址,重启网卡会被网卡里面的DNS配置覆盖;
2./etc/sysconfig/network-scripts/ifcfg-ens32网卡中配置DNS。

1.4修改服务器自身主机名

  1. [root@ZhangSiming tomcat]# cat /etc/hostname
  2. ZhangSiming
  3. #修改之后重启生效,仅限于CentOS7.5

1.5服务器自身主机名映射

  1. [root@ZhangSiming tomcat]# tail -1 /etc/hosts
  2. 192.168.17.143 ZhangSiming
  3. 127.0.0.1 ZhangSiming
  4. #注意一定要有127.0.0.1的映射,因为有些服务需要验证自身的主机名有没有被映射

1.6更新常用的yum源及必要软件包的安装

  1. [root@ZhangSiming ~]# cat yum.sh
  2. #!/bin/bash
  3. ping -c 1 www.baidu.com &>/dev/null
  4. if [ $? != 0 ];then
  5. echo "network problem"
  6. exit 1
  7. fi
  8. yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm &>/dev/null
  9. 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 &>/dev/null
  10. yum -y clean all &>/dev/null
  11. yum makecache &>/dev/null
  12. yum -y update &>/dev/null
  13. echo "yum is ready!"
  14. [root@ZhangSiming ~]# sh yum.sh
  15. yum is ready!
  16. #yum配置优化完成
  17. [root@ZhangSiming ~]# ls /etc/yum.repos.d/
  18. epel.repo local.repo mirrors-rpmforge-testing
  19. epel.repo.rpmnew mirrors-rpmforge rpmforge.repo
  20. epel-testing.repo mirrors-rpmforge-extras
  21. #注意,CentOS7和CentOS6的网yum源地址不同,自行查找下载配套的即可

1.7修改时区与定时自动更新服务器时间

推荐时间服务器:ntp.sjtu.edu.cn ntp1.aliyun.com

  1. [root@ZhangSiming ~]# yum -y install ntpdate
  2. [root@ZhangSiming ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  3. cp: ‘/usr/share/zoneinfo/Asia/Shanghai and ‘/etc/localtime are the same file
  4. #修改时区
  5. [root@ZhangSiming ~]# ntpdate ntp.sjtu.edu.cn
  6. #校准时间
  7. 23 Feb 14:58:12 ntpdate[1523]: step time server 202.108.6.95 offset -2.118379 sec
  8. [root@ZhangSiming ~]# echo '*/5* * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn >> /var/log/ntp.log 2>&1; /sbin/hwclock -w' >> /var/spool/cron/root
  9. #加入定时任务,每5分钟执行一次;/sbin/hwclock -w 的意思是将时钟信息刷新到bios里
  10. [root@ZhangSiming ~]# crontab -l
  11. */5* * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn >> /var/log/ntp.log 2>&1; /sbin/hwclock -w

1.8必须开启的5个服务(其他服务全关闭)

crond:定时任务、network:网络服务、rsyslog:日志服务、sshd:远程连接服务、sysstat:系统工具包

  1. [root@ZhangSiming ~]# systemctl enable crond.service
  2. [root@ZhangSiming ~]# systemctl enable network.service
  3. network.service is not a native service, redirecting to /sbin/chkconfig.
  4. Executing /sbin/chkconfig network on
  5. [root@ZhangSiming ~]# systemctl enable sshd.service
  6. [root@ZhangSiming ~]# systemctl enable sysstat.service
  7. [root@ZhangSiming ~]# systemctl enable syslog.service
  8. #CentOS7查看开机自启动服务的命令
  9. [root@ZhangSiming ~]# systemctl list-unit-files | grep enabled
  10. auditd.service enabled
  11. autovt@.service enabled
  12. crond.service enabled
  13. dbus-org.freedesktop.NetworkManager.service enabled
  14. dbus-org.freedesktop.nm-dispatcher.service enabled
  15. getty@.service enabled
  16. irqbalance.service enabled
  17. kdump.service enabled

1.9删除无关的用户和用户组

  1. [root@ZhangSiming ~]# cat /etc/passwd
  2. [root@ZhangSiming ~]# cat /etc/group
  3. [root@ZhangSiming ~]# which groupdel
  4. /usr/sbin/groupdel
  5. #删除用户组
  6. [root@ZhangSiming ~]# which userdel
  7. /usr/sbin/userdel
  8. #删除用户,-r删除用户同时删除家目录

1.10定时自动清理垃圾文件

  1. #普通大文件
  2. [root@ZhangSiming ~]# du -sh /\* 2>/dev/null | sort -rn
  3. #*前\为优化markdown文档显示,实际操作需要去除
  4. 231M /var
  5. 97M /boot
  6. 72K /root
  7. 31M /etc
  8. 12K /home
  9. 7.6M /run
  10. 4.2G /media
  11. 1.2G /usr
  12. 0 /tmp
  13. 0 /sys
  14. 0 /srv
  15. 0 /sbin
  16. 0 /proc
  17. 0 /opt
  18. 0 /mnt
  19. 0 /lib64
  20. 0 /lib
  21. 0 /dev
  22. 0 /bin
  23. #找出占地方大的目录,再去到对应目录进行大文件排查删除优化
  24. #定时任务清理的关键目录路径
  25. /var/spool/mail/ #邮件路径
  26. /var/spool/postfix/maildrop #小碎片路径
  27. #定时任务有屏幕输出的时候,会发送邮件到/var/spool/mail/对应用户文件内;如果服务器未开启postfix服务,则会在/var/spool/postfix/maildrop目录下生成一个一个的碎片文件,这些文件会占用inode

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

1.11.1内核参数含义

  1. [root@ZhangSiming ~]# ulimit -a
  2. core file size (blocks, -c) 0
  3. #core文件的最大值
  4. data seg size (kbytes, -d) unlimited
  5. #进程的数据段大小
  6. scheduling priority (-e) 0
  7. #调度优先级
  8. file size (blocks, -f) unlimited
  9. #文件大小
  10. pending signals (-i) 3802
  11. #最多有多少个待处理的信号
  12. max locked memory (kbytes, -l) 64
  13. #一个任务锁住的物理内存最大值
  14. max memory size (kbytes, -m)
  15. unlimited
  16. #一个任务的物理内存最大值
  17. open files (-n) 1024
  18. #一个进程最多可以打开多少文件
  19. pipe size (512 bytes, -p) 8
  20. #管道的最大空间为大
  21. POSIX message queues (bytes, -q) 819200
  22. #POSIX的消息队列的最大值为多大
  23. real-time priority (-r) 0
  24. #real-time调度优先级
  25. stack size (kbytes, -s) 8192
  26. #进程的栈的最大值为多大
  27. cpu time (seconds, -t) unlimited
  28. #进程使用cpu的时间
  29. max user processes (-u) 3802
  30. #当前用户同时打开的进程的最大个数为
  31. virtual memory (kbytes, -v) unlimited
  32. #虚拟内存空间
  33. file locks (-x) unlimited
  34. #可以锁住的最大文件个数
  35. ulimit + 上面显示每一条后面的字母可临时调整内核参数,即时生效

1.11.2永久修改内核参数优化方法

  1. [root@ZhangSiming ~]# sed -n '60,67p' /etc/security/limits.conf
  2. * soft core unlimited
  3. * hard core unlimited
  4. #开启并且不限制core文件大小,
  5. * soft fsize unlimited
  6. * hard fsize unlimited
  7. #不限制最大文件大小
  8. * soft nofile 65536
  9. * hard nofile 65536
  10. #单个进程的最大文件打开数为65536
  11. * soft nproc 65536
  12. * hard nproc 65536
  13. #最大进程数为65536
  14. [root@ZhangSiming ~]# exit
  15. logout
  16. #退出登录即可生效
  17. [root@ZhangSiming ~]# ulimit -a
  18. core file size (blocks, -c) unlimited
  19. data seg size (kbytes, -d) unlimited
  20. scheduling priority (-e) 0
  21. file size (blocks, -f) unlimited
  22. pending signals (-i) 3802
  23. max locked memory (kbytes, -l) 64
  24. max memory size (kbytes, -m) unlimited
  25. open files (-n) 65536
  26. pipe size (512 bytes, -p) 8
  27. POSIX message queues (bytes, -q) 819200
  28. real-time priority (-r) 0
  29. stack size (kbytes, -s) 8192
  30. cpu time (seconds, -t) unlimited
  31. max user processes (-u) 65536
  32. virtual memory (kbytes, -v) unlimited
  33. file locks (-x) unlimited

1.12文件系统优化选择

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

建议:

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

1.13代码程序优化

交给开发来做。

二、服务器安全优化

2.1selinux配置

  1. [root@ZhangSiming tomcat]# sestatus
  2. SELinux status: disabled
  3. [root@ZhangSiming tomcat]# vim /etc/selinux/config
  4. [root@ZhangSiming tomcat]# sed -n '7p' /etc/selinux/config
  5. SELINUX=disabled
  6. #SELINUX再生产环境中不是很好用,一般需要关闭

2.2iptables配置

  1. [root@ZhangSiming ~]# systemctl start firewalld
  2. [root@ZhangSiming ~]# iptables -F
  3. iptables -P INPUT ACCEPT
  4. iptables -F
  5. iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
  6. iptables -A INPUT -s 1.1.1.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
  7. iptables -A INPUT -s 2.2.2.2/32 -p tcp -m tcp --dport 22 -j ACCEPT
  8. iptables -A INPUT -i eth1 -j ACCEPT
  9. iptables -A INPUT -i lo -j ACCEPT
  10. iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  11. iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
  12. iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
  13. iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
  14. iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
  15. iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
  16. iptables -A INPUT -p tcp -m tcp --tcp-flags PSH,ACK PSH -j DROP
  17. iptables -A INPUT -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP
  18. iptables -P INPUT DROP
  19. iptables -P OUTPUT ACCEPT
  20. iptables -P FORWARD DROP
  21. #上述为firewalld配置范例,根据不同公司有不同修改

2.3线上服务器ssh登陆安全策略

  1. [root@ZhangSiming ~]# cat -n /etc/ssh/sshd_config.bak | sed -n '17p;38p;43p;47p;65p;79p;115p'
  2. cat: /etc/ssh/sshd_config.bak: No such file or directory
  3. [root@ZhangSiming ~]# cat -n /etc/ssh/sshd_config | sed -n '17p;38p;43p;47p;65p;79p;115p'
  4. 17 Port 22221
  5. #修改端口为22221,一个是不用默认端口安全,一个是1w以上的端口不会被nmap扫描出来
  6. 38 PermitRootLogin no
  7. #禁止root用户登录(小规模服务方便管理可以开启)
  8. 43 PubkeyAuthentication yes
  9. #允许使用ssh公钥连接
  10. 47 AuthorizedKeysFile .ssh/authorized_keys
  11. #公钥放置位置
  12. 65 PasswordAuthentication no
  13. #不允许密码认证连接方式
  14. 79 GSSAPIAuthentication no
  15. #关闭GSSAPI认证,加快ssh速率
  16. 115 UseDNS no
  17. #关闭DNS反向解析,加快ssh速率

把公钥放到需要连接的服务器,然后管理人员通过私钥即可xshell连接到对应服务器。
注意两点:
1.公钥权限600,不能太高,不安全。事实上太高也连不上;
2.如果想要登录普通用户,可以公钥发普通用户家目录对应位置;也可以root公钥连接上了之后su - 普通用户(sudo提前提好相应权限)

2.4管理用户用户sudo权限策略

  1. [root@ZhangSiming ~]# vim /etc/sudoers
  2. [root@ZhangSiming ~]# sed -n '93p' /etc/sudoers
  3. yunjisuan ALL=(ALL) NOPASSWD:ALL
  4. [root@ZhangSiming ~]# su - yunjisuan
  5. Last login: Sat Feb 23 13:58:57 CST 2019 on pts/0
  6. [yunjisuan@ZhangSiming ~]$ sudo -l
  7. Matching Defaults entries for yunjisuan on ZhangSiming:
  8. !visiblepw, always_set_home, match_group_by_gid, env_reset,
  9. env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
  10. env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
  11. env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
  12. env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
  13. env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
  14. secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
  15. User yunjisuan may run the following commands on ZhangSiming:
  16. (ALL) NOPASSWD: ALL
  17. #由于不能给所有人root账号,所以把给普通运维的账号sudo提权为root账号的权限,方便管理

2.5重要文件安全策略(/etc/sudoers、/etc/shadow、/etc/passwd、/etc/grub.conf)

  1. #i锁就是设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容
  2. [root@ZhangSiming /]# chattr +i /etc/sudoers
  3. [root@ZhangSiming /]# chattr +i /etc/shadow
  4. [root@ZhangSiming /]# chattr +i /etc/passwd
  5. [root@ZhangSiming /]# chattr +i /etc/grub.conf
  6. #CentOS6是grub.conf,CentOS7已经改为grub2.cfg并且已经系统保护好了
  7. [root@ZhangSiming /]# chattr +i /etc/grub2.cfg
  8. chattr: Operation not supported while reading flags on /etc/grub2.cfg

2.6系统磁盘及磁盘分区优化

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

三、生产环境遇到问题排查思路

3.1线上服务系统故障排查思路与关注点

1./usr/local/nginx/logs/error.log:服务应用类日志查询
2./var/log/messages:系统应用类日志查询
3./var/log/secure:登录日志查询
4.dmesg:系统日志查询
5./var/tmp,/tmp:容易被攻击的点查询
6.crontab -l,/etc/crontab:计划任务查询(经常攻击对象)

  1. [root@ZhangSiming ~]# tail -100 /var/log/secure | grep Accepted
  2. Feb 18 17:05:47 ZhangSiming sshd[1182]: Accepted password for root from 192.168.17.1 port 55746 ssh2
  3. Feb 18 17:34:53 ZhangSiming sshd[5796]: Accepted password for root from 192.168.17.1 port 56240 ssh2
  4. Feb 20 15:20:42 ZhangSiming sshd[1215]: Accepted password for root from 192.168.17.1 port 53580 ssh2
  5. Feb 23 14:20:09 ZhangSiming sshd[1184]: Accepted password for root from 192.168.17.1 port 58714 ssh2
  6. #/var/log/secure日志可以看到谁ssh了服务器,进行排查
  7. #另外,黑客入侵一般是入侵定时任务,所以定时任务可以进行排查,lsof追踪文件辅助排查

3.2 CPU

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

  1. [root@ZhangSiming ~]# cat /proc/cpuinfo | grep "cores" | uniq | wc -l
  2. 1
  3. #或者top,然后按1
  1. [root@ZhangSiming ~]# top -n1 | head -1
  2. top - 17:25:37 up 3:05, 3 users, load average: 0.01, 0.02, 0.05
  3. [root@ZhangSiming ~]# w
  4. 17:25:50 up 3:06, 3 users, load average: 0.01, 0.02, 0.05
  5. USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
  6. root tty1 14:20 3:05m 0.01s 0.01s -bash
  7. root pts/0 192.168.17.1 16:24 6.00s 0.11s 0.00s w
  8. root pts/1 192.168.17.1 16:17 46:14 0.01s 0.01s -bash
  9. [root@ZhangSiming ~]# uptime
  10. 17:25:56 up 3:06, 3 users, load average: 0.01, 0.02, 0.05
  11. [root@ZhangSiming ~]# cat /proc/loadavg
  12. 0.01 0.02 0.05 1/119 8460
  1. [root@ZhangSiming ~]# cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
  2. 1
  3. #cpu个数
  4. [root@ZhangSiming ~]# cat /proc/cpuinfo | grep "cores" | uniq | wc -l
  5. 1
  6. #cpu物理核心总个数
  7. [root@ZhangSiming ~]# cat /proc/cpuinfo | grep "processor" | uniq | wc -l
  8. 1
  9. #cpu逻辑核心个数
  10. #如果cpu总物理核心个数等于逻辑核心个数,那么cpu不支持超线程
  1. [root@ZhangSiming ~]# vmstat 3 5
  2. #每3秒刷新一次,输出5次
  3. procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
  4. r b swpd free buff cache si so bi bo in cs us sy id wa st
  5. 3 0 0 343264 2784 536164 0 0 14 35 59 69 0 0 100 0 0
  6. 0 0 0 343264 2784 536164 0 0 0 0 81 84 0 0 100 0 0
  7. 0 0 0 343264 2784 536164 0 0 0 0 78 81 0 0 100 0 0
  8. 0 0 0 343264 2784 536164 0 0 0 0 84 90 0 0 100 0 0
  9. 0 0 0 343264 2784 536164 0 0 0 0 80 82 0 0 100 0 0

参数详解

字符 部位 解释
r procs 表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU个数,说明CPU不足,需要增加CPU
b procs 表示在等待资源的进程数,比如正在等待I/O,或者内存交换等。长期大于0,那么说明CPU不足
swpd memory 表示切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者比较大,只要si,so的值长期为0,这种情况下一般不用担心,不会影响系统性能
free memory 表示当前空闲的物理内存数量(以k为单位)
buff memory 表示buffers cache的内存数量,一般对块设备的读写才需要缓冲
cache memory 表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached,如果cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好
si swap 表示由磁盘调入内存,也就是内存进入内存交换区的数量
so swap 表示由内存调入磁盘,也就是内存交换区进入内存的数量。(一般情况下,si,so的值都为0,如果si,so的值长期不为0,则表示系统内存不足。需要增加系统内存)
bi io 表示从块设备读入数据的总量(即读磁盘)(每秒kb)
bo io 表示写入到块设备的数据重量(即写磁盘)(每秒kb)
in system 表示在某一时间间隔中观测到的每秒设备中断数
cs system 表示每秒产生的上下文切换次数
us cpu 显示了用户进程消耗的CPU时间百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法
sy cpu 显示了内核进程消耗的CPU时间百分比。Sy的值比较高时,说明内核消耗的CPU资源很多
id cpu 显示了CPU处在空闲状态的时间百分比
wa cpu 显示了IO等待所占用的CPU时间百分比

综上所述:重点注意r(等待cpu的进程数)、us(进程占用的cpu百分比)、sy(内核占用的cpu百分比)、id(空闲cpu百分比)列的值

  1. [root@ZhangSiming ~]# iostat -c 3 5
  2. #3秒刷新一次,显示5次的数据
  3. Linux 3.10.0-862.el7.x86_64 (ZhangSiming) 02/23/2019 _x86_64_ (1 CPU)
  4. avg-cpu: %user %nice %system %iowait %steal %idle
  5. 0.14 0.00 0.21 0.02 0.00 99.63
  6. avg-cpu: %user %nice %system %iowait %steal %idle
  7. 0.00 0.00 0.00 0.00 0.00 100.00
  8. avg-cpu: %user %nice %system %iowait %steal %idle
  9. 0.00 0.00 0.00 0.00 0.00 100.00
  10. avg-cpu: %user %nice %system %iowait %steal %idle
  11. 0.00 0.00 0.33 0.00 0.00 99.67
  12. avg-cpu: %user %nice %system %iowait %steal %idle
  13. 0.00 0.00 0.00 0.00 0.00 100.00

参数详解

字符 解释
%user cpu处在用户模式下的时间百分比
%nice cpu处在nice值的用户下的时间百分比
%system cpu处在系统模式下的时间百分比
%iowait cpu处在io等待下的时间百分比(如果%iowait的值过高,表示硬盘存在I/O瓶颈)
%steal 管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比
%idle CPU空闲时间百分比

综上所述,应该重点关注iowait和idle列。

3.3 内存

消耗内存的业务:内存数据库(redis)、Tomcat、ELKstack、gitlab。

物理内存和虚拟交换内存的分配策略:

  • 如果物理内存大于16G,那么swap等于物理内存或者是物理内存两倍都是可以的;
  • 如果物理内存小于16G,那么swap和内存大小保持一致。
  1. [root@ZhangSiming ~]# free -m
  2. total used free shared buff/cache available
  3. Mem: 974 112 335 7 526 648
  4. Swap: 2047 0 2047
  5. #剩余内存335M
  6. #buffers+cache526M
  7. #系统可用的剩余内存648M

一般情况我们可以这样去判断内存:

  • 系统可用剩余内存总量/系统物理内存重量>70%时,表示系统内存资源非常充足,不影响系统性能;
  • 系统可用剩余内存总量/系统物理内存重量<20%时,表示系统内存资源紧缺,需要增加系统内存;
  • 20%<系统可用剩余内存总量/系统物理内存重量<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能
  1. [root@ZhangSiming ~]# sar -r 3
  2. #-r显示内存信息,每3s刷新一次
  3. Linux 3.10.0-862.el7.x86_64 (ZhangSiming) 02/23/2019 _x86_64_ (1 CPU)
  4. 07:00:40 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
  5. 07:00:43 PM 343240 654716 65.61 2784 401072 286760 9.26 305456 148532 0
  6. 07:00:46 PM 343224 654732 65.61 2784 401072 286760 9.26 305460 148532 0
  7. 07:00:49 PM 343224 654732 65.61 2784 401072 286760 9.26 305460 148532 0
字符 解释
kbmemfree 表示空闲物理内存大小
kbmemused 表示已经使用的物理内存大小
%memused 表示已经使用内存占总内存百分比
kbbuffers 表示buffers占用的大小
kbcached 表示cache占用的大小
kbcommit 表示应用程序当前使用的内存大小
%commit 表示应用程序的使用百分比

3.4 磁盘I/O

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

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

  1. [root@ZhangSiming ~]# iostat -d 2 3
  2. Linux 3.10.0-862.el7.x86_64 (ZhangSiming) 02/23/2019 _x86_64_ (1 CPU)
  3. Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
  4. sda 0.71 10.86 28.97 186175 496650
  5. scd0 0.03 0.64 0.00 11000 0
  6. dm-0 0.69 10.25 28.84 175669 494451
  7. dm-1 0.01 0.13 0.00 2228 0
  8. Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
  9. sda 0.00 0.00 0.00 0 0
  10. scd0 0.00 0.00 0.00 0 0
  11. dm-0 0.00 0.00 0.00 0 0
  12. dm-1 0.00 0.00 0.00 0 0
  13. Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
  14. sda 0.00 0.00 0.00 0 0
  15. scd0 0.00 0.00 0.00 0 0
  16. dm-0 0.00 0.00 0.00 0 0
  17. dm-1 0.00 0.00 0.00 0 0
字符 解释
Device 设备名称
tps 表示每秒到物理磁盘的传送数,也就是每秒的I/O流量。一个传送就是一个I/O请求,多个逻辑请求可以被合并为一个物理I/O请求
kB_read/s 每秒读取的数据块
kB_wrtn/s 每秒写入的数据块
kB_read 读取的所有数据块总数
kB_wrtn 写入的所有数据块总数

3.5 网络带宽

消耗带宽的业务:分布式文件系统,视频业务平台
• 网卡/交换机的选择:起码千兆网卡/千兆普通交换机/万兆核心交换机
• 操作系统双网卡绑定:通过绑定提高网卡带宽吞吐量

  1. [root@ZhangSiming ~]# ping www.baidu.com
  2. PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
  3. 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=1 ttl=128 time=23.5 ms
  4. 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=2 ttl=128 time=30.7 ms
  5. 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=3 ttl=128 time=86.3 ms
  6. 64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=4 ttl=128 time=27.3 ms
  7. ^C
  8. --- www.a.shifen.com ping statistics ---
  9. 4 packets transmitted, 4 received, 0% packet loss, time 3006ms
  10. rtt min/avg/max/mdev = 23.555/42.012/86.392/25.749 ms
  11. #time值表示两台主机间的延迟情况
  12. #packet loss表示网络丢包率,值越小,网络质量越高
  1. [root@ZhangSiming ~]# netstat -rn
  2. #查看路由状况
  3. Kernel IP routing table
  4. Destination Gateway Genmask Flags MSS Window irtt Iface
  5. 0.0.0.0 192.168.17.2 0.0.0.0 UG 0 0 0 ens32
  6. 192.168.17.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32
  7. [root@ZhangSiming ~]# netstat -i
  8. #查看网卡接口状况
  9. Kernel Interface table
  10. Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
  11. ens32 1500 63500 0 0 0 16182 0 0 0 BMRU
  12. lo 65536 0 0 0 0 0 0 0 0 LRU
  13. #route -n也可以看路由状况
  14. [root@ZhangSiming ~]# route -n
  15. Kernel IP routing table
  16. Destination Gateway Genmask Flags Metric Ref Use Iface
  17. 0.0.0.0 192.168.17.2 0.0.0.0 UG 100 0 0 ens32
  18. 192.168.17.0 0.0.0.0 255.255.255.0 U 100 0 0 ens32
  1. [root@ZhangSiming ~]# traceroute www.baidu.com
  2. traceroute to www.baidu.com (61.135.169.125), 30 hops max, 60 byte packets
  3. 1 gateway (192.168.17.2) 0.134 ms 0.146 ms 0.084 ms
  4. 2 * * *
  5. 3 * * *
  6. 4 * * *
  7. 5 * * *
  8. #traceroute虽然可以追踪网络路由,但是中间路由都被***屏蔽了,难以得到直观的显示
  9. [root@ZhangSiming ~]# mtr -n -c 2 --report www.baidu.com
  10. #-n:不用主机解析
  11. #-c:发送数据包数量
  12. #--report:结果显示
  13. Start: Sat Feb 23 19:21:09 2019
  14. HOST: ZhangSiming Loss% Snt Last Avg Best Wrst StDev
  15. 1.|-- 192.168.17.2 0.0% 2 0.2 0.2 0.2 0.2 0.0
  16. 2.|-- 192.168.43.1 0.0% 2 3.1 7.7 3.1 12.3 6.5
  17. 3.|-- ??? 100.0 2 0.0 0.0 0.0 0.0 0.0
  18. 4.|-- ??? 100.0 2 0.0 0.0 0.0 0.0 0.0
  19. 5.|-- 114.247.23.161 0.0% 2 21.3 24.3 21.3 27.2 4.1
  20. 6.|-- 114.247.9.129 0.0% 2 19.0 25.1 19.0 31.2 8.6
  21. 7.|-- 61.51.169.205 0.0% 2 30.3 26.3 22.2 30.3 5.7
  22. 8.|-- 61.148.143.106 0.0% 2 22.9 22.6 22.4 22.9 0.0
  23. 9.|-- 123.125.248.110 0.0% 2 20.6 21.8 20.6 23.0 1.4
  24. 10.|-- ??? 100.0 2 0.0 0.0 0.0 0.0 0.0
  25. 11.|-- ??? 100.0 2 0.0 0.0 0.0 0.0 0.0
  26. 12.|-- 61.135.169.121 0.0% 2 20.5 21.1 20.5 21.7 0.0
  27. #mtr这个命令虽然也有看不出来的,但是基本上得到的信息比traceroute多的多

3.6 Linux操作系统性能评分标准

影响因素 评判标准 评判标准 评判标准
糟糕
cpu user%+sys%<70 user%+sys%=85 user%+sys%>=90
内存 si=0;so=0 si、so有但是不多 si、so非常多
磁盘 iowait%<20 iowait%=35 iowait%=50
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注