标签 cpu 下的文章

RHEL/CentOS.x服务器CPU相关信息查看

可以使用lscpu快速查看:
lscpu命令参数

-a, –all: 包含上线和下线的cpu的数量,此选项只能与选项e或-p一起指定 
-b, –online: 只显示出上线的cpu数量,此选项只能与选项e或者-p一起指定 
-c, –offline: 只显示出离线的cpu数量,此选项只能与选项e或者-p一起指定 
 -e, –extended [=list]: 以人性化的格式显示cpu信息,如果list参数省略,输出所有可用数据的列,在指定了list参数时,选项的字符串、等号(=)和列表必须不包含任何空格或其他空白。比如:’-e=cpu,node’ or ’–extended=cpu,node’ 
-h, –help:帮助 
-p, –parse [=list]: 优化命令输出,便于分析.如果省略list,则命令的输出与早期版本的lscpu兼容,兼容格式以两个逗号用于分隔cpu缓存列,如果没有发现cpu缓存,则省略缓存列,如果使用list参数,则缓存列以冒号(:)分隔。在指定了list参数时,选项的字符串、等号(=)和列表必须不包含空格或者其它空白。比如:’-e=cpu,node’ or ’–extended=cpu,node’ 
-s, –sysroot directory: 为一个Linux实例收集CPU数据,而不是发出lscpu命令的实例。指定的目录是要检查Linux实例的系统根 
-x, –hex:使用十六进制来表示cpu集合,默认情况是打印列表格式的集合(例如:0,1)

---阅读剩余部分---

Tomcat查看占用CPU过高的原因

应用服务器服务起来以后占用CPU一直很高,排查方法如下:
1、使用top命令查看使用CPU过高的进程的pid,按“shift+P”键按照cpu从高到低排列,按“shift+M”键按照内存用高到低排列。
2、根据pid定位占用cpu的线程,并按照占用从高到低排列

#此处的pid为15217
$ ps -mp 15254 -o THREAD,tid,time|sort -rn|head -10 
USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
tomcat   99.9   -    - -         -      -     - 05:10:34
tomcat   99.8  19    - -         -      - 15820 05:10:05
tomcat    0.0  19    - poll_s    -      - 15921 00:00:00
tomcat    0.0  19    - poll_s    -      - 15917 00:00:00
tomcat    0.0  19    - poll_s    -      - 15257 00:00:05
tomcat    0.0  19    - futex_    -      - 15922 00:00:00
tomcat    0.0  19    - futex_    -      - 15920 00:00:00
tomcat    0.0  19    - futex_    -      - 15919 00:00:00
tomcat    0.0  19    - futex_    -      - 15918 00:00:00

3、将占用cpu高的线程id转换为16进制格式

printf "%x\n" 15820
3dcc

4、打印线程的堆栈信息

jstack 15254 | grep 3dcc -A 30

"Thread-2" prio=10 tid=0x00007fe7745cc800 nid=0x3dcc runnable [0x00007fe744c4a000]
   java.lang.Thread.State: RUNNABLE
        at com.yueworldframework.core.support.EventHelper$1.run(EventHelper.java:50)
        at java.lang.Thread.run(Thread.java:745)

"GC Daemon" daemon prio=10 tid=0x00007fe774347800 nid=0x3d04 in Object.wait() [0x00007fe7459dd000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00000000fd7b8530> (a sun.misc.GC$LatencyLock)
        at sun.misc.GC$Daemon.run(GC.java:117)
        - locked <0x00000000fd7b8530> (a sun.misc.GC$LatencyLock)

"Service Thread" daemon prio=10 tid=0x00007fe7740aa000 nid=0x3bdd runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" daemon prio=10 tid=0x00007fe7740a7800 nid=0x3bdb waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" daemon prio=10 tid=0x00007fe7740a4800 nid=0x3bd9 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x00007fe77409a800 nid=0x3bd8 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=10 tid=0x00007fe774083800 nid=0x3bb9 in Object.wait() [0x00007fe746dec000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00000000fd7b0da0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
        - locked <0x00000000fd7b0da0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)

根据输出信息定位或将结果发给开发。

笔记本/PC升级注意的问题

之前都是说内存大了就很快,但现在基本没卵用,PC笔记本内存基本>=8G以后再提升作用就不大了,操作感觉慢的瓶颈主要在IO了,也就是硬盘速度,老的机器硬盘消磨损耗比较,推荐直接换新硬盘,并另加个ssd盘,系统装在上面,速度很看,当然前提是你的主板支持双硬盘、大内存等等,cpu也别太挫···

最新

分类

归档

评论

  • Liang: 贴下编译参数和步骤,...
  • shao3911: 您好,为什么我在编译...
  • aliang: 先看是yum安装还是...
  • aliang: 将原来的nginx安...
  • yen: 3、如果要回滚的话,...
  • yen: 刚好需要升级ngin...
  • 文雨: 一些新的method...
  • aliang: 默认不屏蔽估计开发团...
  • 山野愚人居: PHP既然允许直接使...
  • aliang: 最下面有github地址·

其它