美文网首页PHP经验分享程序猿的进阶屋
【轻知识】php模拟面试——性能调优篇

【轻知识】php模拟面试——性能调优篇

作者: 言十年 | 来源:发表于2020-03-03 01:10 被阅读0次

    网上有各色的文章。所以,本篇算导读了。

    优化方法论

    截图来自《nginx核心100讲》

    这节课的笔记我做过。就是讲了一些例子。就不贴了。贴张图。

    mysql方面

    有哪些优化mysql的方式呢?

    • 当然你的sql语句你要看是否可以优化。

    • 开启msyql慢查询日志。

    • explain 分析。

    • 开启查询缓存。(这个得分场景,查多更少,比较好。不然缓存频繁失效也浪费性能)

    explain都关注哪些字段?

    这个问题,自行百度就ok。
    还有就是问你某个字段的哪个值?这个你也自行百度。

    什么是重点呢?比如rows的值。对吧。你要想到rows是不精确的统计。可以用analyze table 去优化。还有就是怎么会造成不准确。
    另外extra 中的using filesort。到底怎么排序的。是否可以规避外存排序。
    还有using tempory table ,用到内存表。等等

    这些是重点。什么字段?什么值?是纯记忆。

    怎么查看查询优化器生成执行计划的过程?

    # 1. 打开optimizer trace功能 (默认情况下它是关闭的):
    SET optimizer_trace="enabled=on";
    
    # 2. 这里输入你自己的查询语句
    SELECT ...; 
    
    # 3. 从OPTIMIZER_TRACE表中查看上一个查询的优化过程
    SELECT * FROM information_schema.OPTIMIZER_TRACE;
    
    # 4. 可能你还要观察其他语句执行的优化过程,重复上边的第2、3步
    ...
    
    # 5. 当你停止查看语句的优化过程时,把optimizer trace功能关闭
    SET optimizer_trace="enabled=off";
    

    mysql你会查看哪些指标呢?

    show global status like%
    【MySQL】常用监控指标及监控方法

    连接数满了。如何看来自于哪个业务模块的呢?

    Mysql show processlist 排查问题

    通过看sql就知道了。

    每个字段也尽量了解下。比如state 状态值有哪些,表示什么意思?

    nginx 方面

    nginx如何做监控?

    使用stub_status模块监控Nginx的状态

    说说nginx有哪些提升性能的方式把?

    • 使用UNIX socket
    • 开启gzip。
    • 开启send_file(说下零拷贝的好处)。
    • 使用proxy cache
    • 使用fastcgi cache
    • keepalive

    其实调优不止这点,关于nginx,特别推荐《nginx核心100讲》,有一章专将nginx优化(18节)。

    php方面

    php 有哪些调优的方法?

    • 开启opcode缓存

    • 开启php 慢查询日志

    • xhprof 性能分析工具。

    • xdbug

    • runkit 扩展,用runkit_method_redefine重新定义一些类方法(比如pdo的query方法)。这样就走重定义,去收集调用的情况。达到查看重复调用的情况。

    • php 函数追踪扩展 phptrace

    • debug_backtrace() 函数

    php-fpm监控指标?

    使用zabbix监控nginx和php-fpm性能

    内容来源

    相关文章

      网友评论

        本文标题:【轻知识】php模拟面试——性能调优篇

        本文链接:https://www.haomeiwen.com/subject/xvmwkhtx.html