• (转载)网站瓶颈发现和解决


    网站速度定位

    总体思想:

    1、找瓶颈法。瓶子的颈部(口子)大小决定了出入量,从而决定了速度。不去改善瓶颈,使劲费力气把瓶子容量扩大,

    速度也不会提高。不是什么都去改善就是好的。比如改善带宽,加缓存之类的。但是这些不是目前系统的瓶颈,改善

    了也不会发生质的飞跃。所以找到瓶颈所在。

    与哲学思想中的:找主要矛盾,解决主要矛盾,问题才会解决的思想类似。放到技术中叫做系统瓶颈。突破系统瓶颈。

    找到当前的主要矛盾是重要的。去研究代码,获取几毫秒的性能,不如去看看数据库,干掉一条执行超过1000毫秒的语句。

    遇到速度慢的问题,就想到“多多益善”的思维。把该加的先加了:把数据生成文件缓存啊,数据库加索引,硬件方面内存加,带宽加。

    这种加,确实有好处,会改善,但没定位到瓶颈。就不会解决主要矛盾的。

    系统的某方面瓶颈没有突破,其他带宽,内存再怎么加,做了观察一段时间后,就发现心里很纳闷了:确实是快那么点点了,但怎么还是没感觉到明显的快哦。有时候反而跟以前一样的慢。很郁闷啊。



    2、使用排除法查找问题。这样将范围逐步缩小。避免胡乱猜测。胡乱去测验。导致浪费精力。

    大体思路:前端(排查是不是带宽问题,图片、js文件加载是否是瓶颈)》》侦测php执行速度(这一步把问题可以更加精准定位到数据库层面去)》》数据库是否为瓶颈

    3、以数据或者理论作为支撑。如果靠猜测,以往经验式的判断方式去改善,只会导致做无用功。以统计数据作为支撑比较靠谱。

    因为网站运行是动态的,时常速度很快,时常速度稍微慢。今天有人反应昨天慢,等到技术人员去实际操作一下子,发现"速度还挺不错啊",无法还原当时的情况出来。

    比如,sql执行时长,php脚本执行速度统计。收集大量在生成环境中统计到的数据。就能很快定位问题所在。

    依靠理论作为支撑:比如了解http的请求原理,需要响应,浏览器没有得到服务器的响应(也就是php压根就没执行完毕,所以没到发送html给浏览器这一步),这种情况在浏览器左下角有明显的特点,显示:正在等待响应。

    这种一看,大体可以排除网络带宽的原因。这种判断表面看是基于经验式(经验不可靠,因为网站是动态变化的),实际上是基于有理论基础支持的。



    执行步骤如下:


    第一步,编写脚本统计出php执行时长。通过这一步把每次执行时长记录在文本文件中的方式,分析数据发现,排除了

    是带宽的原因。理由为:有些地址的php执行时长到3-4s。需要这个时长才能发html结果给浏览器。可想而知速度。于

    是瓶颈不在带宽上。假设:php执行的时长是0.xs级别。那么在浏览器看到需要4秒才能看到页面,那可以排除是php执

    行问题。将瓶颈定位在带宽或其他原因上。

    第二步,进一步编写脚本,侦测是否为数据库速度问题。

    具体步骤如下


    1、开启mysql服务器的慢查询日志记录。


    2、自己编写脚本,将每条执行的sql用了多长时间,记录到文本文件中去。

  • 相关阅读:
    mysql中事务隔离级别可重复读说明
    Zookeeper安装与启动
    PHP闭包之bind和bindTo
    使用WebPack打包
    用Python下载momentum中的精美壁纸
    supervisor使用
    Shell脚本:RedisKey批量删除
    使用Certbot配置站点的https
    PHPfmt代码格式化
    创建用私钥签名的证书
  • 原文地址:https://www.cnblogs.com/shangzekai/p/4378683.html
Copyright © 2020-2023  润新知