- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mysql 学习着重架构的经验积累
系统瓶颈定位: -- 工具 top
top -- 重点 4 个 值
us% -- user 占用 用户态的进程占用
sy% -- sys 占用 线程切换 中断 等等进程 命令 perf top (centos 6.0 之后看 系统进程调用情况)
perf top (redhat6.0 之后,查看系统进程调度)
id% -- 系统空闲状态
wa% -- io wait (磁盘 io) 怎么去查看? iostat
iostat -m -x 2
重要指标 %util 系统繁忙程度(注意不是很准 ,只供参考尤其是机械磁盘)
注 : 当%util 非常高的时候 ,先查看 TPS如果 TPS很低,表示随机 IO 非常重 . 随机 IO 第二个指标 IOPS. 如果 r/s -
10 w/s - 400 rmb/s+wmb/s=1mb/s++ %util 近 100%(随机 io 非常高 )
怎么去定位这个进程呢。能不能进行写的合并呢?
工具 pt- ioprofile 直接运行,会将写的最多的文件排在最前面。 pt -ioprofile --help
如果 %sy 高,用 perf top 去分析
如果 %us 高,top, 如果 mysql 进程最前面,大概 2 个问题 1 大量的 sort 2 索引设计不合理,这样有慢日志
可以衡量,或者 show proesslist 定位问题。
指标计算:
1 rmb/s + wmb/s = TPS(吞吐量 )
pt-ioprofile 查看 mysqld 进程 写最多的文件,如果是独立表空间的话你知道的,也可指定进程查看
2 r/s(读次 /s) + w/s( 写次 /s) = IOPS
如何分析内存瓶颈?
mysql 延迟复制的问题怎么定位 -- 查看当前连接数的状态 -- 扩大连接数的技术 thread pool
问题 mysql 连接数上来之后性能为什么下降 ?
因为 mysql 是基于线程处理模型, 当一个连接进来 mysql 要创建一个线程, 当线程过多 mysql cpu 做线程的
索的争用,线程的维护,所以性能下降。
mysql 服务器优化建议总结
1. 要确保有足够的内存
数据库能够高效的运行,最关建的因素需要内存足更大了,能缓存住数据,更新也可以在内存先完成。
但不同的业务对内存需要强度不一样,一推荐内存要占到数据的 15-25% 的比例,特别的热的数据,内
存基本要达到数据库的 80% 大小。
2. 需要更多更快的 CPU
MySQL 5.6 可以利用到 64 个核,而 MySQL 每个 query 只能运行在一个 CPU 上,所以要求更多的 CPU,
更快的 CPU 会更有利于并发。
3. 要选择合适的操作系统
在官方建议估计最推荐的是 Solaris, 从实际生产中看 CentOS, REHL 都是不错的选择,推荐使用 Cent
OS, REHL 版本为 6 以后的,当然 Oracle Linux 也是一个不错的选择。虽然从 MySQL 5.5 后对 Windo
ws 做了优化,但也不推荐在高并发环境中使用 windows.
4. 合理的优化系统的参数
更改文件句柄 ulimit –n 默认 1024 太小
进程数限制 ulimit –u 不同版本不一样
禁掉 NUMA numctl –interleave=all
5. 选择合适的内存分配算法
默认的内存分配就是 c 的 malloc 现在也出现许多优化的内存分配算法 :
jemalloc and tcmalloc
从 MySQL 5.5 后支持声明内存储方法。
[mysqld_safe]
malloc-lib = tcmalloc
或是直接指到 so 文件
[mysqld_safe]
mall
原创力文档


文档评论(0)