CentOS6.6上进程挂起的诡异问题和处理

由于新的服务器不再支持CentOS5.4系统了,我们在新装机器上安装CentOS6.6。随着CentOS6.6机器的增多,我们逐渐注意到一个诡异问题:运行在这些机器上的某些进程,容易莫名其妙地挂起(举个例子,mysql可以连上,但命令收不到响应),也没有输出任何的错误日志,dmesg也看不到异常消息。比较容易卡住的服务有rabbitmq、mysql还有我们自己的几个Java服务程序。

一开始我们是通过重启服务来解决。然后我发现一个现象:就是如果使用gdb、strace、jstack -F命令来查看这些进程的运行情况,在查看之后服务会恢复正常。这样做比重启服务代价小,但随着机器增多,越来越不堪其扰。开始各种搜索,终于找到一个比较可能的问题原因:这是一个内核的Bug引起的。

参考链接:《Linux内核漏洞将影响Haswell架构服务器》  。摘要一下:在infoq网站上,Gil Tene最近报告一个十分重要,但并不为人知Linux内核补丁,特别对采用Haswell架构的Linux系统用户和管理员应该特别关注。报告提醒Red Hat发行版的用户(包括CentOS 6.6及Scientific Linux 6.6),即便是运行在虚拟机中的Linux,虚拟机在流行的Azure、Amazon云平台上,也可能运行在Haswell服务器上,立即更新这个补丁。这个内核漏洞的影响非常简单:在看似不可能情况下,用户进程会死锁并被挂起。即使被正确地唤醒,futex调用等待都有可能被阻止执行。如同Java里的Thread.park可能会一直阻塞等,若幸运可能会在dmesg日志中发现soft lockup消息;如果没那么幸运,将不得不花几个月的人工成本去排查问题,可能一无所获。

可以FQ的同学可以看下:https://groups.google.com/forum/#!topic/mechanical-sympathy/QbmpZxp6C64 。

这个问题的处理方法是升级内核:yum install kernel -y

后记:升级完内核后,此现象不再出现,说明升级内核是有效果的。升级完的内核版本用uname -a查看是:Linux XXX 2.6.32-642.1.1.el6.x86_64 #1 SMP Tue May 31 21:57:07 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 。 升级之前是:Linux XXX  2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

时间: 2025-01-16 18:34:42

CentOS6.6上进程挂起的诡异问题和处理的相关文章

CentOS6.7上编译安装Apache2.2和Apache2.4

目录 一.Apache的工作模式 1.简介 2.比较 二.CentOS6.x上安装Apache2.2 (一)rpm安装apache (二)编译安装apache 1.安装编译环境 2.下载解压依赖包 3.安装apache 4.测试apache 5.查看apache相关信息 6.配置程序运行环境 7.导出库文件 8.导出头文件 9.导出手册 10.将Apache添加到启动服务 (三) 编译安装Apache2.4 1.编译安装apr 2.编译安装apr-util 3.安装需要的依赖包 4.编译安装Ap

CentOS6.2 上搭建smokeping

一    介绍smokeping是rrdtool的作者Tobi Oetiker的作品,所以它在图形显示方面有很大优势,也是一个很有特点的opensource工具:多种探测方式,包括fping.echoping.dig.curl等. 二    安装环境 虚拟机版本:    VMware Workstation 8.0.4 build-744019 OS 版本 :    CentOS 6.2 i686 IP 地址:192.168.1.115 三    安装步骤 a.查看系统版本及内核 #######

从DNS基础到在CentOS6.5上“玩着”搭建一个支持正向、反向解析的“

1.什么是DNS? (Domain Name System)域名系统. DNS其实实现的功能很简单也很有效,它能够让用户可以不用记得那些经常要访问服务器的ip地址,直接要你输入类似拼音格式的就可以访问到那些数字串的ip地址.假设以61.120.155.14(举个例子),我们总是用这些数字进行网页服务器的访问岂不是很蛋疼,毕竟很多人还是对文字甚至拼音字母更容易让正常人记忆.这就是DNS的功能. 当然,它不仅能把那些你输入的拼音字母转换成ip地址的数字串,它还支持把那些数字串转换成你想访问的实际的网

Centos6.6上rsyslog一些用法和扩展

友情提醒:本文系统环境vmware 10+Centos 6.6 x86_64,以下涉及到的命令和用法请谨慎使用. 内容概括: (1)rsyslog的配置文件与日志内容结构解读 (2)使用rsyslog做一台日志服务器 (3)rsyslog日志文件的轮替 (4)rsyslog与mariadb结合将日志信息写入数据库并使用loganalyzer进行管理 日志对于系统的重要性不言而喻,比如对于故障诊断和入侵检测,没有日志几乎寸步难行.吐槽一下:微软你妹的,就不能把日志做的能让人看明白些,全是错误代码,

[Erlang_Question13]怎么把一个普通的进程挂入Supervisor监控树?

简单来说:应该是在调用的start_link返回一个{ok,Pid}就可以把这个进程放入监控树Supervisor里面: -module(worker). -author("[email protected]"). -export([start_link/0,stop_worker/0]). start_link() –> {ok,spawn(fun() -> loop() end)}. loop() –> case whereis(?MODULE) of undef

在CentOS6.7上编译安装MySQL 5.7.11

系统环境:CentOS 6.7MYSQL版本:5.7.11 安装依赖包yum -y install gcc gcc-c++ ncurses ncurses-devel cmake 查看系统是否自带mysql和boost,如有则先卸载rpm -qa mysql boostyum remove -y mysql rm /etc/my.cnf -f     #删除系统原有的mysql配置文件,如果有的话yum remove -y boost 下载相应源码包cd ~/tools/wget http://

CentOS6.7上安装nginx1.8.0

主题: CentOS6.7上安装nginx1.8.0 环境准备: 1.gcc-c++ 示例:yum install gcc-c++ 安装:gcc-c++ gcc-c++编译工具 2.PCRE(Perl Compatible Regular Expressions) 示例:yum install -y pcre pcre-devel 安装:pcre和pcre-devel PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正

centos6.5上安装淘宝tfs系统

为了安装淘宝tfs文件系统,查了很多资料.若仅参考淘宝的官方文档,那么安装注定失败,因为在官方文档中很多依赖库并没有明确标出. 为了更方便的安装,我这里只写正确的安装过程,错误的解决就不详细描述了. 第一步:gcc降级 centos6.5上如果用yum安装gcc的话,默认是4.4.7版本.若以在gcc4.4.7的基础上安装tfs的话会出现许多莫名其妙的错,最后在网上 甚至搜索不到相关的错误信息.不过我们公司已经有大神安装成功,到时候看他能不能分享一下经验. yum install -y texi

centos6.5上使用docker

工作忙的都没时间写技术博客了,赶紧写点 最新的docker是1.7.x的,要想在centos6.5上使用就要升级到3.10内核 1.安装elrepo源(硬件驱动的第三方库,里面有内核yum源) rpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm 2.安装长期稳定版内核(3.10.x) yum --enablerepo=elrepo-kernel install kernel-lt -y 3.修改开机引导