• 记一次Linux服务器top命令us负载很高,但是找不到高负载进程,引起服务器频繁重启的错误,内核升级


    最近发现一台测试服务器频繁重启,各种排错找不到原因,
    服务器:CentOS6
    内核:2.6.32-431.1.2.0.1.el6.x86_64
    这里要注意了,引起服务器频繁重启的原因很有可能是内核引起的
    随后查找了目前为止有缺陷的内核版本,如下:

    Centos 6:

    2.6.32-220.el6.x86_64
    2.6.32-431.el6.x86_64
    2.6.32-71.el6.x86_64

    Centos 7:

    3.10.0-229.el7.x86_64
    这里说一下,内核升级一定要编译安装的方式升级,请勿使用yum。因为服务器在机房,做内核升级用yum,导致开机起不来的情况时有发生。

    问题:

    随后用top命令查看服务器负载不高,但是发现用户态占用cpu使用率非常高,16核cpu,经常12个都是100%,但是查看进程并没有cpu占用太高的进程,从右侧上方查看cpu负载也不是很高
    如图:
    这里写图片描述
    如果是内核态占用率高的话也就好怀疑是内核的问题了,但是内核态看起来一切正常。通过ps aux命令查看所有进程进行逐一排查,并停掉所有在使用的进程,并没有发现异常进程。用户态占用还是奇高。加上此内核在缺陷内核列表内,所以接下来进行内核升级。

    升级内核:

    官网现在最新稳定版kernel,截至2018.5.28最新稳定版本是4.16.11,因为服务器在国外,所以下载很慢,这里推荐多线程下载器 mwget 命令行多线程下载器,安装也很简单,因为服务器很不稳定,所以我加上了nohup进行后台下载,这里的mwget是指定几个线程同时下载。当然用wget下载也是可以的。mwget只是推荐。

    • 下载:
    nohup mwget -c0 -n 32 https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.16.11.tar.xz &

    然后解压内核:

    tar xJf linux-4.16.11.tar.xz -C /usr/src/kernel

    • 环境准备:

      yum yum groupinstall "Development Tools" -y

      yum -y install openldap openldap-clients openldap-developenldap-servers gcc gcc-c++ glibc automake autoconf libtool makelibmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpnglibpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-develglibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-develcurl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-developenssl openssl-devel hmaccalc  binutils-devel elfutils-libelf-devel bc

      • 编译安装内核:
        cd /usr/src/kernel/linux-4.16.11/
        因为已经有老内核,所以用老内核的配置文件,省事。复制老内核配置文件到当前目录下并改名为.config
        1. cp /boot/config-2.6.32-431.el6.x86_64 ./.config
        接下来本应该运行这个命令: make mrproper && make clean进行编译但是没安装的文件进行清空,因为我是刚解压过来的,所以就免了。直接下一步。
        2. make menuconfig
        用这个命令可以对内核模块进行定制,我只改个名其它没有修改。
        这里记录一下,这个命令是基于.config进行内核模块的修改。建议没什么特殊需求,直接用改个名字退出就行,退出的时候问你是否保存,当然要保存,也可以先save进行保存。
        3. make -j 16
        这里说一下,-j 就是指定几个cpu进行编译。我希望快点,所以用了所有cpu,当然 也可以用make all


      也不是绝对的,我升级了两个机器,虚拟机正常,但是实体机会报错。
      * Error during update of the configuration.
      make[2]: * [silentoldconfig] 错误 1
      make[1]: * [silentoldconfig] 错误 2
      SYSTBL arch/x86/include/generated/asm/syscalls_32.h
      SYSHDR arch/x86/include/generated/uapi/asm/unistd_32.h
      SYSHDR arch/x86/include/generated/uapi/asm/unistd_64.h
      SYSHDR arch/x86/include/generated/uapi/asm/unistd_x32.h
      make: * 没有规则可以创建“include/config/kernel.release”需要的目标“include/config/auto.conf”。 停止。
      make: * 正在等待未完成的任务….


      思路就是复制老内核的auto.conf给新内核使用。
      cp /usr/src/kernels/2.6.32-431.1.2.0.1.el6.x86_64/include/config/auto.conf /usr/src/kernel/linux-4.16.11/incloud/config/
      如果没有config目录,就创建这个目录。然后再进行编译就不报错了。

    4. make modules_install
    编译安装 .config给定的各种模块
    5. make install
    进行安装。然后等待安装完毕,如果安装成功,打开/etc/grub.conf。会显示有两个版本的内核,默认启动老内核,更改default默认值,从上往下依次从0开始,保存/etc/grub.conf并重启。

    [root@localhost ~]# uname -r
    4.16.11dongsi

    6.然后就是重启服务器
    大功告成,负载也下来了。服务器平稳运行:
    这里写图片描述
    下面这个问题好像全网都没解决办法,不少人也遇到了,再贴一下,为了帮助更多人
    * Error during update of the configuration.
    make[2]: * [silentoldconfig] 错误 1
    make[1]: * [silentoldconfig] 错误 2
    SYSTBL arch/x86/include/generated/asm/syscalls_32.h
    SYSHDR arch/x86/include/generated/uapi/asm/unistd_32.h
    SYSHDR arch/x86/include/generated/uapi/asm/unistd_64.h
    SYSHDR arch/x86/include/generated/uapi/asm/unistd_x32.h
    make: * 没有规则可以创建“include/config/kernel.release”需要的目标“include/config/auto.conf”。 停止。
    make: * 正在等待未完成的任务….

    思路就是复制老内核的auto.conf给新内核使用。
    cp /usr/src/kernels/2.6.32-431.1.2.0.1.el6.x86_64/include/config/auto.conf /usr/src/kernel/linux-4.16.11/incloud/config/
    如果没有config目录,就创建这个目录。然后再进行编译就不报错了。

  • 相关阅读:
    HDU 5583 Kingdom of Black and White 水题
    HDU 5578 Friendship of Frog 水题
    Codeforces Round #190 (Div. 2) E. Ciel the Commander 点分治
    hdu 5594 ZYB's Prime 最大流
    hdu 5593 ZYB's Tree 树形dp
    hdu 5592 ZYB's Game 树状数组
    hdu 5591 ZYB's Game 博弈论
    HDU 5590 ZYB's Biology 水题
    cdoj 1256 昊昊爱运动 预处理/前缀和
    cdoj 1255 斓少摘苹果 贪心
  • 原文地址:https://www.cnblogs.com/lixuebin/p/10808468.html
Copyright © 2020-2023  润新知