查看每个系统函数调用耗时占比
ps -ef|grep php-fpm|awk '{print " -cp " $2 " -o /tmp/strace.log"}' | xargs strace
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
18.99 0.010768 3 4160 poll
18.79 0.010657 0 25688 read
13.10 0.007432 0 16900 36 lstat
11.09 0.006290 0 13002 244 access
7.22 0.004092 1 3849 8 recvfrom
6.57 0.003726 1 3842 sendto
5.83 0.003308 0 7044 52 stat
5.73 0.003252 0 6728 rt_sigprocmask
2.45 0.001389 4 395 mlock
2.35 0.001330 0 2731 getdents
1.86 0.001055 1 1853 open
1.76 0.001000 18 55 accept
0.79 0.000450 0 2245 close
0.60 0.000343 1 496 fstat
0.47 0.000267 1 467 rt_sigaction
0.41 0.000233 0 1219 lseek
0.38 0.000213 1 351 12 socket
0.36 0.000205 4 55 shutdown
0.35 0.000200 2 129 write
0.29 0.000166 1 215 brk
0.19 0.000105 1 115 mmap
0.16 0.000090 1 176 getsockopt
0.14 0.000080 1 110 chdir
0.11 0.000062 0 395 munlock
0.00 0.000000 0 238 munmap
0.00 0.000000 0 18 alarm
0.00 0.000000 0 220 setitimer
0.00 0.000000 0 168 168 connect
0.00 0.000000 0 334 recvmsg
0.00 0.000000 0 167 bind
0.00 0.000000 0 251 getsockname
0.00 0.000000 0 12 4 getpeername
0.00 0.000000 0 91 setsockopt
0.00 0.000000 0 80 uname
0.00 0.000000 0 629 fcntl
0.00 0.000000 0 116 getcwd
0.00 0.000000 0 110 times
0.00 0.000000 0 2 restart_syscall
0.00 0.000000 0 8 epoll_wait
------ ----------- ----------- --------- --------- ----------------
100.00 0.056713 94664 524 total
查看某个系统调用的实际执行
ps -ef|grep php-fpm|awk '{print " -T -e access -p " $2 " -o /tmp/strace_access.log"}' | xargs strace
根据具体的执行结果,从代码或相关配置中去优化即可