大型网站优化指南:打造流畅的在线体验

大型网站

请添加图片描述

大型网站是指具有高并发、大流量、高可用性、海量数据处理能力,并能提供7*24小时不间断服务的网站。

这些网站通常面临用户分布广泛、网络情况复杂、安全环境恶劣等挑战。

同时需要快速适应市场变化和用户需求,通过渐进式的发展策略运营成大型网站。

大型网站的目标包括提供快速访问体验、高安全性、可扩展性,以及通过硬件的增加或减少来提高处理能力或降低成本。

名词解析

  • pv (page views) 即页面浏览量;用户每1次对网站中的每个网页访问均被记录1次
  • uv (unique visitor) 是指不同的、通过互联网访问、浏览这个站点的自然人
  • ip 指访问某个站点的不同IP地址的数量

通过名词定义:大型网站一般是指24小时内pv值达到百万或千万级别,uv值十万以上,ip值十万以上的网站

大型网站的问题

大并发

在同一个时间点,有大量的客户来访问我们的网站,如果访问量过大,就可能造成网站瘫痪。

解决方案: 浏览器与服务器之间采用负载均衡 ,负载均衡有硬件:NetScalerF5(效果好,价格昂贵),软件有:LVSNginx

大流量

有大量的图片,视频,flash, 这样就会对流量要求高,需要更多更大的带宽。

解决方案:

  1. 可以启用apache自带的数据压缩机制( gzip , deflate )
  2. 使用CDN(内容分发网络)服务

CDN(内容分发网络):大型网络巨头公司在全世界都分布有CDN节点(阿里、腾讯),你购买他们的服务,然后别人要访问你服务器上的数据,比如是北京网友访问,他先找北京周边的CDN服务节点,看他上面有想要的资源没有,第一次是没有的,然后北京CDN就再到你的服务器上下载内容,并保存起来、这样,下一次有人再来访问你的资源,就可以直接在CDN上读取,速度更快

注意:防止黑客的DDOS攻击:肉鸡、最有效的办法就是CDN,因为不同地区的IP访问的都是他们当地的 CDN,就算再大的流量也不怕

大存储

海量数据需要存储。大量的数据读写操作,数据库可能无法响应

大型网站架构

分层+负载均衡+集群(简单来说就是通过增加服务器来分流)。服务器与数据库之间:读写分离、主从同步

优化

使用缓存技术

  • 内存缓存:redismemcachemysql数据库(memory引擎)
  • 页面缓存: 页面静态化

页面静态化

因为很多动态网址,要访问数据库,这样造成访问速度慢,因为我们可以把动态页面,改成静态页面,从而减少对数据库的访问次数,提速。

数据库优化

表的设计满足3NF

1NF

指表的属性(列)具有原子性, 即表的列的不能再分了,不能有重复的列

2NF

所谓2NF,就是指我们的表中不能有完全重复的一条记录(行).一般情况下通过设置一个主键来搞定,而且该主键是自增的。

3NF

所谓3NF就是指,如果列的内容可以被推导(显示推导,隐式推导)出,那么我们就不要单独的用一列存放。

所有的规则都是建立在实际上面的,一般设计是遵循3NF的,有时也会反3NF比如学生表的总金额,班级的总金额

开启慢查询

#慢查询开启,后面的文件路径是可以更改的
log_slow_queries="D:/log/mysql_slow.log"  
#1定位超过多少秒为慢查询
long_query_time=1  
#上面的语句的意思是,超过1秒钟的语句,会被记录在D:/log/mysql_slow.log这个文件中
需要去里面看是那一条语句有问题# Time: 180922 18:20:16 #语句执行的时间
# User@Host: root[root] @ localhost [127.0.0.1] #数据库的用户和域名
# query_time: 执行时间   #lock_time:等待时间
# Query_time: 1.693957  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 1
SET timestamp=1537611616;
#执行的语句
delete news,news_content from news left join news_content on news.news_id = news_content.news_id whe

开启慢查询牺牲sql的执行效率

一般是项目上线前一个月开启

还有就是项目运行一年之后开启一个月

分析sql查询语句

# 在查询语句前面加上explain用于分析语句,看查询了多少条,用没有用到索引
explain SELECT * from emp where ename="odAsmf";# 查询出来的数据有
selecp_type:查询类型(slmple:简单查询)
type :all 表示全表查询
possible_keys :表示有什么索引可以用key: 当前用到的索引
rows:扫描了多条数据

根据分析结果,看如何添加索引

索引的原理:二叉树,平衡二叉树

索引的优缺点

索引的缺点:
增删改速度慢.. 
优点:
查询速度快…

索引一般使用最左匹配:就是复合索引,只能匹配最左边的

常用索引

主键索引primary
唯一索引unique用在身份证 用户名等等普通索引normal在不能用使用上面两种情况下使用

搜索功能的时候,一般where后面字段需要添加索引

数据类型的选择

  1. 小于255个用varchar(255)

  2. 大于255用text

  3. 数字用int tinyint

  4. 价格 decimal 元 int 分

  5. 手机号 varchar(20)

  6. 时间 int 时间戳

  7. md5加密 varchar(32)

一般情况,不参于运算都可以用varchar的

总结

在考虑优化大型网站的时候一般按照如下步骤优化:

1.静态资源用CDN加速

2.优化数据库

  • 表的设计要合理(满足 3NF )
  • 添加索引(主键索引|全文索引|唯一索引|普通索引|空间索引)
  • 优化 sql 语句
  • 分表( 水平分表,垂直分表),分区 mysql 数量级 千万 字段复杂 百万
  • 读写分离
  • 优化 my.ini 配置
  • 软件硬件应当升级

3. 优化慢查询

  1. 开启慢查询

  2. explain 分析 SQL 语句

  3. 合适地方添加索引(主键 -> 唯一 -> 普通)

4. 优化缓存

结合 redis 做缓存处理

5. 考虑分库分表

主从同步 读写分离

采取 分表 10G1000W 才考虑

查询的时候,where 后面的字段一般要索引

6. 增加物理设备

– 欢迎点赞、关注、转发、收藏【我码玄黄】,gonghao同名

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

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

相关文章

深入探索Stable Diffusion:从原理到应用的全面解析

目录 一 Stable Diffusion的基本概念 什么是Stable Diffusion? Stable Diffusion与传统生成模型的区别 二 Stable Diffusion的理论基础 扩散过程的数学描述 马尔可夫链蒙特卡罗方法(MCMC) 三 Stable Diffusion的算法实现 基本步骤 代码实现 四 Stable Diffusion的…

图形化编程:解锁数字创意的新钥匙

在这个日新月异的数字时代,编程已不再局限于专业人士的小圈子,它正逐渐成为一项基础技能,融入我们的日常生活与工作中。而对于那些对传统代码望而生畏的人来说,6547网认为图形化编程犹如一股清流,以其直观、易学的特点…

基础算法--双指针算法

文章目录 什么是双指针算法例题1.移动零2.复写零3.快乐数4.盛最多水的容器5.有效三角形的个数6.三数之和7.四数之和 什么是双指针算法 通常我们讲的双指针就是用两个指针,两个指针可以是快慢指针,解决成环的问题,也可以是指向收尾的两个指针…

window端口占用情况及state解析

背景: 在电脑使用过程中,经常会开许多项目,慢慢地发现电脑越来越卡,都不知道到底是在跑什么项目导致,于是就想查看一下电脑到底在跑什么软件和项目,以作记录。 常用命令 netstat -tuln : 使用…

Python3发送邮件如何添加附件?怎么配置?

Python3发送邮件的注意事项?如何配置Python3发邮件? Python3发送邮件时添加附件是一项常见的需求。无论是发送报告、图片,还是其他文件,掌握如何在邮件中添加附件至关重要。AokSend将详细介绍Python3发送邮件时如何添加附件&…

前端网站(二)-- 菜单页面【附源码直接可用】

菜单页面 开篇(请大家看完):此网站写给挚爱,后续页面还会慢慢更新,大家敬请期待~ ~ ~ 轻舟所编写这个前端框架的设计初衷,纯粹是为了哄对象开心。除此之外,并无其它任何用途或目的。 此前端框…

JavaScript运行原理和执行过程

参考: https://www.cnblogs.com/hexrui/p/15939592.html 1、执行上下文栈(调用栈) GECGlobal Execution Context(GEC)被放入到ECS(Execution Context Stack,简称ECS)中 GEC开始执…

护眼灯哪些牌子好?一文刨析护眼灯怎么选择!

护眼灯哪些牌子好?护眼台灯作为对抗视力挑战的一种方法,逐渐赢得了众多家长的青睐。这些台灯利用尖端光学技术,发出柔和且无刺激的照明,有助于保护眼睛不受伤害。它们不但可以调节亮度和色温,打造一个舒适且自然的阅读…

upload-labs第十三关教程

upload-labs第十三关教程 第十三关一、源代码分析代码审计 二、绕过分析1)0x00绕过a.上传eval.pngb.使用burpsuite进行拦截修改之前:修改之后:进入hex模块: c.放包上传成功: d.使用中国蚁剑进行连接 2)%00绕…

【分布预测】DistPred:回归与预测的无分布概率推理方法

论文题目:DistPred: A Distribution-Free Probabilistic Inference Method for Regression and Forecasting 论文作者:Daojun Liang, Haixia Zhang,Dongfeng Yuan 论文地址:https://arxiv.org/abs/2406.11397 代码地址&#xff1a…

小白学RAG:大模型 RAG 技术实践总结

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 汇总合集…

C++之模板(三)

1、缺省模板参数 可以将数据结构类型传递进来&#xff0c;比如vectop<T>&#xff08;如果没传就是默认&#xff09; 把vector当作类型参数来传递&#xff0c;从而使用它的接口然后适配出新的接口。实际上这个Stack称为适配器。有时候可能需要vector&#xff0c;但是又需…

【Python】AJAX

AJAX基础 一、AJAX1.1 概述1.2 XMLHttpRequest对象1.3 AJAX请求六部曲1.4 图解AJAX请求步骤 二、jQuery与AJAX2.1 jQuery.get()2.2 jQuery.getJSON()2.3 jQuery.post()2.4 jQuery.ajax() 三、Django使用AJAX3.1 请求类型3.2 PUT与PATCH的区别3.3 接收及响应JSON3.3.1 接收JSON3…

ui自动化selenium,清新脱俗代码,框架升级讲解

一&#xff1a;简化 1. 新建common 包 新建diver.py 封装浏览器驱动类 from selenium import webdriverclass Driver():"""浏览器驱动类定义 一个【获取浏览器驱动对象driver的方法】。支持多种类型浏览器"""def get_driver(self,browser_typ…

JimuReport 积木报表 v1.7.6 版本发布,免费的低代码报表

项目介绍 一款免费的数据可视化报表工具&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完…

Python构造TCP三次握手、传输数据、四次挥手pcap数据包并打乱顺序

Python构造数据包&#xff0c;包含&#xff1a; TCP三次握手、 传输数据、 四次挥手 实现 随机乱序TCP数据包 from scapy.all import * from scapy.all import Ether, IP, TCP, UDP, wrpcap from abc import ABC, abstractmethod import random import dpkt from scapy.all…

6月18日(周二)美股行情总结:纳指七日连创新高,英伟达市值全球第一,苹果微软回落,油价七周最高

美国5月零售销售意外走软&#xff0c;尽管一众美联储官员均鹰派发声支持多等待通胀数据再做决策&#xff0c;市场仍抬升对年内降息两次的押注。标普500指数在七天里第六天上涨并再创新高&#xff0c;标普科技板块连续七天创新高、期间累涨8.6%&#xff0c;道指一周高位&#xf…

MySQL----慢查询日志

慢日志 MySQL可以设置慢查询日志&#xff0c;当SQL执行的时间超过我们设定的时间&#xff0c;那么这些SQL就会被记录在慢查询日志当中&#xff0c;然后我们通过查看日志&#xff0c;用explain分析这些SQL的执行计划&#xff0c;来判定为什么效率低下。 查看相关信息 show va…

iOS 18 终于更新了 iOS 隐藏 App 功能,这次是真的隐藏

如何锁定或隐藏 App 我们一起来看看 iOS 如何隐藏软件&#xff0c;下面是具体的操作步骤&#xff1a; iOS 隐藏 App 的第一步肯定是找到你想隐藏或锁定的应用程序&#xff0c;然后长按它的图标&#xff0c;在长按之后出现的选项中我们选择“需要 Face ID”。 然后在新弹出的选…

web版的数字孪生,选择three.js、unity3D、还是UE4

数字孪生分为客户端版和web端版&#xff0c;开发引擎多种多用&#xff0c;本文重点分析web端版采用哪种引擎最合适&#xff0c; 贝格前端工场结合实际经验和网上主流说法&#xff0c;为您讲解。 一、数字孪生的web版和桌面版 数字孪生的Web版和桌面版是数字孪生技术在不同平台…