Chinaunix

标题: iowait 高 cpu 占用率高 [打印本页]

作者: jprobe    时间: 2007-04-24 22:40
标题: iowait 高 cpu 占用率高
请高手指点一下问题可能在什么地方!

top的结果

23:46:26  up 7 days,  4:44,  3 users,  load average: 2.99, 2.16, 1.04
54 processes: 53 sleeping, 1 running, 0 zombie, 0 stopped
CPU0 states:   0.0% user   0.0% system    0.0% nice   0.0% iowait 100.0% idle
CPU1 states:  30.2% user  69.3% system    0.0% nice   0.0% iowait   0.0% idle
CPU2 states:  31.4% user  68.1% system    0.0% nice   0.0% iowait   0.0% idle
CPU3 states:  28.4% user  71.1% system    0.0% nice   0.0% iowait   0.0% idle
Mem:  2064440k av, 1998084k used,   66356k free,       0k shrd,  107444k buff
                    856028k actv,       0k in_d,   45380k in_c
Swap: 4088532k av,    1732k used, 4086800k free                 1608516k cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME CPU COMMAND
15284 root      25   0  227M 227M 72068 S    99.9 11.2  18:07   2 java
15363 root      15   0  1128 1128   852 R     0.2  0.0   0:00   1 top

系统的环境
[root@aebizserver1 logs]# java -version
java version "1.5.0_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)
Java HotSpot(TM) Server VM (build 1.5.0_07-b03, mixed mode)

[root@aebizserver1 logs]# uname -a
Linux aebizserver1 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686 i686 i386 GNU/Linux


apache-tomcat-5.5.17
mysql-5.0.37-linux-i686

开发的TOMCAT下的WEB应用,在开发机上跑没有问题,在服务器上跑,会正常一段时间,具体时间长度不确定,有时1小时,有时几分钟,就会出现常CPU占用99.9%,IO占用相当高的情况。

有时重启tomcat有效果,能恢复正常。有时重启tomcat没有作用,需要删除work目录下的内容,重新启动。

不知是服务器硬件的问题,还是服务器配置的问题,还是tomcat或者mysql的配置问题,或者是程序的问题。

请教高手给指定一下!谢谢!!!
作者: krs    时间: 2007-04-24 22:56
系统进程占用很高,很有可能是Java Hotspot Sever VM的问题。

开发机和服务器的环境一样吗?
作者: jprobe    时间: 2007-04-24 23:22
不一样,开发机是一般的PC机。

怎样确定是不是Java Hotspot Sever VM的问题?Java Hotspot Sever VM存在对多CPU的支持问题吗?
作者: krs    时间: 2007-04-24 23:44
Java应用是运行在JVM上的。java命令就启动了JVM。仅JVM就占CPU的99%,应用的CPU占有率在JAVA环境里是看不出来的。

运行一下测试程序,试一下,是不是总是出现这种情况。

如果是的话,很可能你的环境中Java Hotspot Server VM对SMP的配置没有配置好。如果不是的话,那就是程序方面了。
作者: jprobe    时间: 2007-04-25 00:06
标题: 回复 #4 krs 的帖子
这种情况总是出现,系统已经部署在正式运行环境上一周多了,每天都会出现这种问题。iowait经常是多个CPU都是100%,我用find命令查找最近修改过的文件,也没有应用的文件,都是系统文件,主要是/proc里的文件。查看java打开的文件,也没有什么特别的文件。

目前找不出特别的原因来。

不知道是不是多CPU的原因。

另外请问krs,环境中Java Hotspot Server VM对SMP的配置没有配置好,是什么意思,不好意思我对SMP不知道。
作者: jprobe    时间: 2007-04-25 00:16
换成jdk6后也不行

环境变量设置为:
JRE_HOME=/usr/java/default
作者: krs    时间: 2007-04-25 00:21
看清楚了,iowait 都是0.0%, 100%的是idle。

SMP是对称多处理,可能是FreeBSD下的术语,也就是指OS对多CPU的支持。当时安装时的情况是怎样的?

如果不是配置问题,那就可能是JAVA,Tomcat上的整和上面。

呵呵,只是提供一下思路,具体要自己多看文档,多摸索了。
作者: jprobe    时间: 2007-04-25 00:28
标题: 回复 #7 krs 的帖子
只有CPU0是idle的,CPU1/CPU2/CPU3都是iowait都是100%。
这个可能是一台双CPU的,双核的服务器。

换成JDK6问题依然在。刚操作了几下,tomcat就僵死了。但是换成JDK6后,CPU和IO占用都没了,内存也只有183M。

是不是MYSQL也有同样的问题?多CPU的问题,我从MYSQL网站随便下的一个版本,我也不知道我该用那个版本。而且,MYSQL是以MYISAM方式运行。

不知道krs有什么好的办法确认问题所在没?

我的msn是zergo_cn@msn.com,希望能通过MSN请教一下,谢谢!
作者: jprobe    时间: 2007-04-25 00:34
标题: 回复 #7 krs 的帖子
安装的时候都是默认安装。

LINUX和网络是事先安装好的。我安装的JDK/MYSQL/TOMCAT

JDK 是直接运行bin文件,解压的,移动到 /usr/local/jdk1.5.0_07目录。
TOMCAT也是直接解包 .tar.gz文件,移动到 /usr/local/apache-tomcat-5.5.17目录
MYSQL也是直接解包,移动到/usr/local/mysql目录

环境变量设置:
JAVA_HOME=/usr/local/jdk1.5.0_07
CLASSPATH=$JAVA_HOME/lib/dt.jarJAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH
作者: snowtty    时间: 2007-04-25 08:16
哈哈,帮不了忙
作者: Cocal    时间: 2007-04-25 09:17
我看和外部环境有关,不妨从负载能力角度考虑一下,看看访问日志,网络连接状态,是否被Dos攻击,等等。io的含义不仅是磁盘吧。
作者: jprobe    时间: 2007-04-25 09:40
标题: 回复 #11 Cocal 的帖子
这是一台新放在网上的新的服务器,上面没有其他的应用,而且访问的时候,人数很少,最多就几个人。一般都是我一个人在用。

有那位高人能指点一下吗?
作者: Cocal    时间: 2007-04-25 09:51
访问量是多少? 网络连接数是多少? 问题发生之前最后一个记录的URL 是多少? 在Tomcat中卸载/重新载入应用是否会释放?

放在什么网上?Internet? 那么留意一下蠕虫攻击,服务器安全问题。

因为故障出现是随机的,因此要考虑外部环境!如果你服务器下网,或者在只有两三台机的测试网中还会出问题,就基本可以确认服务器软件有问题了。
作者: bhuang    时间: 2007-04-25 10:01
是jvm的问题,你设定是227m明显不够用,加大jvm就行了。
作者: qlks    时间: 2007-04-25 10:26
mysql数据库没有建索引吧
你看看mysql中的慢查询
作者: guxing1841    时间: 2007-04-25 17:33
标题: 回复 #9 jprobe 的帖子
访问量是不是比开发机上大得多,日志里tomcat应该有错误吧,还有就是安装完tomcat后得把java的内存(512M以上)优化一下,不比开发机上几个人用,数据库这块连接也得优化,还有种原因就是导致数据库驱动资源耗尽而负载高,出现这种问题一般是数据库程序优化不够

[ 本帖最后由 guxing1841 于 2007-4-25 17:38 编辑 ]
作者: lemontel    时间: 2007-04-26 13:04
标题: 回复 #12 jprobe 的帖子
从1楼top的显示结果似乎看不出iowait高,似乎只有cpu占用高。

据说redhat as3上有iowait虚高的问题。
我在多台as3update6上简单执行一个find命令,通过top都可以看到iowait接近100%的情况。
例如:find / -name "asfdasdfasdfsa"

而在redhat9上却没发现上述情况。

仅作参考。
作者: wolfop    时间: 2007-04-26 13:54
看看IOW高的时候是哪个硬盘忙?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2