fpm 如何快速定位到阻塞函数

每天被旁边的主管盯得死死的都没空梳理,趁他请假简单梳理下系统

我们的技术栈

php7.3 + laravel5.5(lts)

遇到的问题

普遍项目性能瓶颈在于数据库I/O
在传统fpm中这一点可能表现的更明显一点
一般来说遇到比较慢的接口是从优化单条SQL的角度去着手
但是通常执行时间为5s以内的sql,在系统内就表现的巨慢
究其根本还是因为fpm是阻塞执行的,在执行mysql时会阻塞其他sql执行 同一worker内的都会受到影响
通常遇到一条慢SQL,整个系统性能都会直线下降
有什么办法可以直接定位到耗时执行的底层函数从而快速定位到原因
在每条SQL都突然变慢的情况下,很难找出导致所有SQL性能拉胯的罪魁祸首
有什么好用的工具或命令求推荐

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 12
sanders

建议把 fpm 和 数据库的 慢日志都打开,然后结合日志来看当时的时间都耗在哪里。

1年前 评论

mysql查看查询链接耗时,结合语句定位代码

1年前 评论

直接去云服务器上看下慢sql即可

1年前 评论
panda-sir

大部分慢都是IO问题 查sql redis http

1年前 评论

mysql的性能并不弱,但是往往就是PHP框架过度封装,虽然写代码方便了,但是却导致程序臃肿运行缓慢。传统php-fpm的运行方式,不支持数据库连接池,也是导致程序运行慢的原因。当然复杂的sql也是一方面,优化sql,重新设计索引,也是优化的方案之一,如果是小项目,一般业务接口考虑0.5秒之内返回,所以,sql执行时间应该小于0.5秒,5s那种接口太多,就需要考虑换类似于easyswoole这些支持数据库连接池的PHP框架了,甚至换其他开发语言,比如java来实现。

1年前 评论
jiangjun 1年前

感谢大佬们回复 加了索引 从5s降到了2s 已经好很多了

1年前 评论
putyy 1年前
putyy 1年前
zds

opentrack监控,效果可以看一下我发的最新的帖子

1年前 评论
晏南风 (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!