网上有各色的文章。所以,本篇算导读了。
优化方法论
截图来自《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】常用监控指标及监控方法
连接数满了。如何看来自于哪个业务模块的呢?
通过看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方法)。这样就走重定义,去收集调用的情况。达到查看重复调用的情况。
-
debug_backtrace() 函数
php-fpm监控指标?
内容来源
- 《MySQL 是怎样运行的:从根儿上理解 MySQL》
- 《MySQL核心45讲》
- 《nginx核心100讲》
网友评论