Chinaunix

标题: 通过strace -f -p 9887 求高手帮我分析一下..apache占用资源cpu使用率很高. [打印本页]

作者: thematice    时间: 2009-04-21 03:52
标题: 通过strace -f -p 9887 求高手帮我分析一下..apache占用资源cpu使用率很高.
通过抓包
strace -f -p 9887
得到很多这样的东西不知道是做什么用的请各位大大帮忙
poll([{fd=11, events=POLLIN}], 1, 0)    = 0
gettimeofday({1240255565, 446146}, NULL) = 0
gettimeofday({1240255565, 446205}, NULL) = 0
select(12, [11], [11], [], {15, 0})     = 1 (out [11], left {15, 0})
poll([{fd=11, events=POLLIN}], 1, 0)    = 0
gettimeofday({1240255565, 446422}, NULL) = 0
gettimeofday({1240255565, 446481}, NULL) = 0
select(12, [11], [11], [], {15, 0})     = 1 (out [11], left {15, 0})

省略几千行.详细内容查看附件

strace分析.rar

1.41 KB, 下载次数: 71


作者: xinglp    时间: 2009-04-21 06:01
你是跟踪的CPU最高的那个进程么?
你是否打开了代理功能或者没有关闭DNS查找, 看到你的程序里面有DNS解析的部分?

用strace -Ff -p看看呢
作者: Dalamar    时间: 2009-04-21 15:09
路过顺便看到,这个是系统调用
gettimeofday({1240255565, 446146}, NULL) = 0
gettimeofday({1240255565, 446205}, NULL) = 0
几千行这个说明频繁在执行time函数获取时间戳或者内部在计时
poll和select是linux的非阻塞IO模型
poll([{fd=11, events=POLLIN}], 1, 0)  表示设备可无阻塞读,句柄号为11
看样子是在做一些远程IO操作的等待吧,具体要看具体的程序实现。
作者: thematice    时间: 2009-04-25 04:06
原帖由 Dalamar 于 2009-4-21 15:09 发表
路过顺便看到,这个是系统调用
gettimeofday({1240255565, 446146}, NULL) = 0
gettimeofday({1240255565, 446205}, NULL) = 0
几千行这个说明频繁在执行time函数获取时间戳或者内部在计时
poll和select是l ...

求教您说的远程i/o操作等待
是不是指上传一类的程序呢.....
我这里有这个
select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0})
poll([{fd=6, events=POLLIN}], 1, 0)     = 0
select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0})
poll([{fd=6, events=POLLIN}], 1, 0)     = 0
select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0})
poll([{fd=6, events=POLLIN}], 1, 0)     = 0
select(7, [6], [6], [], {15, 0})        = 2 (in [6], out [6], left {15, 0})
poll([{fd=6, events=POLLIN, revents=POLLIN}], 1, 0) = 1
recvfrom(6, "D\220\303\34l\242TR\262\36\374g\322\260\251/\262\267!_~\203\20\301<~s\215\312\21\276B"..., 16383, 0, NULL, NULL) = 8192
lseek(7, 2494464, SEEK_SET)             = 2494464
write(7, "D\220\303\34l\242TR\262\36\374g\322\260\251/\262\267!_~\203\20\301<~s\215\312\21\276B"..., 8192) = 8192
lseek(7, 2494464, SEEK_SET)             = 2494464
read(7, "D\220\303\34l\242TR\262\36\374g\322\260\251/\262\267!_~\203\20\301<~s\215\312\21\276B"..., 8192) = 8192
write(8, "D\220\303\34l\242TR\262\36\374g\322\260\251/\262\267!_~\203\20\301<~s\215\312\21\276B"..., 8192) = 8192
select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0})
poll([{fd=6, events=POLLIN}], 1, 0)     = 0
select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0})
poll([{fd=6, events=POLLIN}], 1, 0)     = 0
select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0})
poll([{fd=6, events=POLLIN}], 1, 0)     = 0
作者: thematice    时间: 2009-04-25 10:49
原帖由 xinglp 于 2009-4-21 06:01 发表
你是跟踪的CPU最高的那个进程么?
你是否打开了代理功能或者没有关闭DNS查找, 看到你的程序里面有DNS解析的部分?

用strace -Ff -p看看呢

我跟踪的是最高的那个占用cpu进程.....
我的应用主要是web应用...你说会不会是上传程序占用过多的cpu资源....




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