如果你有 php 使用经验, 那肯定就更好了
业务背景
框架及相应环境
laravel5.7, mysql5.7, redis5, nginx1.15
centos 7.5 bbr
docker, docker-compose...本文关注的就是如何发现这些问题, 以及发现问题的思路.
我们首先找到系统中一个合适的API或函数, 用来放大问题.
这个 api 设计之初是给 nginx 负载均衡做健康检查的...., 我们知道, 当使用系统调用的时候, 系统陷入内核态, 这个过程是会产生软中断的, 通过查看 php-fpm 的系统调用, 验证我们的猜想
?...strace 查看具体的系统调用, 发现大量的系统调用来自于 stat, 猜测可能是opcache 频繁的检查时间戳, 判断文件修改....通过修改配置项, 达到了 46% 的性能提升
最后再通过 perf, 查看函数调用栈, 分析得到, 可能是大量的与 redis 的 TCP 连接带来不必要的资源消耗.