我有一个 prefork/fork 守护进程。从上面我可以看到,主进程经常消耗磁盘空间:
PID TID RDDSK WRDSK WCANCL DSK CMD 16830 - 7264K 48696K 18624K 10% our daemon
据strace
我所知,它只在这个时间段内分叉: strace 中
1461316357.209106 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0) = 16203 <0.002074> 1461316357.211241 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0) = 16204 <0.000843> 1461316387.241264 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0) = 19984 <0.002144> 1461316387.243471 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0) = 19985 <0.000990> 1461316388.851070 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0) = 20063 <0.002046> 1461316388.853173 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0) = 20064 <0.000916>
也有nanosleep,waitpid,time,restart_syscall
,但它们并不有趣。
我的问题是fork
磁盘占用率是怎么造成的?如何解决?(此守护进程运行在磁盘受限的服务器中,我们试图减少磁盘占用率)?