百度SEO技术

您当前的位置: 首页> 百度SEO技术> 全网详细的网站性能优化手段

全网详细的网站性能优化手段

发表日期:2020-05-12 14:33:00

性能测试是性能优化的前提,也是性能优化结果的检验和测量标准。温馨提示:本文内容有点长,请耐心阅读或先收集。

性能试验常用指标:

网站三维性能优化

减少HTTP请求的主要方法是合并CSS、JS和图片(在页面引用中使用CSS offset)

通过在HTTP头中设置cache控件和expires属性。静态资源更新不会直接更新文件的内容,而是通过更改文件名。更新讲台资源时使用逐卷更新。

Gzip压缩用于压缩服务器端的文件,而对浏览器端的文件进行解压缩可以减少通信传输的数据量。但是这种方法会对服务器产生一定的压力,在服务器资源低、好、不足的情况下应该考虑。

浏览器只有在下载完所有CSS之后才会呈现页面,因此的方法是将CSS放在页面的顶部;而JS则相反(如果用于页面解析的JS仍然在顶部)。

例如,当用户登录时,可以认为用户的登录信息使用***将登录信息和用户的相关信息存储在ThreadLocal中。

CDN的本质是把资源放在离用户近的地方。CDN可以缓存的静态资源通常是静态资源,如图片、文件、CSS、JS脚本和静态web页面。

反向代理服务器有两种用途:

后台性能优化的定律是:优先使用缓存来优化性能。

缓存的本质是一个内存哈希表。数据作为一对键值键值对存储在内存哈希表中。主要用户存储的数据读写比高,变化小。网站数据通常遵循“28定律”,即80%的访问量落在20%的数据上。因此,缓存20%的数据可以提高系统性能。

合理使用cache对提高系统性能有许多优点,但不合理使用cache会成为系统的负担甚至风险。缓存滥用的三个案例如下:

数据的读写比至少为2:1或更高,即对缓存写一次,在数据更新前读写至少两次,所以缓存是有意义的。在实际操作中,这一比例可能更高。

如果应用系统没有访问数据的热点,不遵循28定律,即大多数数据访问不集中在一小部分数据中,那么缓存就没有意义,因为大多数数据没有被再次访问,已经被挤出缓存。

写入缓存的数据应该能够在一定时间内容忍数据不一致。一般来说,设置缓存数据的过期时间(固定值+一定范围内的随机值)。如果不能容忍数据不一致,则在更新数据时必须删除相应的缓存(思考:为什么不更新缓存),但这种情况仅适用于读写比非常高的情况。

缓存雪崩可以简单地理解为:由于原始缓存的失败,新的缓存还没有达到期限(例如,我们在设置缓存时使用了相同的过期时间,并且有很大一部分缓存同时过期)。所有需要访问缓存的请求都要查询数据库,这给数据库的CPU和内存带来了巨大的压力,严重的会导致数据库宕机。从而形成一系列的连锁反应,整个体系崩溃。

解决这些问题有三种方法:

① 锁定队列。一般的原则是在从数据库获取数据时锁定和排队。这种方法只适用于低并发的情况。

② 在原始故障时间上添加一个合理的随机值(0-5分钟)。分布式场景中常见的方式(单机可以)。

③ 标记缓存并在缓存失败后更新缓存数据。

缓存渗透是指用户对数据的查询。如果数据库中没有数据,则缓存中将没有数据。这样,当用户查询时,就无法在缓存中找到它。每次,它们都必须再次到数据库进行查询,然后返回null(相当于两个无用的查询)。

① 使用布隆过滤器过滤。此方法仅用于查询不可能的数据。

② 缓存不存在的数据。实践:设定一个较短的到期时间,比如5分钟。

热数据存储在高速缓存中,高速缓存系统使用某种算法过滤掉热数据。在高速缓存数据的重建过程中,系统的性能和数据库的负载都不是很好。在缓存系统启动时加载热数据的方法很多。这种缓存预加载方法称为缓存预加载热。对于某些元数据,例如省和市列表、类别信息,可以在启动数据库中加载所有数据。

分布式缓存是指将缓存部署在由多台服务器组成的集群中,以集群模式提供缓存服务。有两种架构模式:

① jbosscache作为需要更新和同步的分布式缓存的代表(在所有服务器中保存相同的缓存数据)。

② 以Memcache为代表的分布式cache互不通信(应用程序可以通过一致的hash和其他路由算法选择cache服务器来访问远程数据,从而方便地扩展其容量并具有良好的可扩展性)。

使用异步操作可以大大提高网站的性能,使用两种异步场景:高并发和微服务;

① 在高并发性的情况下,用户的请求数据直接写入数据库,而不使用消息队列。在高并发的情况下,会对数据库造成一定的压力,同时会使响应延迟更加严重。消息队列的使用具有很好的削峰效果。在电子商务网站促销中,使用消息队列是一种常见的技术手段。

② 在微服务之间呼叫。当微服务流行时,有时我们调用其他系统的微服务接口来通知其他系统。我们不在乎结果。此时,我们可以使用单独的线程池异步调用其他系统的微服务,这样可以减少程序的响应时间。

在网站高并发访问的情况下,使用负载均衡技术为应用程序构建由多个服务器组成的服务器集群,可以避免由于负载压力过大而导致单个服务器响应缓慢的问题。常用的负载平衡技术如下:

① HTTP重定向负载平衡,不利于SEO,不推荐。

② DNS域名解析是负载平衡的。许多DNS服务器还支持基于位置的域名解析,它将域名解析为接近用户地理位置的服务器地址,这样可以加快访问速度。大公司常用的方法。

③ 反向代理负载平衡(应用层负载平衡),常见产品:nginx,反向代理服务器的性能可能成为瓶颈。

④ IP负载均衡是在内核进程中分布数据的一种负载均衡,称为反向代理负载均衡,具有较好的处理性能。网卡和带宽将成为主要瓶颈。

⑤ 数据链路层负载均衡(三角形传输模式)又称Dr(直接路由模式),也是一种针对大型网站的负载均衡方法。LVS是Linux平台上的链路层负载均衡产品。

网站的业务逻辑实现代码主要部署在应用服务器上,合理的优化代码也可以提高网站的性能。几种常见的代码优化方法:

① 合理使用多线程,参考服务器启动的线程数:[任务执行时间/(任务执行时间-IO等待时间)]CPU核数。

② 为了实现资源的重用,我们应该尽量减少那些昂贵的系统资源,如数据库连接、网络通信连接、线程和复杂对象的创建和破坏。从编程的角度来看,资源重用主要有两种方式:单实例和对象池。

③ 数据结构。hash表的基本原理在前面的缓存部分已经提到。哈希表的读写性能在很大程度上取决于哈希码的随机性,即哈希码越多,哈希表的冲突越少。目前比较好的哈希算法是time33算法。该算法的原型是:hash(I)=hash(I-1)33+STR[I]。

④ 垃圾回收,比如在JVM中,合理设置younggeneration和oldgeneration的大小,尽量减少fullgc。如果设置合理,则在整个操作期间永远不能执行fullgc。

在网站应用中,海量数据的读写会给磁盘访问带来一定的压力。虽然通过cache可以解决一些数据读取压力,但在很多情况下,磁性仍然是系统严重的瓶颈。

我相信你们都知道这两者的区别。机械硬盘驱动磁头臂将磁头驱动到指定的磁盘位置以访问数据。我不需要多说效率。相反,固态硬盘的数据存储在硅晶体上,可以长时间保存,所以可以像存储器一样随机存取,功耗较小。

B+树是一种针对磁盘存储优化的N分支排序树。它将树节点存储在磁盘中。它从根目录开始查找所需的节点号和磁盘位置,将它们加载到内存中,然后继续搜索,直到找到所需的数据。目前,大多数关系数据库使用两级索引B+树,树级为三级。

目前,许多NoSQL产品使用LSM树作为主要的数据结构。LSM树可以看作一个n级合并树。数据写入操作在内存中完成,并将创建新记录。这些数据仍然是内存中的排序树。当你需要阅读时,总是从内存中的排序树中搜索。如果找不到,请从磁盘上的排序树中搜索。

LSM树上的数据更新可以在内存中完成,无需磁盘访问,这比B+树上的更新快得多。当数据访问以写操作为主,读操作以近写入的数据为主时,使用LSM树可以大大减少磁盘访问次数,加快访问速度。

raid有很多方案,这里不详细讨论。raid的访问速度、数据可靠性和磁盘利用率如下图所示:

在HDFS中,系统在整个存储集群的多个服务器上同时读取、写入和备份数据。由此可见,它在服务器集群规模上实现了类似的raid功能,因此不需要磁盘raid。

以上都是关于整个网络详细的网站性能(架构)优化手段。这篇文章有点长,真的不容易。如果你觉得还不错的话,欢迎大家继续关注。

上一篇: 个人网站管理员如何推广网站

下一篇: 优化网站的方法有哪些

技巧精选

热门推荐

地址:浙江省杭州市余杭区联胜路10号 电话:0571-88730320 联系人:方经理

Copyright © 2015-2020 jiupei.net