原帖:http://hi.baidu.com/mmaey/item/3f14a69eb53265f92916479f
新装的机器,asterisk进程占用CPU很高,如图:
core show channels verbose查看当前通话数:
callc*CLI> core show channels verbose
Channel Context Extension Prio State Application Data CallerID Duration Accountcode PeerAccount BridgedTo
0 active channels
0 active calls
2 calls processed
callc*CLI>
通话数为0,即没有用户在打电话,这就奇怪了!
接下来我们就看看到底是asterisk的哪个模块引起的。
用top命令查看asterisk进程ID如上图:PID为3040
用如下命令:ps -mp 3040 -o THREAD,tid,time , 如图:
也可以用:ps -LlFm -p `pidof asterisk`,如图:
可以看到是了进程ID 3054
执行:
[root@callc ~]# asterisk -rx 'core show threads' |grep 3054
0x411cc940 3054 do_timing started at [ 490] res_timing_pthread.c init_timing_thread()
可以看到是res_timing_pthread.c模块,asterisk时钟接口模块,此模块是meetme会议用的 。
如果你用不到meetme你可以删除它(应该没有影响吧?!)。
但这个模块为毛会突然这么耗资源了呢?
用命令core restart now重启了一下asterisk这个问题就再也没有出现了。
回想之前asterisk装好后,我发现系统时间是错误的 于是就用命令同步了一下时间。
/usr/sbin/ntpdate -u cn.pool.ntp.org && /sbin/hwclock -w
之后asterisk才发飙的,是不是因为这个呢?
实验了一下,果然是这个原因,如果系统时间更改,asterisk没有重启则就是引起这样的问题。
汗!