大型网站架构提速关键技术(页面静态化、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

<?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 文件.

<IfModule mpm_winnt_module>

    ThreadsPerChild      1000  

    MaxRequestsPerChild    0

</IfModule>

(2) 重启apahce ,测试

 

 

因为在linux下,一般说采用的MPM是 perfork模式,我们看看如何配置.

 

<IfModule mpm_prefork_module>

    StartServers          5

    MinSpareServers       5

    MaxSpareServers      10

    MaxClients          150   #并发量

  MaxRequestsPerChild   0  #一个进程对应的线程数,对 worker更用.

</IfModule>

 

给大家一个合理的建议配置. 对大部分网站,中型网站,配置:


<IfModule mpm_prefork_module>
              StartServers         5      #预先启动
              MinSpareServers      5
              MaxSpareServers      10  #最大空闲进程
              ServerLimit          1500   #用于修改apache编程参数
              MaxClients           1000   #最大并发数
              MaxRequestsPerChild  0

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值