遇到影响服务器性能的cpuspeed 服务

 

最近碰到一个很蛋痛的问题,,我在公司的代码上实现了一个功能,然后基于这个测试,结果比对数据发现每天少三千多万条,,

然后我各种优化,各种零碎部功能阉割,,还是丢数据!

之后,监控运行网卡----watch -n 1 "ifconfig eth2",,,发现网卡丢数据!

之后把修改之前的程序拿上来运行,发现网卡还丢!

 之后查看CPU的使用情况,top 

 

发现有好多CPU被 cpuspeed 限速了,,,怀疑可能是我程序运行的时候选了一个不常用的CPU,而这个CPU可能就是1.2GHz,,影响了程序处理频率;

查看CPU使用情况的方法:

1,top;   可以用  ps aux |grep XXX    或者  pgrep XXX ,,找出你所要查找的进程号   之后    top -p 进程号 单独查看该进程的CPU 内存等使用情况;

        你可以用 ps -eLf |grep XXX 来查看程序运行所产生的线程情况;  也可以用 ps axms | grep XXX;

2,mpstat;默认输出所有CPU使用情况的平均值,用 mpstat -P ALL  命令查看所有的CPU使用情况;

3,ps;  使用ps命令,可以很清楚的看出到底是哪一条进程在吃CPU.排在前面的占用的CPU越多,  ps -eo pcpu,pid,user,args | sort -k 1 -r | head -20    显示占用CPU最多的20个进程;

4,查看当前进程下参数CPU的使用情况,  cat /proc/cpuinfo ,罗列了所有CPU的使用情况,你也可以过滤里边的单独参数,比如查看所有CPU的频率,cat /proc/cpuinfo | grep -i MHz; 

5,vmstat 一般脚本监控文件时,用他与awk 命令配合使用(未验证过)。

 

发现上边这个情况后,马上联系甲方处理。

 

处理方法: from:http://blog.sina.com.cn/s/blog_5f2ca1ed0101cz6f.html

1.物理服务器BIOS做设置 关闭节能开启最大CPU资源使用
做完该操作后,查看cpu主频仍然是1.2GHz
2.chkconfig --list |grep cpuspeed 发现该服务1,2,3,4,5级别均开机启动
关闭该服务,并关闭开机启动,解决该问题。

另外,CPU性能可能也还会与   irqbalance服务 有关。

可以点击文章: cpuspeed和irqbalance服务器的两大性能杀手     备注:之前那个链接不知道为啥点不过去,换了一个链接.

 

补充:

查看某一个进程内部当前运行的有多少线程,还有以下几个方法值得一用。

 

1.根据进程号进行查询:

# pstree -p 进程号

# top -Hp 进程号

2.根据进程名字进行查询:

# pstree -p `ps -e | grep server | awk '{print $1}'`

# pstree -p `ps -e | grep server | awk '{print $1}'` | wc -l

这里利用了管道和命令替换,

关于命令替换,我也是今天才了解,就是说用``括起来的命令会优先执行,然后以其输出作为其他命令的参数,

上述就是用 ps -e | grep server | awk '{print $1}' 的输出(进程号),作为 pstree -p 的参数

管道和命令替换的区别是:

管道:管道符号"|"左边命令的输出作为右边命令的输入

命令替换:将命令替换符"``"中命令的输出作为其他命令相应位置的参数

文章内容来源:  功夫Panda 的     Linux下查看某个进程的线程数量.

posted @ 2017-03-28 17:23  the_tops  阅读(2922)  评论(0编辑  收藏  举报