【案例】说说time_zone 带来的性能问题

一 背景  
   相信大家对time_zone参数的意义和使用方式并不陌生,MySQL 通过设置 time_zone来控制时区,不过本文从另外一个角度来了解该参数对系统性能的影响。认识到这个问题的起因是因为数据库出现usr cpu 增大,load 上升 ,thread running陡高等现象。还有另外一个同事发现的问题一个应用接口调用分布到不同的机器,但是性能存在差异。

二 分析过程
2.1 timezone的参数设置
我们常用的time_zone 有两种设置方式  SYSTEM  和UTC具体的时区比如+08:00,设置为SYSTEM表示数据库系统的时区和os 系统的时区一致。对于国内而言 我们一般选择东八区也即'+08:00' ,更加具体详细的信息请移步官方手册 time_zone 
2.2 性能压测

为了直观表现性能差异,这里使用mysqlslap 对同一个实例进行压测:80个并发会话 执行1000w次 select now()查询,得到不同参数模式下,消耗的时间。

[3306-RW-2Inst@rac1 ~]

$mysql -uroot -e 'select @@time_zone' 

+-------------+

| @@time_zone |

+-------------+

| SYSTEM |

+-------------+

[3306-RW-2Inst@rac1 ~]

$mysqlslap --no-defaults -uroot --create-schema=test -S/u01/my3306/run/mysql.sock --number-of-queries=10000000 --concurrency=80 ' --query=select now()' 

Benchmark

        Average number of seconds to run all queries: 47.706 seconds

        Minimum number of seconds to run all queries: 47.706 seconds

        Maximum number of seconds to run all queries: 47.706 seconds

        Number of clients running queries: 80

        Average number of queries per client: 125000

结果说明 time_zone设置为SYSTEM时,80个并发会话查询1000w次 需要47.7秒。

[3306-RW-2Inst@rac1 ~]

$mysql -uroot -e 'select @@time_zone' 

+-------------+

| @@time_zone |

+-------------+

| +08:00 |

+-------------+

[3306-RW-2Inst@rac1 ~]

$mysqlslap --no-defaults -uroot --create-schema=test -S/u01/my3306/run/mysql.sock --number-of-queries=10000000 --concurrency=80 '--query=select now()' 

Benchmark

        Average number of seconds to run all queries: 30.039 seconds

        Minimum number of seconds to run all queries: 30.039 seconds

        Maximum number of seconds to run all queries: 30.039 seconds

        Number of clients running queries: 80

        Average number of queries per client: 125000

结果说明 time_zone设置为+08:00时,80个并发会话查询1000w次 需要30秒,性能明显比前者更好,有30%+左右的提升
2.3 使用pt-pmp工具分析 
设置SYSTEM时 MySQL 比设置为+08:00 模式多了 一层时间转化的函数调用,__tz_convert,Time_zone_system::gmt_sec_to_TIME,gmt_sec_to_TIME,set_datetime导致cpu 使用率上升 ,sql执行时间变长 引发一些列的性能风暴效应。
$pt-pmp -p 150842
Sun Oct 11 16:10:05 CST 2015
61 __lll_lock_wait_private,_L_lock_2163,__tz_convert,Time_zone_system::gmt_sec_to_TIME,gmt_sec_to_TIME,set_datetime,Item_func_now::fix_length_and_dec,Item_func::fix_fields,setup_fields,JOIN::prepare,mysql_prepare_select,mysql_select,handle_select,execute_sqlcom_select,mysql_execute_command,mysql_parse,dispatch_command,do_handle_one_connection,handle_one_connection,start_thread,clone
搜索MySQL bugs 查看到一个bug  中有一样的现象,设置为非系统默认的时区的性能比默认的高很多。

time_zone='SYSTEM'的pt-pmp 分析结果

time_zone='+08:00'的pt-pmp 分析结果


三 结论
 
  1  任何性能现象细致入微之后,满满的都是问题,需要细心深挖,探究问题本质。
  2  推荐大家将系统的time_zone修改为非默认值 ,比如+08:00 ,避免性能隐患。

时间: 2024-08-31 17:05:21

【案例】说说time_zone 带来的性能问题的相关文章

盘点:9个案例看云计算带来的生活变化

本文讲的是盘点:9个案例看云计算带来的生活变化2015年8月19日,国务院通过<关于促进大数据发展的行动纲要>,在全社会引起广泛影响. 科技技改变生活,云计算也向政务.民生领域逐渐延伸.整个2015年,各地方政府.各民生领域拥抱云计算的速度明显在加快. 基于大数据计算能力,便可以预测出未来1小时内的路况,一个账号登陆就可以实现全校教学信息共享,在手机上就可以查看台风的实时路径--我们梳理了各大云计算厂商的9个典型案例,窥一斑而见全豹,看看拥抱云计算,正在给我们的生活带来哪些不一样的变化? 1.

如何解决网站大规模并发访问带来的性能下降问题

摘要: 再过半个月就2013年的春运就要来临,每年外地打工的人们都会因为订票而烦恼.特别是网上订票,对12306提供给的网上订票系统会有各种看法,从去年的年春节,铁道部推出12306网站, 再过半个月就2013年的春运就要来临,每年外地打工的人们都会因为订票而烦恼.特别是网上订票,对12306提供给的网上订票系统会有各种看法,从去年的年春节,铁道部推出12306网站,实行网络实名购票,每一个返乡人原以为能买着一张回家的火车票,但结果还是大失所望.在去年,7天内,12306网站访问用户已占全球互联

【案例】BNL算法导致性能下降一则

 前面介绍了BNL算法,相信不少人会认为BNL会有利于数据库性能的提升(我也是这么认为滴),本文讲述一例生产上因为升级使用BNL 算法导致性能下降的案例.一 背景 生产上将一实例MySQL版本从5.5升级到5.6,一条sql在5.5版本的MySQL执行只需要零点几秒,而在5.6 版本的环境下则需要10多秒,这个问题定位是5.6的优化器策略与5.5不同,导致了SQL执行计划发生变化,进而导致了sql的性能急剧下降.二 案例 1) 5.5的优化器策略: index_merge=on,index_me

图像至关重要!但如何化解由在线图像带来的性能与复杂性挑战呢?

"一图抵千言"这句话由来已久.人类是一种非常视觉化的生物,从婴儿时期开始,图像就一直帮助我们学习.提高注意力以及解释难以理解的事物.在当前这样一个电子商务与社交媒体盛行的环境下,图像变得更为重要,因为几乎没人愿意访问纯文本网站或应用程序.大量研究已经证明:更多.更优质的图像能够提高用户参与度以及转化率.例如,Forrester[1]发现用户对网站与应用中内容及图像丰富度的预期增长了75%.此外,配上更优质照片的eBay商品,其售出的概率将会增加5%[2]:而搭配照片的Facebook帖

page fault带来的性能问题

Linux进程如何访问内存 Linux下,进程并不是直接访问物理内存,而是通过内存管理单元(MMU)来访问内存资源.原因后面会讲到. 为什么需要虚拟内存地址空间 假设某个进程需要4MB的空间,内存假设是1MB的,如果进程直接使用物理地址,这个进程会因为内存不足跑不起来.既然进程不是直接访问物理内存,那么进程中涉及的内存地址当然也不是物理内存地址.而是虚拟的内存地址,虚拟的内存地址和物理的内存地址之间保持一种映射关系,这种关系由MMU进行管理.每个进程都有自己独立的虚拟地址空间. 什么是MMU M

asp.net中WCF 客户端关闭带来的性能分析

这里的WCF异步调用是指单向非可靠异步调用,也就是你不知道调用是否成功,适用于性能高于可靠性的场合. 之前发布过一篇随笔WCF异步调用实战:OneWay+Asynchronous Operation,通过WCF服务端"单向(One-way)消息交换"+WCF客户端"异步信道调用(Asynchronous Operation)"实现快速的WCF异步调用. 但是,使用了一段时间,发现还是有些慢.今天实测了一下,调用代码如下:  代码如下 复制代码 var client

【MySQL】时间类型存储格式选择

一  前言  昨天在给开发同学做数据库设计规范分享的时候,讲到时间字段常用的有三个选择datetime.timestamp.int,应该使用什么类型的合适?本文通过三种类型的各个维度来分析,声明:本文没有具体的结论,但是会给一个推荐使用方式,需要使用者结合自己的业务场景来具体选择. 二 分析int型:存储长度: 4字节表示范围: date('Y-m-d H:i:s', 4294967295) 最大到 2106-02-07 14:28:15 ,如果一个企业活过这么久,就需要数据库考虑 bigint

数据库案例集锦 - 开发者的《如来神掌》

背景 「剑魔独孤求败,纵横江湖三十馀载,杀尽仇寇,败尽英雄,天下更无抗手,无可柰何,惟隐居深谷,以雕为友.呜呼,生平求一敌手而不可得,诚寂寥难堪也.」 剑冢中,埋的是剑魔独孤求败毕生几个阶段中用过的几柄剑: 利剑无意:第一柄是青光闪闪的利剑,凌厉刚猛,无坚不摧,弱冠前以之与河朔群雄争锋. 软剑无常:第二柄是紫薇软剑,三十岁前所用,误伤义士不祥,悔恨不已,乃弃之深谷. 重剑无锋:第三柄是玄铁重剑,重剑无锋,大巧不工,四十岁之前恃之横行天下. 木剑无俦:第四柄是已腐朽的木剑. 无剑无招:四十岁后,不

JVM性能优化,Java的伸缩性

很多程序员在解决JVM性能问题的时候,花开了很多时间去调优应用程序级别的性能瓶颈,当你读完这本系列文章之后你会发现我可能更加系统地看待这类的问题.我说过JVM的自身技术限制了Java企业级应用的伸缩性.首先我们先列举一些主导因素. l 主流的硬件服务器提供了大量的内存 l 分布式系统有大量内存的需求,而且该需求在持续增长 l 一个普通Java应用程序所持有的对空间大概在1GB~4GB,这远远低于一个硬件服务器的内存管理能力以及一个分布式应用程序的内存需求量.这被称之为Java内存墙,如下图所示(