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

  • 相关阅读:
    Windows SDK编程(Delphi版) 之 应用基础,楔子
    一个小问题引发的论证思考
    Delphi 组件开发教程指南(7)继续模拟动画显示控件
    用PyInstaller将python转成可执行文件exe笔记
    使用 .Net Memory Profiler 诊断 .NET 应用内存泄漏(方法与实践)
    Microsof Office SharePoint 2007 工作流开发环境搭建
    How to monitor Web server performance by using counter logs in System Monitor in IIS
    LINQ之Order By
    window 性能监视器
    内存泄露检测工具
  • 原文地址:https://www.cnblogs.com/2567xl/p/12010643.html
Copyright © 2011-2022 走看看