为什么PHP / Apache组合会执行那么多gettimeofday
系统调用?即使很快,每个呼叫都是应该考虑的呼叫。
快速介绍strace -c -p [apache2 process id]
以下内容:
Process 22294 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
98.52 0.010000 51 196 poll
1.48 0.000150 0 20752 gettimeofday
0.00 0.000000 0 94 7 read
0.00 0.000000 0 48 write
0.00 0.000000 0 96 32 open
0.00 0.000000 0 75 close
0.00 0.000000 0 6 chdir
0.00 0.000000 0 766 time
0.00 0.000000 0 2 chmod
0.00 0.000000 0 56 10 access
那20K电话让我担心。任何人都想对此有所了解吗?
Java甚至更糟...
—
Nils 2013年
您的程序在做什么?
—
迈克尔·汉普顿
我无法回答“为什么”,但是您是否知道stackoverflow.com/questions/7266813/…和access.redhat.com/knowledge/docs/zh-CN/Red_Hat_Enterprise_MRG/…?系统调用通常会映射到用户空间代码(“ vsyscall”),因此开销会大大减少。
—
比特兔(Wabit),2013年
伯爵不应该让你担心。轮询只有200个通话,但使用时间超过98%。您可以切换到正常的strace输出,然后您将看到apache正在进行的操作(将大大降低它的速度)。
—
ott--