Web服务器站点访问慢该怎么提升
Web服务器站点访问慢该怎么提升,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
创新互联建站拥有一支富有激情的企业网站制作团队,在互联网网站建设行业深耕10多年,专业且经验丰富。10多年网站优化营销经验,我们已为上千家中小企业提供了成都网站设计、做网站解决方案,按需搭建网站,设计满意,售后服务无忧。所有客户皆提供一年免费网站维护!
要优化 Web 服务器的性能,我们先来看看 Web 服务器在 web 页面处理上的步骤:
Web 浏览器向一个特定的服务器发出 Web 页面请求; Web 服务器接收到 web 页面请求后,寻找所请求的 web 页面,并将所请求的 Web 页面传送给 Web 浏览器; Web 浏览器接收到所请求的 web 页面内容,并将它显示出来。
Web 服务器从磁盘中读取静态页面内容的速度,也即时间; Web 服务器判定请求内容是静态还是动态内容的时间; Web 服务器转发请求给应用服务器的时间; 应用服务器处理(解释)动态内容所需的时间; Web 服务器返回 Web 内容给浏览器的响应时间; Web 服务器接收来自浏览器请求的处理性能; Web 访问请求数据在网络上传输的时间:包括从浏览器到服务器,和从服务器到浏览器两部分; 浏览器本地计算和渲染 Web 内容的时间,即接收内容后展现内容的时间。
Web 服务器执行安全策略检查的时间,或者说性能; Web 服务器读取日志文件、写日志内容、关闭对日志文件访问的时间,先读后写再关闭,这三步中的读与写又涉及到磁盘访问性能因素; 同时与 Web 服务器连接会话的客户端数量大小,即并发访问量多大。
我们可以将上面一共 11 项影响因素抽像出来,那么就是:
Web 服务器磁盘性能; Web 服务器与应用服务器交互的性能; 应用服务器处理动态内容的性能,或者说动态内容应用处理性能; 客户端与 Web 服务器的连接速度,即网络传输性能; Web 浏览器解释和渲染 Web 内容的性能; Web 访问并发性能。
反映到我们进行性能优化,可以入手的角度就有:
增加带宽,包括服务器和客户端两边的 Internet 连接带宽; 加快动态内容的处理性能; 尽可能多地使用静态内容,这样 Web 服务器就可以无需请求应用服务器,直接将 Web 内容发给浏览器端,这里可以入手的方案又有: 动态内容缓存 动态内容静态化 多台服务器负载均衡同时处理大量的并发访问; 提升服务器磁盘访问性能,也即通常所说的 I/O 性能; 减少网页中的 HTTP 请求数; 更换更好性能的 Web 服务器; 合理部署服务器,在离客户端更近的地方部署服务器,已经证明可以明显地提升访问性能。
性能优化实践
1. 站点简介
一个社区论坛站点,采用 Discuz! 论坛程序构建,该程序采用主流的 PHP + MySQL 组成。
网站目前有近 5 万注册用户,绝大多数是国内的用户,活跃用户数在一半左右,每天平均 PV 在 15~20 万,独立访问 IP 数在 8000 左右。
2. Web 服务器性能优化需求
网站现部署在国外的服务器,租用虚拟主机来运营,因为访问量比较大,所以经常会收到虚拟主机服务商的流量很大的通知,要求控制下访问量。
另外,虚拟主机的服务器在美国,没有在国内租用虚拟主机的原因是国内网站在备案方面非常繁琐,在网站一开始运营时数据量和访问量都比较小,所以对性能要求不高,数据量小,所以服务器在查询处理数据时速度比较快,也让人感觉访问速度不慢,现在随着数据量和访问量的不断上升,访问速度已明显下降,到了需要改善访问性能的时候了。
基于目前该社区网站的情况,提出的优化需求是,国内访问速度需要提升一倍,目前首页加载时间需要 40 秒左右,希望优化后能在 20 秒以内将首页加载完成。
另外提出网站数据能够每天自动备份一次,备份数据保留一个月的,以便随时恢复。
上述两点需求,其中第一条才是性能优化需求,第二条是额外的需求了。
3. 性能优化方案
根据其网站的现状和优化需求,结合自己的经验,加上谷歌的搜索,同时与网站主不断确认沟通,最终得到以下性能优化方案:
由虚拟主机部署改为独立服务器部署
虚拟主机受限比较多,无法自己自定义配置 Web 服务器,无法配置 PHP 动态缓存,而且独立服务器可以独享内存、处理器资源,不再受虚拟主机商对每个虚拟主机用户的内存和处理器资源占用限制。处理器资源和内存资源,对接受更多并发访问有直接性能提升效果。
由 Windows 操作系统改为 Linux 操作系统
Web 服务器采用 Nginx,而不使用 Apache
对 PHP 查询进行动态缓存,使用 eAccelerator 这个加速器
具体地,我们计划对 eAccelerator 进行以下设置优化:
缓存使用物理内存来进行,不使用磁盘来缓存。我们知道内存的读写性能是硬盘的 N 倍,所以在内存资源可以安排情况下,强烈建议使用内存来保存 eAccelerator 的缓存内容。 缓存大小设置为 32MB,这个值是操作系统默认支持最大的缓存容量。虽然可以通过修改配置文件来加大这个值,但我们觉得没有必要,所以就放弃了。
Nginx 性能优化
选用了 Nginx,虽然它的性能很好,但我们仍然需要对它进行性能优化,在这个案例中,我们做了以下优化:
使用 8 个进程,每个进程大约需要 20M 内存消耗,这里一共使用了 150M 左右的内存。
充分使用主服务器的 CPU 内核:
四核,使用 CPU 粘性配置选项(worker_cpu_affinity),每核处理器分配两个进程。
开启 gzip 压缩功能:
gzip 压缩对 JS, CSS, XML 压缩效果非常好,能压缩一半,即减少一倍的传输时间;
对图片文件,JPG 已经压缩过的,它的压缩性能要少一些。
图片本地缓存 1 天:
网站上的图片很多,通常一张图片上传后,不会频繁的修改,只会频繁的访问,所以将图片放在 Nginx 缓存里,可以减少服务器访问加载次数,提升访问速度。
JS、CSS 文件本地缓存 7 天:
这两种网页文件,平时都不会去修改它,将它缓存起来,可以减少加载次数,提升访问速度。
为什么这两种文件不和图片一起设置缓存有效期,是考虑了不同文件的修改频率不一样。
Nginx 日志每天切割一次:
这个优化项能大大减小 Nginx 日志文件的大小,经过一周的查看,每天的日志文件是 50M 左右,如果不是每天切割,用月切割,那一个月的日志文件就是几个 G,要 Web 服务器在内存里加载这么大的文件,系统本身内存不够用,就自然会用到磁盘来缓存,这就影响性能。
每天 50M 左右,在内存上完全可以顺利加载,这样 Nginx 在处理访问时,可以快速的保存访问日志。
经过上述几个优化项目,Nginx 这边一共需要占用 200M 左右内存资源。
对 PHP CGI 进程性能进行优化
MySQL 数据库性能优化
因此我们要选择对读表、查询性能更好的存储引擎,结合以前了解的知识,MySQL 缺省的 MyISAM 引擎就是被设计为适合处理读频率远大于写频率的环境,查询效率相当可观,而且内存占用很少,这也与我们租用低内存配置的 vps 相符。
内容分发网络应用
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
分享文章:Web服务器站点访问慢该怎么提升
文章链接:http://scyanting.com/article/jpdico.html