遇到影响服务器性能的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下查看某个进程的线程数量.