## **背景**

风险：项目出了几次问题，减少风险

代码：之前代码没考虑未来需要，性能急剧下降

监控平台：Nginx日志发现，请求很慢

我们的目标：要追求高性能



## **问题**

你们是如何做性能分析的？



## **怎么做的**



|          | xhprof                                                       | xdebug                   | tideway + xhgui                                              |
| -------- | ------------------------------------------------------------ | ------------------------ | ------------------------------------------------------------ |
| 搭建     | 安装xhprof扩展，即开即用                                     | 安装xdebug即可，即开即用 | 复杂(依赖mongodb)                                            |
| 采集     | 1. 只能看单次调试，一次经常说明不了问题2. 常常和用户有关系，并不是所有函数都会触发 | ———                      | 1. 可以抽象采集，可以完整采集2. 信息记录完整，比如请求信息   |
| 信息展示 | 看不了SQL执行                                                | ———                      | 1. 支持SQL展示2. 支持请求信息展示3. 可视化信息丰富支持火焰图、瀑布图（单次请求）4. 支持请求性能对比 |



### 备注

一、新版才支持SQL

1. tideways_xhprof.so => tideways.so

2. 调整header.php 的文件 把相关代码都调整成扩展为tideways的流程即可！

二、如何搭建非侵入式分析平台

https://blog.it2048.cn/article-tideways-xhgui/

三、生成classmap + apcu 

https://blog.csdn.net/zhouyuqi1/article/details/81098650



## **结果**

1. 流量减少了一半

2. TOP10，部分接口性能提升1倍，剩余还在优化中



## **方案总结**

1. 多级缓存：apcu

2. 静态变量（主要是针对Web）

一次接口只会调用一次用户信息

3. 减少循环调用

多次hget调整为hmget

4. 不要过度优化

5. 性能优化，避免自嗨，需要抓重点，用数据说明