中小型网站架构分析及优化

上传人:re****.1 文档编号:495834253 上传时间:2023-09-12 格式:DOCX 页数:7 大小:69.59KB
返回 下载 相关 举报
中小型网站架构分析及优化_第1页
第1页 / 共7页
中小型网站架构分析及优化_第2页
第2页 / 共7页
中小型网站架构分析及优化_第3页
第3页 / 共7页
中小型网站架构分析及优化_第4页
第4页 / 共7页
中小型网站架构分析及优化_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《中小型网站架构分析及优化》由会员分享,可在线阅读,更多相关《中小型网站架构分析及优化(7页珍藏版)》请在金锄头文库上搜索。

1、中小型网站架构分析及优化本文章来自于阿里云云栖社区摘要:先看网站架构图:以上网站架构广泛运用中大型网站中,本文从架构 每一层分析所用主流技术和解决手段,有助于初入网站运维朋友们,进一步对网 站架构认识,从而自己形成一套架构概念。第一层:CDN 国内网络分布主要 南电信北联通,造成跨地区访问延迟大问题,对于有一定访问量网站来说,增加 CDN (内容分发网络)层可有效改善此现象,也是网站加速的最好选择。先看网站架构图:以上网站架构广泛运用中大型网站中,本文从架构每一层分析所用主流技术和解 决手段,有助于初入网站运维朋友们,进一步对网站架构认识,从而自己形成一 套架构概念。第一层:CDN国内网络分布

2、主要南电信北联通,造成跨地区访问延迟大问题,对于有一定 访问量网站来说,增加CDN (内容分发网络)层可有效改善此现象,也是网站加 速的最好选择。CDN把网站页面缓存到全国分布的节点上,用户访问时从最近的 机房获取数据,这样大大减少网络访问的路径。如果想自己搭建CDN,不建议这 么做,因为什么呢?其实说白了,就是什么事别往运维上拦CDN架构部署不复 杂,影响效果的因素却很多,后期管理维护也比较复杂,想达到预期的效果确非 易事,这是一个费力不讨好的活,最后老板还是感觉是你能力不足。建议找专做 CDN的公司,费用也不贵,有抗流量攻击能力,效果也很好,运维也少很多事, 何乐而不为呢!第二层:反向代理

3、(网页缓存)如果CDN没有缓存要请求的数据则向这层发起请求,在代理服务器配置缓存 功能(本地),代理服务器就查找本地缓存是否有CDN请求的数据,如果有就直 接返回给CDN,如果没有则请求后端负载均衡器然后转发给WEB服务器返回数据 给代理服务器,代理服务器再将结果给CDN。代理服务器一般缓存不经常变动的 静态页面,如image、js、css、html等,主流的缓存软件有Squid、Varnish、 Nginx。第三层:负载均衡访问量较大的网站都会用到负载均衡,因为这是解决单台服务器性能瓶颈的 最好办法。反向代理将请求转发给负载均衡器,负载均衡器根据算法(轮训、负 载情况选择后端等)交给后端WE

4、B服务处理,WEB服务处理完成后直接返回数据 给反向代理服务器。负载均衡合理分配请求给后端多台WEB服务器,减轻单台服 务器并发负载,并保证服务可用性。主流的负载均衡软件有LVS、HAProxy、Nginx。 第四层:WEB服务WEB服务是处理用户请求的,WEB服务处理效率,直接影响到访问速度,为避 免这层因素造成访问慢,应对其进行调优,让WEB服务发挥到最佳状态。常见的 WEB 服务有 Apache 和 Nginx。Apache 优化:1).mod_deflate 压缩模块查看是否加载:1# apachectl -M |grep deflate如果没有安装使用apxs编译进去:1# /usr

5、/local/apache/bin/apxs -c -I -A apache 源码目录/modules/mod_deflate.cdeflate配置参数:12DeflateCompressionLevel6#压缩等级(1-9),数值越大效率越高,消耗CPU也就越高3SetOutputFilterDEFLATE#启用压缩4AddOutputFilterByTypeDEFLATE text/html text/plain text/xml #压缩类型5AddOutputFilterByTypeDEFLATE css js html htm xml php62) .mod_expires 缓存模块查

6、看是否加载:1# apachectl -M |grep expires如果没有安装使用apxs编译进去:1# /usr/local/apache/bin/apxs -c -I -A apache 源码目录/modules/mod_expires.c再在 httpd.conf 启用模块:LoadModule expires_module modules/mod_expires.so 缓存机制有三种用法:全局、目录和虚拟主机 全局配置,在配置文件末尾添加:12ExpiresActiveon#启用有效期控制,会自动清除已过期的缓存,然后从服务器获取新的3ExpiresDefault accesspl

7、us 1 days#默认任意格式的文档都是 1 天后过期4ExpiresByTypetext/html access plus 12 months5ExpiresByTypeimage/jpg access plus 12 mon ths#jpg 格式图片缓存 12 月63).工作模式选择及优化apache有两种常见工作模式,worker和prefork,默认是worker,是混合型 的MPM (多路处理模块),支持多进程和多线程,由线程来处理请求,所以可以 处理更多请求,提高并发能力,系统资源开销也小于基于进程的MPM,由于线程 使用进程内存空间,进程崩溃会导致其下线程崩溃。而prefork

8、是非线程型MPM, 进程占用系统资源也比worker多,由于进程处理连接,在工作效率上也比worker 更稳定。可通过apache2 - l查看当前工作模式,在编译时使用一with-mpm参 数指定工作模式。根据自己业务需求选择不同工作模式,再适当增加工作模式相 关参数,可提高处理能力。配置参数说明:18#默认启动 8 个 httpd 进程5#最小的空闲进程数2StartServers 3MinSpareServers4MaxSpareServers20#最大的空闲进程数,如果大于这个值,apache会自动kill 一些进程5ServerLimit256#服务器允许进程数的上限6MaxClie

9、nts256 #同时最多发起多少个访问,超过则进入队列等待7MaxRequestsPerChild 4000#每个进程启动的最大线程8Nginx优化:1) .gzip压缩模块1http 2 3 gzip on;4 gzip_min_length 1k;# 允许压缩的页面最小字节数,默认是 0 ,多大都压缩,小于 1k 的可能5适得其反6 gzip_buffers 4 16k; #gzip 申请内存的大小,按数据大小的 4 倍去申请内存7 gzip_http_version 1.0; # 识别 http 协议版本8 gzip_comp_level 2;# 压缩级别,1 压缩比最小,处理速度最快,

10、9 压缩比最大,处理速度最9慢1 gzip_types text/plainapplication/x-javascripttext/css application/xml image/ 0jpg; #压缩数据类型gzip_vary on;#根据客户端的 http 头来判断,是否需要压缩2) .expires缓存模块1server 2 location .*.(gif|jpg|png|bmp|swf)$#缓存数据后缀类型34 expires 30d;# 使用 expires 缓存模块,缓存到客户端 30 天56 location .*.( jsp|js|css)?$78 expires 1d;

11、9103) .fastcgi 优化nginx不支持直接调用或者解析动态程序(php),必须通过fastcgi (通用网关 接口)来启动php-fpm进程来解析php脚本。也就是说用户请求先到nginx, nginx 再将动态解析交给fastcgi, fastcgi启动php-fpm解析php脚本。所以我们有 必要对fastcgi和php-fpm进行适当的参数优化。1 http 2 3 fastcgi_cache_path/usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10 4m inactive=5m;5 # FastCGI 缓

12、存指定一个文件路径、目录结构等级、关键字区域存储时间和非活动删除时间6 fastcgi_connect_timeout 300;# 指定连接到后端 FastCGI 的超时时间7 fastcgi_send_timeout 300;# 指定向 FastCGI 传送请求的超时时间8 fastcgi_read_timeout 300;# 指定接收 FastCGI 应答的超时时间9 fastcgi_buffer_size 64k;# 指定读取 FastCGI 应答第一部分需要多大的缓冲区1 fastcgi_buffers 4 64k;# 指定本地需要用多少盒多大的缓冲区来缓冲 FastCGI 的应答请0

13、求1 fastcgi_busy_buffers_size 128k;1 fastcgi_temp_file_write_size 128k; # 表示在写入缓存文件时使用多大的数据块,默认值是1 fastcgi_buffers 的两倍2 fastcgi_cache TEST;# 开启 fastcgi_cache 缓存并指定一个 TEST 名称1 fastcgi_cache_valid 200 302 1h;#指定 200、 302 应答代码的缓存 1 小时3 fastcgi_cache_valid 301 1d;# 将 301 应答代码缓存 1 天1fastcgi_cache_valid an

14、y 1m;# 将其他应答均缓存 1 分钟41516php-fpm.conf 配置参数:1pm =dynamic#两种控制子进程方式(static和dynamic)2pm.max_children= 5#同一时间存活的最大子进程数3pm.start_servers= 2#启动时创建的进程数4pm.min_spare_servers= 1#最小 php-fpm 进程数5pm.max_spare_servers= 3#最大 php-fpm 进程数4). proxy_cache本地缓存模块12345http 6 7 proxy_temp_path /usr/local/nginx/proxy_cach

15、e/temp; #缓存临时目录8 proxy_cache_path /usr/local/nginx/proxy_cache/cache levels=1:2 keys_zone=one:1 90m inactive=1d max_size=1g;1 #缓存文件实际目录,levels定义层级目录,1:2说明1是一级目录,2是二级目录,keys_zone存 (储元数据,并分配10M内存空间。inctive表示1天没有被访问的缓存就删除,默认10分钟。max_size 1是最大分配磁盘空间1 server 1 listen 80;2 server_name 192.168.1.10;1location / 3 proxy_cache one;#调用缓存区1#proxy_cache_valid 200 304 12h; #可根据 HTTP 状态码设置不同的缓存时间4 proxy_

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号