Linux系统CPU的性能监控及调优
《Linux系统CPU的性能监控及调优》要点:
CPU性能监控当程序响应变慢的时候,首先使用top、vmstat、ps等命令查看系统的cpu使用率是否有异常,从而可以判断出是否是cpu繁忙造成的性能问题.其中,主要通过us(用户进程所占的%)这个数据来看异常的进程信息.当us接近100%甚至更高时,可以确定是cpu繁忙造成的响应缓慢.一般说来,cpu繁忙的原因有以下几个:
top命令 top命令 对于多个或多核cpu,上面的显示则会是多个cpu所占用的百分比总合.如需查看每个核的消耗情况,可在进入top视图后按1,就会按核来显示cpu的使用情况,如上图.
vmstat vmstat命令
gstat -gcutil 如果发现是Java进程CPU占用过高,可以使用这个命令查看进程是不是正在频繁GC,如下图所示. jstat命令
问题分析根据上面提供的几个常用命令,定位到问题以后,就可以根据具体问题分析其产生的原因了.
us过高 当us值过高时,表示运行的应用消耗了大部分的cpu.在这种情况下,对于java应用而言,最重要的是找到具体消耗cpu的线程所执行的代码,可以采用如下办法. 1.使用gstat -gcutil查看JVM是否频繁的进行GC. 2.如果根据gcutil查看,GC并不频繁,请根据《当CPU飙高时,它在做什么》提供的方式,查看CPU在执行什么代码,来定位问题. sy过高 当sy值过高时,使用vmstat来查看线程切换次数.很可能是linux花费了更多的时间在进行线程切换.java应用造成这种现象的主要原因是启动的线程比较多,且这些线程多处于不断的阻塞(例如锁等待,io等待)和执行状态的变化过程中,这就导致了操作系统要不断的切换执行的线程,产生大量的上下文切换.在这种情况下,对java应用而言,最重要的是找出不断切换状态的原因,可采用的办法为通过kill -3 pid 或jstack -l pid的办法dump出java应用程序的线程信息,查看线程的状态信息以及锁信息,找出等待状态或锁竞争过多的线程. CPU调优设置程序执行的优先级 可以使用nice和renice设置程序执行的优先级. 格式:nice [-n 数值] 命令nice 指令可以改变程序执行的优先权等级.指令让使用者在执行程序时,指定一个优先等级,称之为 nice 值. 这个数值从最高优先级的-20到最低优先级的19.负数值只有 root 才有权力使. 一般使用者,也可使用 nice 指令來做执行程序的优先级管理,但只能将nice值越调越高. 使用ulimit限制cpu占用时间 注意,ulimit 限制的是当前shell进程以及其派生的子进程.因此可以在脚本中调用ulimit来限制cpu使用时间. 例如,限制tar的cpu占用时间,单位秒.
如果tar占用时间超过了100秒,tar将会退出,这可能会导致打包不完全,因此不保举使用ulimit对cpu占用时间进行限制. 另外,通过修改系统的/etc/security/limits配置文件,可以针对用户进行限制. 使用程序自带的对cpu使用调整的功能 某些程序自带了对cpu使用调整的功能,比如nginx服务器,通过其配置文件,可以为工作进程指定cpu,如下: worker_processes 4; 这里0001 0010 0100 1000是掩码,分别代表第1、2、3、4颗cpu核心,这就使得cpu的使用比拟平均到每个核心上. 使用Nginx时,这种优化方式是比拟常见的. 《Linux系统CPU的性能监控及调优》是否对您有启发,欢迎查看更多与《Linux系统CPU的性能监控及调优》相关教程,学精学透。编程之家PHP学院为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Mysql必读Mysql全文搜索match against的用法
- Mysql应用一些mysql启动参数的说明和优化方法
- Navicat for mysql Mac版 快捷键
- Windows Server 2008 R2修改MySQL 5.5数据库目录为D盘示例
- MYSQL默认用户名ROOT修改方法
- SQL如何增删修改字段
- Mysql必读mysql 获取当前日期函数及时间格式化参数详解
- cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段
- mysql – 在Yii2 find()/ QueryBuilder中使用WHERE条件的S
- python-TypeError:execute()需要2到3个位置参数,但是给出了