大型网站提速关键技术(页面静态化、memcached、Mysql优化)
大型网站关键技术介绍
1. pv值(page views),访问量大
带来问题
a. 流量大 10000000*2m ->解决方案 买带宽 ,优化程序(处理图片)
b. 并发量,同时访问网站的人多.,解决方案
对程序的架构重新设计.->服务器集群 示意图:
1. 数据量大->10亿记录
解决方法是
a. 表的设计合理
b. 分表技术(垂直分割,水平分割) c. 建立索引 d. 读写分离 e. mysql配置优化(调整最大并发量,定时对数据库碎片整理,备份 crontab) f.硬件升级)
c. 页面静态化
d. 缓存技术(memcached)
页面静态化
简单解释一下页面静态化:
看几个概念,然后写代码:
静态网址:比如 http://localhost/abc.html 即,如果我们访问的页面是静态页面,我们把这个url称为静态网站.
特点: 1.利用seo (search engine optimization)搜索引擎优化2.访问速度快3.防止sql注入
http://localhost/index.php?u=xx&p=/*11288 */
如果我们写程序 loginCheck.php
$id=$_GET[‘id’];
$pwd=$_GET[‘pwd’];
$sql=”select pwd from users where id=$id”;
$res=mysql_query($sql);
if($pwd= = =从数据库中取出的密码){
//说明该用户存在
}else{
//说明用户密码错误!
}
动态网址:比如 http://localhost/news.php?id=112 , 即,访问的是一个PHP页面,可以传入参数.称为动态网之.
特点: 1.不利用SEO 2.访问速度慢3.有被注入sql可能
伪静态网址: 在实际开发中,我们希望达到这样目的,把下面的网址
http://localhost/ news.php?lang=cn&class=sprot&id=2
修改成如下网址
http://localhost/news-cn-sport-id2.html
上面的网址,我们称为伪静态网址 :
特点: 1.利用SEO 2.防止注入3.他任然要访问数据库,速度没有变化
页面静态化技术分类:
从方式看(1.真静态2.伪静态)
从范围看(1.全局静态2.局部静态化[ajax+jquery])
介绍一款测试压力的工具 ab.exe该工具程序是apache自带的,大家在工作中可以使用该工具来测试自己的网站并发量大小,和某个页面的访问时间
基本用法,进入到cmd控制台
ab.exe –n 访问的总次数–c 有多少人访问(并发量)访问的页面url
举例说明:
ab.exe –n 10000 –c 100 http://locahost/test.php
当我们把 –c 调整到1000时,发现apache瘫痪.给大家说下如何调整apache的最大并发量.
MPM (多路处理模块,即apache采用怎样的方式来处理并发.),主要有三种方式
1. perfork 预处理进程方式
2. worker 工作模式
3. winnt 这个一般说是windows采用的.
原理示意图:
u 如何设置我们的apache的最大并发数,步骤如下:
(1) 在httpd.conf文件中 修改
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf
(2) 确定当前的apahce是什么MPM模式
进入到 apache/bin
httpd.exe –l
说明: 看 mpm_xxx.c 如果xxx是winnt说明是winnt,另外还可能是perfork或者worker
(1) 修改httpd-mpm.conf文件.
ThreadsPerChild 1000
MaxRequestsPerChild 0
(2) 重启apahce,测试
因为在linux下,一般说采用的MPM是perfork模式,我们看看如何配置.
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150 #并发量
MaxRequestsPerChild 0 #一个进程对应的线程数,对worker更用.
给大家一个合理的建议配置.对大部分网站,中型网站,配置:
StartServers 5#预先启动
MinSpareServers 5
MaxSpareServers 10 #最大空闲进程
ServerLimit 1500#用于修改apache编程参数
MaxClients 1000#最大并发数
MaxRequestsPerChild 0
如果你的网站pv值 百万
ServerLimit2500#用于修改apache编程参数MaxClients 2000#最大并发数
最后有一个关于html和php的访问效率图 :
分享一下页面seo技巧:
如果一个图片希望杯百度到
在网站前台,我们建议 不要使用frame框架,不利用seo
如果我们给图片或者视频取名字,尽量简短.
页面静态化的技术实现有两种方式
1. 使用PHP自己的缓存机制
u 先说明一下OB缓存的机制.
ob1.php 代码:说明的ob的各个用法->项目中
ob2.php 代码,说明了浏览器缓存存在.
说明:在php5.2这个版本 在php.ini有一个配置output_buffering,默认是关闭,如果是关闭,这刚才的代码就会警告.
☞ 如何打开ob缓存
① 配置php.ini 文件 output_buffering = 4096
② 直接在程序中 ob_start();
1. 使用模板替换技术实现(正则表达式)
使用ob缓存机制,完成一个简单的新闻管理系统-页面静态化(目标是实现全站静态化)