网站性能优化

基本概念

  1、网站吞吐量:TPS/每秒的事务数,QPS/每秒的查询数,HPS/每秒的HTTP请求数

  2、服务器性能指标:系统负载,内存使用,CPU使用,磁盘使用以及网络I/O等

前端优化方法

  1、减少HTTP请求:通过将多个前端资源合并成一个实现减少HTTP请求提高性能。

  2、设置响应头字段是部分及时性要求不高的静态资源在缓存在前端浏览器中。

  3、启用传输压缩。例如gzip。

  4、合理的布局前端代码结构,css,html,js代码的顺寻由上至下。

  5、对于一些可公开访问的资源,可以通过设置其他的域名的方式减少传输过程中的cookie。

  6、使用CDN分发,将静态资源部署在各大网络运营商的机房中,这样子用户就可以非常快的就近获得资源。

  7、使用反向代理将热门内容,静态资源或者一些可被缓存的计算结果缓存在代理服务器中。通过配置代理服务器可以实现代理服务器直接转发被缓存的资源。

后端优化方法

  1、使应用服务器实现无状态,将会话信息存储在缓存服务器集群中,这样每台应用服务器之间就可以被相同的对待。就可以通过增加服务器数量的方法水平扩展整个系统的吞吐量。

  2、选择合理的缓存策略,只缓存对于业务而言及时性要求不高,且访问量大的数据,选取合适的缓存命中算法,减少增加服务器或者服务器宕机对于应用的影响。

  3、缓存防御策略,将可预见的但是并不存在的数据缓存下来,防止恶意攻击连续对缓存发起该资源的请求导致最终请求压在数据库上面。

  4、使用消息队列实现网站的异步处理。对于某些接口调用需要花费很长的时间,可以通过一个消息队列来实现生产者消费者模式,每一个模块既可以是消费者也可以是生产者。但是消息队列也有一定的确定,需要增加额外的机制来保证事务性,例如通过一张表来记录消息的消费记录和消费结果来实现事务最终的一致。

  5、对各种资源费复用来减少创建资源时的时间和性能开销,例如使用数据库连接池和线程池。

  6、提高代码逻辑和代码中数据的数据结构的合理性以及优化算法提高应用程序的处理时间。

  7、硬件上采用更加优秀(快)的硬件。

总结

  上面写的哪些优化方法对于一个中大型的网站而言,算是一个非常普遍的解决方案了,但是落实到不同的业务,会有自己的实现方式,这里的实现方式指的是不同的方案组合和对应的技术实现方式。举个形象点的例子,有些网站不需要前端再加一个CDN,有些网站不需要加缓存服务器集群,有些业务使用JMQ实现消息队列,有些使用redis缓存消息实现消息队列,对于事务性的保证,也不一定通过数据库锁或者线程同步来实现,也可以通过增加额外的存储结构来记录锁,锁只是一种概念,我们可以选择编程语言自带的方式也可以用数据结构去描述一把锁。

转载于:https://www.cnblogs.com/firstdream/p/7781775.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA-容器(2)-Collection

(基于JDK1.8源码分析) 一,Collection 所有实现Collection接口的类原则上应该提供两种构造函数: 【1】无参构造-创建一个空的容器 【2】有参构造-创建一个新的Collection,这个新的Collection和传入的Collection具有相同…

软件测试工具LoadRunner中如何定义SLA?--转载

软件测试工具LoadRunner中如何定义SLA? 浏览:2242|更新:2017-04-09 22:50SLA 是您为负载测试场景定义的具体目标。Analysis 将这些目标与软件测试工具LoadRunner在运行过程中收集和存储的性能相关数据进行比较,然后确定目标的 SLA…

最近阅读20171106

java面试题 线上服务内存OOM问题定位三板斧 JVM的GC ROOTS存在于那些地方 mysql innodb怎样做查询优化 ----未阅读 JAVA CAS原理深度分析----未阅读 转载于:https://www.cnblogs.com/Tpf386/p/7793248.html

LinuxI2C驱动--从两个访问eeprom的例子开始

本小节介绍两个在linux应用层访问eeprom的方法,并给出示例代码方便大家理解。第一个方法是通过sysfs文件系统对eeprom进行访问,第二个方法是通过eeprom的设备文件进行访问。这两个方法分别对应了i2c设备驱动的两个不同的实现,在后面的小结会详…

Cookie详解整理

1.Cookie的诞生 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的。Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用。比如判断用户是否是第一次访问网站。目前最新的规范是RFC 6265,它是一个由浏览器服务器共同…

骁龙820和KryoCPU:异构计算与定制计算的作用 【转】

本文转载自:https://www.douban.com/group/topic/89037625/ Qualcomm骁龙820处理器专为提供创新用户体验的顶级移动终端而设计。为实现消费者所期望的创新,移动处理器必须满足日益增长的计算需求且降低功耗,同时还要拥有比以往更低的温度&…

LNMP

准备工作 建立一个软件包目录存放 mkdir -p /usr/local/src/ 清理已经安装包 rpm -e httpd rpm -e mysql rpm -e php yum -y remove httpd yum -y remove mysql yum -y remove php #搜索apache包 rpm -qa http* #强制卸载apache包 rpm -e --nodeps 查询出来的文件名 #检查是否卸…

算法复习——计算几何基础(zoj1081)

题目: Statement of the Problem Several drawing applications allow us to draw polygons and almost all of them allow us to fill them with some color. The task of filling a polygon reduces to knowing which points are inside it, so programmers have …

亚马逊Rekognition发布针对人脸检测、分析和识别功能的多项更新

今天亚马逊Rekognition针对人脸检测、分析和识别功能推出了一系列更新。这些更新将为用户带来多项能力的改今,包括从图像中检测出更多人脸、执行更高精度的人脸匹配以及获得图像中的人脸得到更准确的年龄、性别和情感属性。Amazon Rekognition的客户可以从今天开始使…

(转)CentOS分区操作详解

CentOS分区操作详解 原文:http://blog.csdn.net/yonggeit/article/details/77924393 磁盘分区 分区格式的两种选择:MBR和GPT 分区命令: parted的操作都是实时生效的,小心使用,主要是用于大于2T硬盘,支持MBR…

linux驱动中地址空间转换

在linux kernel 中,物理地址是不能直接使用的,必须通过转换才可以。转换分为两种, 静态和动态。 静态就是下面那种,不过,静态的地址转换,还需要在kernel 初始化的时候作映射。 动态映射是使用 ioremap 函…

getClass()和.class的区别

getClass()和.class的区别 在学习反射时想到了这个问题,.getClass()和.class有没有什么区别? 当然,最明显的区别就是.getClass()是一个对象实例的方法,只有对象实例才有这个方法,具体的类是没有的。类的Class类实例是通…

华为敏捷 DevOps 实践:产品经理如何开好敏捷回顾会议

开篇小故事:前几年,一本叫《沉思录》的书在国内突然曝光度很多,因为前某国家领导人“摆案头,读百遍”。《沉思录》是古罗马皇帝马可奥勒写给自己的书,内容大部分是在鞍马劳顿中写的。其实有一句“我们所听到的不过只是…

斐波那契数列的鬼畜的性质

斐波那契数列的鬼畜的性质 斐波那契数列定理1 \(gcd(f[i],f[i1])1\) 利用辗转相减法 证明:\(gcd(f[i],f[i1])\)\(gcd(f[i1]-f[i],f[i])\)\(gcd(f[i-1],f[i])\)\(....\)\(gcd(f[1],f[2])1\) 斐波那契数列定理2 \(f[mn]f[m-1]f[n]f[m]f[n1]\) 证明:\(f[mn]…

xml与java对象转换 -- XStreamAlias

XStreamAlias使用 一、 特点: 简化的API; 无映射文件; 高性能,低内存占用; 整洁的XML; 不需要修改对象;支持内部私有字段,不需要setter/getter方法 提供序列化接口; 自定义转换类型策略; XStream的优点很多,但是也有一些小bug,比如在定义别名中的下划线…

windows下安装zabbix_agent

Server端在linux系统上,server端版本为2.2.6,是以前就装好的已经跑了很久的稳定版。目前的需求是要将新业务的服务器添加到该监控队列。而这些服务器是windows系统。 第一次下载了最新版的zabbix_agent for windows。按照正常程序安装完成后,…

JS和Jquery获取和修改label的值

获取值: label标签在JS和Jquery中使用不能像其他标签一样用value获取它的值: var labeldocument.getElementById("id");var valuelabel.value;var value$("#id").val();可以这样:JS: var labeldocument.getElementById(&…

Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc)

本篇文章主要介绍了"Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc)",主要涉及到Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc)方面的内容,对于Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc)感…