zoukankan      html  css  js  c++  java
  • Linux系统级优化示例

    一、常用操作

    1,查看系统版本号

    [root@localhost ~]# cat /etc/redhat-release
    CentOS Linux release 7.7.1908 (Core)

    2.查看主机名

    [root@localhost ~]# hostname
    localhost.localdomain

    3.显示系统名、节点名称、操作系统的发行版号、操作系统版本、运行系统的机器 ID 号

    [root@localhost ~]# uname -a
    Linux localhost.localdomain 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

    4.查看系统位数

    [root@localhost ~]# getconf LONG_BIT
    64

    5.查看系统版本

    [root@localhost ~]# cat /proc/version
    Linux version 3.10.0-1062.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Wed Aug 7 18:08:02 UTC 2019

    6.查看系统内存使用情况

    [root@localhost ~]# free -m
    total used free shared buff/cache available
    Mem: 972 197 227 7 547 622
    Swap: 2047 0 2047

    7.查看CPU信息

    [root@localhost ~]# cat /proc/cpuinfo
    processor : 0
    vendor_id : GenuineIntel
    cpu family : 6
    model : 158
    model name : Intel(R) Core(TM) i3-8100 CPU @ 3.60GHz
    stepping : 11
    microcode : 0x8e
    cpu MHz : 3600.010
    cache size : 6144 KB
    physical id : 0
    siblings : 1
    core id : 0
    cpu cores : 1
    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 dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch epb tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt xsavec xgetbv1 dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp
    bogomips : 7200.02
    clflush size : 64
    cache_alignment : 64
    address sizes : 42 bits physical, 48 bits virtual
    power management:

    8.查看内存信息

    [root@localhost ~]# cat /proc/meminfo
    MemTotal: 995748 kB
    MemFree: 233324 kB
    MemAvailable: 637732 kB
    Buffers: 2780 kB
    Cached: 515976 kB
    SwapCached: 0 kB
    Active: 305972 kB
    Inactive: 281332 kB
    Active(anon): 68992 kB
    Inactive(anon): 7316 kB
    Active(file): 236980 kB
    Inactive(file): 274016 kB
    Unevictable: 0 kB
    Mlocked: 0 kB
    SwapTotal: 2097148 kB
    SwapFree: 2097148 kB
    Dirty: 0 kB
    Writeback: 0 kB
    AnonPages: 68580 kB
    Mapped: 25724 kB
    Shmem: 7760 kB
    Slab: 89236 kB
    SReclaimable: 42220 kB
    SUnreclaim: 47016 kB
    KernelStack: 3856 kB
    PageTables: 4484 kB
    NFS_Unstable: 0 kB
    Bounce: 0 kB
    WritebackTmp: 0 kB
    CommitLimit: 2595020 kB
    Committed_AS: 295504 kB
    VmallocTotal: 34359738367 kB
    VmallocUsed: 192856 kB
    VmallocChunk: 34359310332 kB
    HardwareCorrupted: 0 kB
    AnonHugePages: 8192 kB
    CmaTotal: 0 kB
    CmaFree: 0 kB
    HugePages_Total: 0
    HugePages_Free: 0
    HugePages_Rsvd: 0
    HugePages_Surp: 0
    Hugepagesize: 2048 kB
    DirectMap4k: 75648 kB
    DirectMap2M: 972800 kB
    DirectMap1G: 0 kB

    9.查看Linux系统负载信息 

    [root@localhost ~]# uptime
    17:30:21 up 1:39, 2 users, load average: 0.00, 0.01, 0.05
    [root@localhost ~]# uptime -V  #显示 uptime 命令版本信息
    uptime from procps-ng 3.3.10

    17:30:21             //系统当前时间
    up 1:39   //主机已运行时间,时间越大,说明你的机器越稳定。
    2 user               //用户连接数,是总连接数而不是用户数
    load average: 0.00, 0.01, 0.05         // 系统平均负载,统计最近1,5,15分钟的系统平均负载

    如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。

    双CPU服务器一般标准以5-10 低于5系统不繁忙,5-10相对繁忙

    10.查看系统时间,硬件时间
    date //查看系统时间

    [root@localhost ~]# date
    2020年 04月 14日 星期二 17:34:41 CST

    hwclock //查看硬件时间

    [root@localhost ~]# hwclock
    2020年04月14日 星期二 17时35分21秒 -0.522054 秒

    timedatectl # 查看系统时间方面的各种状态

    [root@localhost ~]# timedatectl
                Local time: 二 2020-04-14 17:36:21 CST
          Universal time: 二 2020-04-14 09:36:21 UTC
                  RTC time: 二 2020-04-14 09:36:22
                Time zone: Asia/Shanghai (CST, +0800)
            NTP enabled: yes
    NTP synchronized: yes
         RTC in local TZ: no
                DST active: n/a


    timedatectl list-timezones                   # 列出所有时区


    timedatectl set-local-rtc 1                   # 将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间


    timedatectl set-timezone Asia/Shanghai            # 设置系统时区为上海
    其实不考虑各个发行版的差异化, 从更底层出发的话, 修改时间时区比想象中要简单

    设置服务器时间
    安装 ntpdate 工具
    yum -y install utp ntpdate

    设置系统时间与网络时间同步
    ntpdate cn.pool.ntp.org

    将系统时间写入硬件时间
    hwclock --systohc
    服务器时区设置
    timedatectl set-timezone Asia/Shanghai            # 设置系统时区为上海


    11.查看防火墙已开放端口命令:
    firewall-cmd —list-ports

    查看端口是否开放命令:
    第一个方法就是使用lsof -i:端口号命令行,例如lsof -i:80。如果没有任何信息输出,则表示该端口号(此处是80)没有开放。
    第二个方法就是使用netstat -aptn命令行,查看所有开启的端口号。
    第四种方法就是使用netstat -nupl是查看系统中所有使用udp协议的端口号。
    第五种方法就是使用netstat -ntpl是查看系统中使用tcp协议的端口号信息。

    开放centos7防火墙的端口:

    添加开放端口号

    firewall-cmd —permanent —zone=public —add-port=8080/tcp

    重启firewall

    firewall-cmd —reload

    检查是否生效

    firewall-cmd —zone=public —query-port=8080/tcp

    停止firewall

    systemctl stop firewalld.service

    禁止firewall开机启动

    systemctl disable firewalld.service

    命令含义:
    –zone #作用域
    –add-port=80/tcp #添加端口,格式为:端口/通讯协议
    –permanent #永久生效,没有此参数重启后失效( —permanent放在前面与后面都行)

    Ubuntu开放端口命令:
    1.防火墙的打开
    sudo ufw enable
    2.防火墙的重启
    sudo ufw reload
    3.打开想要的端口(以8080为例)
    ufw allow 8080

    二、修改IP地址、网关、主机名、DNS等

    1.修改IP、网关、DNS和网卡自动启动

              以root权限登陆centos7并编辑vi /etc/sysconfig/network-scripts/ifcfg-ens33这个文件,如下:

    TYPE=Ethernet

    BOOTPROTO=static #设置静态Ip

    DEFROUTE=yes

    IPV4_FAILURE_FATAL=no

    IPV6INIT=yes

    IPV6_AUTOCONF=yes

    IPV6_DEFROUTE=yes

    IPV6_FAILURE_FATAL=no

    NAME=eno16777736

    UUID=4f40dedc-031b-4b72-ad4d-ef4721947439

    DEVICE=eno16777736

    ONBOOT=yes #这里如果为no的话就改为yes,表示网卡设备自动启动

    PEERDNS=yes

    PEERROUTES=yes

    IPV6_PEERDNS=yes

    IPV6_PEERROUTES=yes

    IPV6_PRIVACY=no

    GATEWAY=192.168.10.2 #这里的网关地址就是第二步获取到的那个网关地址

    IPADDR=192.168.10.150 #配置ip,在第二步已经设置ip处于192.168.10.xxx这个范围,我就随便设为150了,只要不和网关相同均可

    NETMASK=255.255.255.0 #子网掩码

    DNS1=202.96.128.86 #dns服务器1,填写你所在的网络可用的dns服务器地址即可

    DNS2=223.5.5.5 #dns服器2

     

      :wq  保存并退出

    重启网卡服务,执行   /etc/init.d/network restart

    2.修改主机名

    [root@localhost~]# vi /etc/hostname

    mrxiong.test.com

    ~

    ~

    ~

    ~

    :wq

    [root@localhost ~]# reboot

     

    3.修改全局DNS

    [root@localhost~]# vi /etc/resolv.conf

    #Generated by NetworkManager

    search test.com

    nameserver 8.8.8.8

    ~

    ~

    ~

    :wq

    [root@localhost ~]# reboot

     

    三、关闭Selinux,清空iptables

    1.关闭selinux

      

    ★修改配置文件需要重启机器:

    修改/etc/selinux/config 文件

    [root@localhost~]#cp /etc/selinux/config /etc/selinux/config.bak #备份需要修改的文件

    [root@localhost~]#vim /etc/selinux/config

        将SELINUX=enforcing改为SELINUX=disabled

       :wq #保存并退出

    [root@localhost~]#reboot

     

     

    或者:

    [root@localhost~]#cp /etc/selinux/config /etc/selinux/config.bak #备份需要修改的文件

    [root@localhost~]#sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

    [root@localhost~]#reboot

     

     #查看更改后的结果

    grep SELINUX=disabled /etc/selinux/config

     

        

    ★临时关闭(不用重启机器)

    setenforce 0              #设置SELinux 成为permissive模式

    #setenforce 1 设置SELinux 成为enforcing模式

    ★ getenforce      #查看selinux当前状态

    2.清空iptables和禁止firewalld运行

       

    iptables –F    #清理防火墙规则

    iptables –L    #查看防火墙规则

    禁用/停止自带的firewalld服务

    #停止firewalld服务

    systemctl stop firewalld.service

     

    #禁用firewalld服务

    systemctl disable firewalld.service

     

    四、配置yum更新

    centos7更新163源方法:

    访问地址为:http://mirrors.163.com/.help/centos.html

    操作如下:

    #安装wget工具

    [root@localhost ~]# yum install wget -y

    #备份现有的源

    [root@localhost~]#cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

    #下载163源

    [root@localhost~]#cd /etc/yum.repos.d/

    [root@localhost~]#wget

    [root@localhost~]#mv -f CentOS7-Base-163.repo CentOS-Base.repo

    #清空及刷新YUM的缓存状态:

    [root@localhost~]#yum clean all

    [root@localhost~]#yum makecache

     

    更新CentOS7和安装几个必要的软件

    [root@localhost~]#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* #导入签名KEY到RPM

    [root@localhost~]#yum upgrade -y #更新系统内核到最新

    [root@localhost~]#yum --exclude=kernel* update #更新系统软件而不更新内核

    [root@localhost~]#yum install lrzsz ntpdate sysstat -y #安装几个必要的软件了

     

    五、定时自动更新服务器时间

    首先我们立即手动更新所有预先安装的软件

    yum -y update

    yum -y install cronie yum-cron

     

    设置crond.service服务自启动

    systemctl enable crond.service

     

    ★ 使用ntpdate命令进行更新:

    首先使用ntpdate测试时间服务器可否使用     

    ntpdate time.windows.com

     

    ★设置linux自动每5分钟同步一次时间服务器进行时间同步

    [root@localhost~]#echo '###time sync by mrxiong at 2018-03-09###' >>/var/spool/cron/root

    [root@localhost~]#echo '*/5****/usr/sbin/ntpdate time.windows.com>/dev/null 2>&1'>>/var/spool/cron/root

     

    扩展:在机器数量少时,以上定时任务同步时间就可以了。如果机器数量大时,可以在网内另外部署一台时间同步服务器NTP Server

    查看定时任务,查看是否己设置成功

    [root@localhost~]#crontab -l

     

    六、定时自动清理/var/spool/clientmquene/目录垃圾文件,防止inodes节点被占满

    ★ 手动清理方法:

    find /var/spool/clientmqueue/ -type f |xargs rm -f

     

    ★ 使用shell脚本+定时任务自动清理方法:

    [root@localhost ~]# mkdir /server/scripts -p

    [root@localhost ~]# vi /server/scripts/spool_clean.sh

    #!/bin/sh

    find /var/spool/clientmqueue/ -type f |xargs rm -f

     

    然后将其加入到crontab定时任务中

    echo '*/30 * * * * /bin/sh /server/scripts/spool_clean.sh >/dev/null 2>&1' >>/var/spool/cron/root

     

    #检查一下定时任务

    crontab -l

     

    注意:

    centos5.8,默认没有clientmqueue

    centos6.4和centos7的要先安装sendmail才能有/var/spool/clientmqueue/ 这个目录

    [root@localhost ~]# yum install sendmail -y

    七、更改默认的SSH服务端口及禁止root用户远程连接

    [root@localhost ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

    [root@localhost ~]# vim /etc/ssh/sshd_config

    Port 2000 #ssh连接默认的端口是22,改为2000

    PermitRootLogin no #root用户黑客都知道,禁止它远程登录

    PermitEmptyPasswords no #禁止空密码登录

    UseDNS no #不使用DNS

    [root@localhost ~]#systemctl restart sshd.service #重启sshd服务

    [root@localhost ~]# netstat -lnt #查看一下端口

    [root@localhost ~]# yum install lsof -y

    [root@localhost ~]# lsof -i:2000 #己知端口查服务

    [root@localhost ~]# netstat -an|grep -i est #查看连接状态

     

    八、锁定关键系统文件chattr +i /etc/passwd

    chattr +i /etc/inittab

    chattr +i /etc/group

    chattr +i /etc/shadow

    chattr -i /etc/passwd 对/etc/passwd解锁

    可以防止黑客对系统的修改和攻击

    九、调整文件描述符大小

    ★   #查看文件描述符大小

    [root@localhost ~]# ulimit -n 1024

     

    配置文件描述符为65535

    [root@localhost ~]# echo '* - nofile 65535'>>/etc/security/limits.conf

     

    配置完成后,重新登录即可查看

    ★ 也可以把ulimit -SHn 65535命令加入到/etc/rc.local,然后每次重启生效

    [root@dingjian ~]cat >>/etc/rc.local<<EOF

    #open files

    ulimit -HSn 65535

    #stack size

    ulimit -s 65535

    EOF

     

    十、更改字符集、支持中文

    centos7的与centos6有少许不同:

    1.安装中文包:

    [root@localhost ~]#yum groupinstall "fonts"

     

    查看系统是否有安装中文语言包 (列出所有可用的公共语言环境的名称,包含有zh_CN)

    [root@localhost ~]#locale -a |grep "zh_CN"

    zh_CN

    zh_CN.gb1803

    0zh_CN.gb2312

    zh_CN.gbk

    zh_CN.utf8

     

    若发现以上几项,说明系统已安装中文语言包,无需再安装,

    [root@localhost ~]# cat /etc/locale.conf

    LANG="en_US.UTF-8"

    [root@localhost ~]# echo $LANG

    en_US.UTF-8

     

    十一、清空/etc/issue.去除系统及内核版本登录前的屏幕显示

    >/etc/issue           #清空登陆显示的信息

    echo "welcome!">/etc/issue    或    vi /etc/issue          #修改系统登陆时显示的信息

    十二、内核优化

    本优化适合apache,nginx,squid多种等web应用,特殊的业务也可能需要略作调整。

    ★centos7内核优化:

    [root@localhost ~]# vi /etc/sysctl.conf #把以下的参数加到最后面

    #CTCDN系统优化参数

    #关闭ipv6

    net.ipv6.conf.all.disable_ipv6 = 1

    net.ipv6.conf.default.disable_ipv6 = 1

    # 避免放大攻击

    net.ipv4.icmp_echo_ignore_broadcasts = 1

    # 开启恶意icmp错误消息保护

    net.ipv4.icmp_ignore_bogus_error_responses = 1

    #关闭路由转发

    net.ipv4.ip_forward = 0

    net.ipv4.conf.all.send_redirects = 0

    net.ipv4.conf.default.send_redirects = 0

    #开启反向路径过滤

    net.ipv4.conf.all.rp_filter = 1

    net.ipv4.conf.default.rp_filter = 1

    #处理无源路由的包

    net.ipv4.conf.all.accept_source_route = 0

    net.ipv4.conf.default.accept_source_route = 0

    #关闭sysrq功能

    kernel.sysrq = 0

    #core文件名中添加pid作为扩展名

    kernel.core_uses_pid = 1

    # 开启SYN洪水攻击保护

    net.ipv4.tcp_syncookies = 1

    #修改消息队列长度

    kernel.msgmnb = 65536

    kernel.msgmax = 65536

    #设置最大内存共享段大小bytes

    kernel.shmmax = 68719476736

    kernel.shmall = 4294967296

    #timewait的数量,默认180000

    net.ipv4.tcp_max_tw_buckets = 6000

    net.ipv4.tcp_sack = 1

    net.ipv4.tcp_window_scaling = 1

    net.ipv4.tcp_rmem = 4096 87380 4194304

    net.ipv4.tcp_wmem = 4096 16384 4194304

    net.core.wmem_default = 8388608

    net.core.rmem_default = 8388608

    net.core.rmem_max = 16777216

    net.core.wmem_max = 16777216

    #每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目

    net.core.netdev_max_backlog = 262144

    #限制仅仅是为了防止简单的DoS 攻击

    net.ipv4.tcp_max_orphans = 3276800

    #未收到客户端确认信息的连接请求的最大值

    net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_timestamps = 0

    #内核放弃建立连接之前发送SYNACK 包的数量

    net.ipv4.tcp_synack_retries = 1

    #内核放弃建立连接之前发送SYN 包的数量

    net.ipv4.tcp_syn_retries = 1

    #启用timewait 快速回收

    net.ipv4.tcp_tw_recycle = 1

    #开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接

    net.ipv4.tcp_tw_reuse = 1

    net.ipv4.tcp_mem = 94500000 915000000 927000000

    net.ipv4.tcp_fin_timeout = 1

    #当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时

    net.ipv4.tcp_keepalive_time = 30

    #允许系统打开的端口范围

    net.ipv4.ip_local_port_range = 1024 65000

    #修改防火墙表大小,默认65536

    #net.netfilter.nf_conntrack_max=655350

    #net.netfilter.nf_conntrack_tcp_timeout_established=1200

    # 确保无人能修改路由表

    net.ipv4.conf.all.accept_redirects = 0

    net.ipv4.conf.default.accept_redirects = 0

    net.ipv4.conf.all.secure_redirects = 0

    net.ipv4.conf.d

     

    重新加载内核参数

    [root@localhost ~]#sysctl -p

  • 相关阅读:
    第48天-shell(2013.09.25)
    嵌入式Linux gdb core dump快速定位程序crash问题
    va_arg va_start va_end 获取函数参数内容
    Ubunut apache2 服务器 搭建 文件下载
    CRC16 串口校验
    Linux 处理中文字符串 :/区分中文和英文的方法
    LINUX 工具移植:scp 快速拷贝文件到开发板
    打印内存变量定位 程序出现内存方面的问题
    Linux C 调用 ping命令 检测网络状态
    Ubuntu Gitlab 备份代码服务器
  • 原文地址:https://www.cnblogs.com/2567xl/p/12010643.html
Copyright © 2011-2022 走看看