对两个系统调用之间执行24秒的apache儿童执行strace。我怎样才能确定是什么原因导致的这种行为。看起来像两个孩子都采取几乎相同的时间(24.7和23.92)秒。
我们正在使用php5和MySQL 5的Apache prefork
/ var / lib / php5 /是php会话文件夹
apache children1的strace输出与processid -20539
ps -u www-data | grep apache2 | awk'{print'-p“$ 1}'| xargs strace -o /strace/strace.log -ff -s4096 -r
20539 0.000064closures(13)= 0
20539 0.000060 open(“/ var / lib / php5 / sess_9t2cvnvdoruh666rjpm515idm0”,O_RDWR | O_CREAT,0600)= 13
20539 0.000065 flock(13,LOCK_EX)= 0
20539 24.711888 fcntl(13,F_SETFD,FD_CLOEXEC)= 0
20539 0.000056 fstat(13,{st_mode = S_IFREG | 0600,st_size = 211,…})= 0
20539 0.000080 lseek(13,0,SEEK_SET)= 0
用processid – 20556输出apache的children2
20556 0.000056closures(13)= 0
20556 0.000058 open(“/ var / lib / php5 / sess_9t2cvnvdoruh666rjpm515idm0”,O_RDWR | O_CREAT,0600)= 13
20556 0.000062 flock(13,LOCK_EX)= 0
20556 23.928294 fcntl(13,F_SETFD,FD_CLOEXEC)= 0
20556 0.000055 fstat(13,{st_mode = S_IFREG | 0600,st_size = 211,…})= 0
20556 0.000083 lseek(13,0,SEEK_SET)= 0
文件描述符(13)称为? 我对strace输出的理解有什么不对吗?
在这个过程中,请看一下lsof -p <pid>
值得注意的是,你正在寻找FD 13
即从我的一个httpd部署。
httpd 10865 apache 13w REG 8,5 1113187 59310687 /var/log/httpd/some_site.log
如果fcntl指出其他进程正在争夺锁,那么我将在争用中获得对文件的独占锁,在FD 13中指出,那么这将解释您的漫长等待。