转 高性能建站方略

 

1、概述php

         优化网站响应时间是保证网站受用户关注的要点,主要方案有:css

一、减小HTTP请求html

         当须要加载图片、css、js等内容时,尽可能减小加载的次数。能够合并加载,另外当改动量不多时,尽可能将内容进行缓存。linux

         图片的缓存能够设定更新时间,定时去服务器查看是否有须要更新的内容。一般能够定时在1周甚至更久的时间。web

         CSS、JS的缓存,一般能够经过文件名的方式来判断是否须要从新加载。当网页肯定须要加载某些js和css时,把文件和已经缓存的文件名进行判断,文件名一致则直接用缓存。所以,能够在文件名中设定版本号,如初始阶段是avatar.1.js,当对此js的内容进行改动后,将html上加载的js文件名改成avatar.2.js,相应的改变服务器上的文件名,强制进行加载。另外,对于能够网页加载完毕后再加载的js,能够将引用的代码放到html标签的最后,保证先将页面展现出来。数据库

二、动态内容静态化apache

三、优化数据库浏览器

         数据库的优化是网站优化的最关键的部分。后面专门写。缓存

四、使用负载均衡服务器

         能够用DNS轮询、反向代理、HTTP重定向等方式,实现负载均衡,保证每台web服务器接收的请求数量大体相同。

五、使用缓存

         使用缓存将改动量大、读取量大等的内容保存在内存中,避免数据库的屡次操做,因为内存的读写速度比I/O的速度快得多(数据库存在硬盘中,读写须要通过I/O),则能够节省较多的时间。

 

2、吞吐率与压力测试

         吞吐率是指单位时间内服务器处理的请求数,一般用reqs/s。吞吐率描述运行期间单位时间内处理的请求数,当须要衡量单位时间内能够承受的最大吞吐率,则须要压力测试。

         压力测试有许多工具,如LoadRunner、JMeter、ab(Apache Bench)等。

         ab是apache附带的压力测试软件。能够经过linux的命令行,直接进行测试,使用方法以下:

         ab[options] [http://]hostname[:port]/path

         其中,options是可选参数,主要以下:

         1)-n:测试会话中执行的请求数,默认是1个

         2)-c:要建立的并发用户数,默认1个

         3)-t:等待web服务器的最大响应时间,默认没有限制

         4)-k:使用keep-alive特性

         5)-C:(大写的C)对请求附加一个Cookie,形式为name=value

         实例,10个并发用户、1000次请求:

         ab  -c 10 -n 1000  http://localhost/index.php

         其结果会有执行总次数(-n参数)、并发请求数(-c参数)、成功次数、失败次数、总耗时、平均每一个请求的耗时(即用户平均等待时间)、平均每秒能够处理的请求数(即吞吐率)。其中,吞吐率是平均每秒处理的请求数,在结果中的参数是Request per second。

 

3、持久链接

         持久链接(Keep-Alive)又称为长链接,是指TCP链接中持续发送多份数据而不断开链接。相应的也有短链接的概念,即每次完成数据发送后就断开链接。

         因为客户端和服务器每次创建链接,都须要进行三次握手,须要耗费时间。所以但愿进行长链接,改变数据发送后就断开的状况。HTTP1.1开始支持长链接。

         HTTP长链接须要浏览器和Web服务器共同完成:浏览器须要保持一个TCP链接不断开,而且不断发送多个请求;服务器不能过早主动关闭链接。

目前大部分浏览器支持长链接,只须要在发出的HTTP请求数据头中包含相关长链接的声明便可:Connection:Keep-Alive,即在发出的header中定义该链接方式便可。

对于服务器,则须要Web服务器的配置中支持长链接,如:

Apache中设置:KeepAliveOn,KeepAliveTimeout 20

Nginx中配置:

http {

keepalive_timeout20; --长链接timeout

    keepalive_requests 8192; --每一个链接最大请求数

}

长链接对于浏览器和服务器都有默认超时时间,即超过设定的时间若是尚未请求,则断开链接。当双方都设定超时时间,则以较短的一方为最终的超时时间。

当大量请求小文件时,长链接能够显著加快速度。可是,长链接会影响到服务器的并发性能,所以也不是全部状况都设置长链接。

相关文章
相关标签/搜索