我们先来看第一个阶段,MySQL慢的诊断思路,一般我们会从三个方向来做:
第一个方向是MySQL内部的观测
第二个方向是外部资源的观测
第三个方向是外部需求的改造
11 MySQL 内部观测
我们来看MySQL内部的观测,常用的观测手段是这样的,从上往下看,第一部分是Processlist,看一下哪个SQL压力不太正常,第二步是explain,解释一下它的执行计划,第三步我们要做Profilling,如果这个SQL能再执行一次的话, 就做一个Profilling,然后高级的DBA会直接动用performance_schema ,MySQL 57 以后直接动用sys_schema,sys_schema是一个视图,里面有便捷的各类信息,帮助大家来诊断性能。再高级一点,我们会动用innodb_metrics进行一个对引擎的诊断。
除了这些手段以外,大家还提出了一些乱七八糟的手段,我就不列在这了,这些是常规的一个MySQL的内部的状态观测的思路。除了这些以外,MySQL还陆陆续续提供了一些暴露自己状态的方案,但是这些方案并没有在实践中形成套路,原因是学习成本比较高。
12 外部资源观测
外部资源观测这部分,我引用了一篇文章,这篇文章的二维码我贴在上面了。这篇文章是国外的一个神写的,标题是:60秒的快速巡检,我们来看一下它在60秒之内对服务器到底做了一个什么样的巡检。一共十条命令,这是前五条,我们一条一条来看。
1uptime,uptime告诉我们这个机器活了多久,以及它的平均的负载是多少。
2dmesg -T | tail,告诉我们系统日志里边有没有什么报错。
3vmstat 1,告诉我们虚拟内存的状态,页的换进换出有没有问题,swap有没有使用。
4 mpstat -P ALL,告诉我们CPU压力在各个核上是不是均匀的。
5pidstat 1,告诉我们各个进程的对资源的占用大概是什么样子。
我们来看一下后五条:
首先是iostat-xz 1,查看IO的问题,然后是free-m内存使用率,之后两个sar,按设备网卡设备的维度,看一下网络的消耗状态,以及总体看TCP的使用率和错误率是多少。最后一条命令top,看一下大概的进程和线程的问题。
这个就是对于外部资源的诊断,这十条命令揭示了应该去诊断哪些外部资源。
13 外部需求改造
第三个诊断思路是外部的需求改造,我在这里引用了一篇文档,这篇文档是MySQL的官方文档中的一章,这一章叫Examples of Common Queries,文档中介绍了常规的SQL怎么写, 给出了一些例子。文章的链接二维码在slide上。
我们来看一下它其中提到的一个例子。
它做的事情是从一个表里边去选取,这张表有三列,article、dealer、price,选取每个作者的最贵的商品列在结果集中,这是它的最原始的SQL,非常符合业务的写法,但是它是个关联子查询。
关联子查询成本是很贵的,所以上面的文档会教你快速地把它转成一个非关联子查询,大家可以看到中间的子查询和外边的查询之间是没有关联性的。
第三步,会教大家直接把子查询拿掉,然后转成这样一个SQL,这个就叫业务改造,前后三个SQL的成本都不一样,把关联子查询拆掉的成本,拆掉以后SQL会跑得非常好,但这个SQL已经不能良好表义了,只有在诊断到SQL成本比较高的情况下才建议大家使用这种方式。
为什么它能够把一个关联子查询拆掉呢?
这背后的原理是关系代数,所有的SQL都可以被表达成等价的关系代数式,关系代数式之间有等价关系,这个等价关系通过变换可以把关联子查询拆掉。
上面的这篇文档是一个大学的教材,它从头教了关于代数和SQL之间的关系。然后一步步推导怎么去简化这句SQL。
第一,MySQL本身提供了很多命令来观察MySQL自身的各类状态,大家从上往下检一般能检到SQL的问题或者服务器的问题。
第二,从服务器的角度,我们从巡检的脚本角度入手,服务器的资源就这几种,观测手法也就那么几种,我们把服务器的资源全部都观察一圈就可以了。
第三,如果实在搞不定,需求方一定要按照数据库容易接受的方式去写SQL,这个成本会下降的非常快,这个是常规的MySQL慢的诊断思路。
我打开你的网站花了130秒都没加载完
在最开始的30s完全花费在了网页跳转上,其中还加载了许多乱七八糟的东西,这就说明是你网站程序的问题
全国测速,江苏、广东有点问题,影响不大,服务器不用换
所以换个建站公司吧,网站做的太垃圾了
网站优化一般从这几个方面考虑:第一:最简单暴力的方式是升级服务器配置,升级cup,内存,硬盘,网络带宽,这是最简单直接的方式;但比较花钱。
那么这几样要素是怎样影响网站响应速度的呢?硬盘有个读写效率问题,如果你的网站需要读取存储在服务器上的文件等东西,那么这个磁盘io就会影响效率;内存又是如何影响的呢?内存和硬盘的影响比较类似,但内存存储的是较为及时数据,和程序联系更为紧密一点,存储处理效率
在很大因素上能直接受到影响。最后就是网络带宽了,当网络带宽较低,数据传输的效率就会被限制,即使你的服务器各方面配置很ok,那也是没办法的,就如同被限制了高消费的富豪一样,你有限范围内有钱花不出去。。
第二:分析具体瓶颈,对应解决。
如果网站用户规模较大,响应频繁,这个时候就要考虑网站本身研发的质量如何?优化相关代码,如将页面静态化,减少页面和服务端响应次数,减少服务端接口响应的数据量,去除代码中低端耗时的部分,减少数据库 *** 作,优化sql执行效率,前后端分离等等,手段非常多;这些都是在代码层面进行优化。 1、本地网络问题
发现服务器速度突然变慢的时候可以先检查一下本地网速有没有问题,不要那么快怀疑是服务器的问题。ping一下百度或者其他的知名域名,看一下ping值,如果ping值很大,证明是自己电脑网速问题。
2、机房问题
如果本地电脑的网速没有问题,有可能是机房方面出现了问题,机房不能永远不会出现异常。如果机房受到攻击也会使服务器变慢,另外机房网络出现故障也会导致服务器变慢。这个时候可以联系服务商,让服务商帮忙查看一下是什么原因导致了服务器变慢。
3、电信或者网通的国际路由出现问题
当电信或者网通等宽带提供商的国际路由出现问题的时候也会导致服务器变慢,使用国外服务器的朋友可能会经常遇到。当一个节点掉包或者无法路由时,会影响到经过这个节点的用户,这些用户的服务器速度也就会变慢。这种情况不是机房原因,也不是本地电脑的原因,只能等待宽带服务商修复路由。
4、占用资源或者服务器中毒
当服务器资源不足,经常出现运行软件占用CPU或者占用内存时也会导致服务器速度变慢,遇到这种情况可以优化一下系统,不要运行太多没必要的软件,经常出现占用资源的情况建议及时升级服务器配置。另外,服务器受攻击的时候也会导致速度变慢,所以选择服务器的时候建议选择设有硬件防火墙的机房,做好服务器的基本安全防护工作。
针对以上四个可能原因要一个一个进行排查。如果惠普服务器在自检时速度较慢,这可能是由于多种因素引起的,下面列出一些可能的原因以供参考:
1 服务器自检功能设定有误:在服务器开机时进行自检是很正常的,但是自检功能的设定如果有误,会导致自检时间过长。可以通过查看服务器 BIOS 设置中的自检设定,调整设定项,来解决这个问题。
2 硬件故障:自检过程中,如果服务器检测到硬件故障,会暂停自检并发出警报。在这种情况下,服务器自检时间会比较长。可以检查服务器硬件,如 CPU、内存、硬盘、电源等是否正常,及时解决故障。
3 BIOS 问题:BIOS 是服务器的基本输入输出系统,如果 BIOS 设置不正确,也会导致自检时间过长。可以尝试更新 BIOS 固件,或者重新配置 BIOS 的设置项。
4 健康监测功能:惠普服务器通常会对硬件进行健康监测,以确保服务器能够长时间稳定地运行。在自检过程中,会对硬件进行测试,健康监测功能可能会导致自检时间延长。
总之,如果惠普服务器自检时间过长,需要先确认自检功能设定是否正确,然后检查硬件是否正常,最后可以尝试更新或者重新配置 BIOS 设置,或者考虑关闭健康监测功能。如果问题依然存在,可以联系厂商技术支持寻求帮助。你先把设备类型都改成无,这样计算机启动的时候就不去检测了,还有就是改动一下你的注册表HKEY_CURRENT_USER\Control Panel\Desktop里面的AutoEndTasks为1 HungAppTimeout为200或者100 MenuShowDelay设为0 WaitToKillAppTimeout设为1000或者在少些,这样你的计算机就会比原前要启动的快30%还有就是显卡过底也运行起来有些慢,主要是你没吧计算机优化
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)