当前位置:Gxlcms > 数据库问题 > mysql性能监控相关

mysql性能监控相关

时间:2021-07-01 10:21:17 帮助过:3人阅读

目录

  • 一,获取mysql用户下的进程总数

  • 二,主机性能状态

  • 三,CPU使用率

  • 四,磁盘IO量

  • 五,swap进出量[内存]

  • 六,数据库性能状态

  • 七、querylog

  • 八、mysqladmin的extended-status指令查看mysql各状态值

  • 九、开源监控软件  

  1. 一,获取mysql用户下的进程总数
  2. ps -ef | awk ‘{print $1}‘ | grep "mysql" | grep -v "grep" | wc-1 
  3. 二,主机性能状态
  4. # uptime
  5. [root@ ~]# uptime
  6.  13:05:52 up 53 days, 52 min,  1 user,  load average: 0.00, 0.00, 0.00 
  7.  
  8. 三,CPU使用率
  9. # top
  10. # vmstat 
  11. 四,磁盘IO量
  12. # vmstat 或 # iostat 
  13. 五,swap进出量[内存]
  14. # free 
  15. 六,数据库性能状态
  16. (1)QPS(每秒Query量) 
  17. QPS = Questions(or Queries) / seconds 
  18. mysql > show /*50000 global */ status like ‘Question‘;
  19. (2)TPS(每秒事务量)
  20. TPS = (Com_commit + Com_rollback) / seconds
  21. mysql > 
  22. show status like ‘Com_commit‘;
  23. mysql > show status like ‘Com_rollback‘;
  24. (3)key Buffer 命中率
  25. key_buffer_read_hits = (1-key_reads / key_read_requests) 
  26. * 100%
  27. key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%
  28. mysql> show status like ‘Key%‘;
  29. (4)InnoDB Buffer命中率
  30. innodb_buffer_read_hits = (1 - 
  31. innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%
  32. mysql> show status like ‘innodb_buffer_pool_read%‘;
  33. (5)Query Cache命中率
  34. Query_cache_hits = (Qcahce_hits / (Qcache_hits + 
  35. Qcache_inserts )) * 100%;
  36. mysql> show status like ‘Qcache%‘;
  37. (6)Table Cache状态量
  38. mysql> show 
  39. status like ‘open%‘;
  40. (7)Thread Cache 命中率
  41. Thread_cache_hits = (1 - Threads_created / connections 
  42. ) * 100%
  43. mysql> show status like ‘Thread%‘;
  44. mysql> show status like ‘Connections‘;
  45. (8)锁定状态
  46. mysql> show status like ‘%lock%‘;
  47. (9)复制延时量
  48. mysql > show slave status
  49. (10) Tmp Table 状况(临时表状况)
  50. mysql > show status like 
  51. ‘Create_tmp%‘;
  52. (11) Binlog Cache 使用状况
  53. mysql > show status like 
  54. ‘Binlog_cache%‘;
  55. (12) Innodb_log_waits 量
  56. mysql > show status like ‘innodb_log_waits‘;  
  57. 七、querylog
  58. mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysql启动的时候加入一些参数。如果在my.cnf里面修改,需增加如下几行
  59. 引用
  60. long_query_time = 1 
  61. log-slow-queries = /var/youpath/slow.log 
  62. log-queries-not-using-indexes[这个在mysql4.10以后才被引入]
  63. long_query_time 是指执行超过多久的sql会被log下来,这里是1秒。
  64. log-slow-queries 
  65. 设置把日志写在那里,可以为空,系统会给一个缺省的文件host_name-slow.log,我生成的log就在mysql的data目录
  66. log-queries-not-using-indexes 
  67. 就是字面意思,log下来没有使用索引的query。 
  68. 把上述参数打开,运行一段时间,就可以关掉了,省得影响生产环境。
  69. 接下来就是分析了,我这里的文件名字叫host-slow.log。
  70. 先mysqldumpslow 
  71. –help以下,我主要用的是 
  72. 引用
  73. -s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default 
  74. -t 
  75. NUM just show the top n queries 
  76. -g PATTERN grep: only consider stmts that 
  77. include this string  
  78. -s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有 
  79. c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙 
  80. -t,是top 
  81. n的意思,即为返回前面多少条的数据 
  82. -g,后边可以写一个正则匹配模式,大小写不敏感的
  83. mysqldumpslow -s c 
  84. -t 20 host-slow.log
  85. mysqldumpslow -s r -t 20 
  86. host-slow.log 
  87. 上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
  88. mysqldumpslow -t 10 
  89. -s t -g “left join” host-slow.log
  90. 这个是按照时间返回前10条里面含有左连接的sql语句。
  91. 八、mysqladmin的extended-status指令查看mysql各状态值
  92. /usr/local/mysql/bin/mysqladmin 
  93. -u User --host=IP --password=Passwd extended-status|grep $VARIABLE|awk ‘{print 
  94. $4}‘
  95. 附网友总结的mysql状态值含义
  96. Aborted_clients 
  97. 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
  98. Aborted_connects 
  99. 尝试已经失败的MySQL服务器的连接的次数。
  100. Connections 
  101. 试图连接MySQL服务器的次数。
  102. Created_tmp_tables 
  103. 当执行语句时,已经被创造了的隐含临时表的数量。
  104. Delayed_insert_threads 
  105. 正在使用的延迟插入处理器线程的数量。
  106. Delayed_writes 
  107. 用INSERT DELAYED写入的行数。
  108. Delayed_errors 
  109. 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
  110. Flush_commands 
  111. 执行FLUSH命令的次数。
  112. Handler_delete 
  113. 请求从一张表中删除行的次数。
  114. Handler_read_first 
  115. 请求读入表中第一行的次数。
  116. Handler_read_key 
  117. 请求数字基于键读行。
  118. Handler_read_next 
  119. 请求读入基于一个键的一行的次数。
  120. Handler_read_rnd 
  121. 请求读入基于一个固定位置的一行的次数。
  122. Handler_update 
  123. 请求更新表中一行的次数。
  124. Handler_write 
  125. 请求向表中插入一行的次数。
  126. Key_blocks_used 
  127. 用于关键字缓存的块的数量。
  128. Key_read_requests 
  129. 请求从缓存读入一个键值的次数。
  130. Key_reads 
  131. 从磁盘物理读入一个键值的次数。
  132. Key_write_requests 
  133. 请求将一个关键字块写入缓存次数。
  134. Key_writes 
  135. 将一个键值块物理写入磁盘的次数。
  136. Max_used_connections 
  137. 同时使用的连接的最大数目。
  138. Not_flushed_key_blocks 
  139. 在键缓存中已经改变但是还没被清空到磁盘上的键块。
  140. Not_flushed_delayed_rows 
  141. 在INSERT DELAY队列中等待写入的行的数量。
  142. Open_tables 
  143. 打开表的数量。
  144. Open_files 
  145. 打开文件的数量。
  146. Open_streams 
  147. 打开流的数量(主要用于日志记载)
  148. Opened_tables 
  149. 已经打开的表的数量。
  150. Questions 
  151. 发往服务器的查询的数量。
  152. Slow_queries 
  153. 要花超过long_query_time时间的查询数量。
  154. Threads_connected 
  155. 当前打开的连接的数量。
  156. Threads_running 
  157. 不在睡眠的线程数量。
  158. Uptime 
  159. 服务器工作了多少秒。 
  160. 九、开源监控软件
  161. 1,RRDTool 
  162. 2,Nagios 
  163. 3,MRTG 
  164. 4,Cacti 
  165. 1.系统mysql的进程数
  166. ps -ef | grep "mysql" | grep -v "grep" | wc –l
  167. 2.Slave_running
  168. mysql > show status like ‘Slave_running‘;
  169. 如果系统有一个从复***务器,这个值指明了从服务器的健康度
  170. 3.Threads_connected
  171. mysql > show status like ‘Threads_connected‘;
  172. 当前客户端已连接的数量。这个值会少于预设的值,但你也能监视到这个值较大,这可保证客户端是处在活跃状态。
  173. 4.Threads_running
  174. mysql 
  175. > show status like ‘Threads_running‘;
  176. 如果数据库超负荷了,你将会得到一个正在(查询的语句持续)增长的数值。这个值也可以少于预先设定的值。这个值在很短的时间内超过限定值是没问题的。当Threads_running值超过预设值时并且该值在5秒内没有回落时, 
  177. 要同时监视其他的一些值。
  178. 5.Aborted_clients
  179. mysql > show status like ‘Aborted_clients‘;
  180. 客户端被异常中断的数值,即连接到mysql服务器的客户端没有正常地断开或关闭。对于一些应用程序是没有影响的,但对于另一些应用程序可能你要跟踪该值,因为异常中断连接可能表明了一些应用程序有问题。
  181. 6.Questions
  182. mysql> show status like ‘Questions‘;
  183. 每秒钟获得的查询数量,也可以是全部查询的数量,根据你输入不同的命令会得到你想要的不同的值。
  184. 7.Handler_*
  185. mysql> show status like ‘Handler_%‘;
  186. 如果你想监视底层(low-level)数据库负载,这些值是值得去跟踪的。
  187. 如果Handler_read_rnd_next值相对于你认为是正常值相差悬殊,可能会告诉你需要优化或索引出问题了。Handler_rollback表明事务被回滚的查询数量。你可能想调查一下原因。
  188. 8.Opened_tables
  189. mysql> 
  190. show status like ‘Opened_tables‘;
  191. 表缓存没有命中的数量。如果该值很大,你可能需要增加table_cache的数值。典型地,你可能想要这个值每秒打开的表数量少于1或2。
  192. 9.Select_full_join
  193. mysql> show status like ‘Select_full_join‘;
  194. 没有主键(key)联合(Join)的执行。该值可能是零。这是捕获开发错误的好方法,因为一些这样的查询可能降低系统的性能
  195. 10.Select_scan
  196. mysql> show status like ‘Select_scan‘;
  197. 执行全表搜索查询的数量。在某些情况下是没问题的,但占总查询数量该比值应该是常量(即Select_scan/总查询数量商应该是常数)。如果你发现该值持续增长,说明需要优化,缺乏必要的索引或其他问题。
  198. 11.Slow_queries
  199. mysql> 
  200. show status like ‘Slow_queries‘;
  201. 超过该值(--long-query-time)的查询数量,或没有使用索引查询数量。对于全部查询会有小的冲突。如果该值增长,表明系统有性能问题。
  202. 12.Threads_created
  203. mysql> show status like ‘Threads_created‘;
  204. 该值应该是低的。较高的值可能意味着你需要增加thread_cache的数值,或你遇到了持续增加的连接,表明了潜在的问题。
  205. 13.客户端连接进程数
  206. shell> mysqladmin processlist
  207. mysql> show processlist;
  208. 你可以通过使用其他的统计信息得到已连接线程数量和正在运行线程的数量,检查正在运行的查询花了多长时间是一个好主意。如果有一些长时间的查询,管理员可以被通知。你可能也想了解多少个查询是在"Locked"的状态—---该值作为正在运行的查询不被计算在内而是作为非活跃的。一个用户正在等待一个数据库响应。
  209. 14.innodb状态
  210. mysql> show engine innodb status\G;
  211. 该语句产生很多信息,从中你可以得到你感兴趣的。首先你要检查的就是“从最近的XX秒计算出来的每秒的平均负载”。
  212. (1)Pending 
  213. normal aio reads: 该值是innodb 
  214. io请求查询的大小(size)。如果该值大到超过了10—20,你可能有一些瓶颈。
  215. (2)reads/s, 
  216. avg bytes/read, writes/s, 
  217. fsyncs/s:这些值是io统计。对于reads/writes大值意味着io子系统正在被装载。适当的值取决于你系统的配置。
  218. (3)Buffer 
  219. pool hit rate:这个命中率非常依赖于你的应用程序。当你觉得有问题时请检查你的命中率
  220. (4)inserts/s, 
  221. updates/s, deletes/s, 
  222. reads/s:有一些Innodb的底层操作。你可以用这些值检查你的负载情况查看是否是期待的数值范围。
  223. 15.主机性能状态
  224. shell> uptime
  225. 16.CPU使用率
  226. shell> top
  227. shell> vmstat
  228. 17.磁盘IO
  229. shell> vmstat
  230. shell> iostat
  231. 18.swap进出量(内存)
  232. shell> free
  233. 19.MySQL错误日志
  234. 在服务器正常完成初始化后,什么都不会写到错误日志中,因此任何在该日志中的信息都要引起管理员的注意。
  235. 20.InnoDB表空间信息
  236. InnoDB仅有的危险情况就是表空间填满----日志不会填满。检查的最好方式就是:show 
  237. table status;你可以用任何InnoDB表来监视InnoDB表的剩余空间。
  238. 21.QPS每秒Query量
  239. QPS = Questions(or Queries) / seconds
  240. mysql > show /* global */ status like ‘Question‘;
  241. 22.TPS(每秒事务量)
  242. TPS = (Com_commit + Com_rollback) / seconds
  243. mysql > show status like ‘Com_commit‘;
  244. mysql > show status like ‘Com_rollback‘;
  245. 23.key 
  246. Buffer 命中率
  247. key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%
  248. key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%
  249. mysql> show status like ‘Key%‘;
  250. 24.InnoDB 
  251. Buffer命中率
  252. Innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%
  253. mysql> show status like ‘innodb_buffer_pool_read%‘;
  254. 25.Query 
  255. Cache命中率
  256. Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;
  257. mysql> show status like ‘Qcache%‘;
  258. 26.Table 
  259. Cache状态量
  260. mysql> show status like ‘open%‘;
  261. 27.Thread 
  262. Cache 命中率
  263. Thread_cache_hits = (1 - Threads_created / connections ) * 100%
  264. mysql> show status like ‘Thread%‘;
  265. mysql> show status like ‘Connections‘;
  266. 28.锁定状态
  267. mysql> show status like ‘%lock%‘;
  268. 29.复制延时量
  269. mysql > show slave status
  270. 30.Tmp 
  271. Table状况(临时表状况)
  272. mysql > show status like ‘Create_tmp%‘;
  273. 31.Binlog 
  274. Cache使用状况
  275. mysql > show status like ‘Binlog_cache%‘;
  276. 32.Innodb_log_waits量
  277. mysql > show status like ‘innodb_log_waits‘;
  278. http://www.open-open.com/lib/view/open1328776066546.html

 

mysql性能监控相关

标签:

人气教程排行