加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

Web 服务器性能与站点访问性能优化

发布时间:2019-07-29 23:36:23 所属栏目:外闻 来源:今日头条
导读:副标题#e# 优化思路浅析 要优化 Web 服务器的性能,我们先来看看 Web 服务器在 web 页面处理上的步骤: 1. Web 浏览器向一个特定的服务器发出 Web 页面请求; 2. Web 服务器接收到 web 页面请求后,寻找所请求的 web 页面,并将所请求的 Web 页面传送给 Web
副标题[/!--empirenews.page--]

 优化思路浅析

要优化 Web 服务器的性能,我们先来看看 Web 服务器在 web 页面处理上的步骤:

1. Web 浏览器向一个特定的服务器发出 Web 页面请求; 2. Web 服务器接收到 web 页面请求后,寻找所请求的 web 页面,并将所请求的 Web 页面传送给 Web 浏览器; 3. Web 浏览器接收到所请求的 web 页面内容,并将它显示出来。

上面三个步骤都关系 Web 服务器,但实际 Web 服务器性能相关最大的是在第 2 步,这里 Web 服务器需要寻找来自浏览器所请求的 Web 页面内容。

我们知道,Web 页面内容有静态的,也有动态的,静态的内容,web 服务器可以直接将结果发回给浏览器,对于动态内容,则通常需要交给应用服务器先处理,由应用服务器返回结果。

当然,也有 Web 服务器本身可以处理动态内容的,例如 IIS 就可以自已解释处理 ASP, ASP.NET 这两种微软的动态网页脚本语言。

Web 服务器性能与站点访问性能优化

从上面简要的分析里,我们大致可以得到这样的结论,影响 Web 页面访问的影响因素会有这几个:

  1. Web 服务器从磁盘中读取静态页面内容的速度,也即时间;
  2. Web 服务器判定请求内容是静态还是动态内容的时间;
  3. Web 服务器转发请求给应用服务器的时间;
  4. 应用服务器处理(解释)动态内容所需的时间;
  5. Web 服务器返回 Web 内容给浏览器的响应时间;
  6. Web 服务器接收来自浏览器请求的处理性能;
  7. Web 访问请求数据在网络上传输的时间:包括从浏览器到服务器,和从服务器到浏览器两部分;
  8. 浏览器本地计算和渲染 Web 内容的时间,即接收内容后展现内容的时间。

上面 8 项很容易理解,也很直接,其实还有以下几项也是关乎 Web 页面访问速度体验的因素,你可以思考下是否如此?或者说是否会影响到页面访问性能。

  • Web 服务器执行安全策略检查的时间,或者说性能;
  • Web 服务器读取日志文件、写日志内容、关闭对日志文件访问的时间,先读后写再关闭,这三步中的读与写又涉及到磁盘访问性能因素;
  • 同时与 Web 服务器连接会话的客户端数量大小,即并发访问量多大。

我们可以将上面一共 11 项影响因素抽像出来,那么就是:

  1. Web 服务器磁盘性能;
  2. Web 服务器与应用服务器交互的性能;
  3. 应用服务器处理动态内容的性能,或者说动态内容应用处理性能;
  4. 客户端与 Web 服务器的连接速度,即网络传输性能;
  5. Web 浏览器解释和渲染 Web 内容的性能;
  6. Web 访问并发性能。

反映到我们进行性能优化,可以入手的角度就有:

  1. 增加带宽,包括服务器和客户端两边的 Internet 连接带宽;
  2. 加快动态内容的处理性能;
  3. 尽可能多地使用静态内容,这样 Web 服务器就可以无需请求应用服务器,直接将 Web 内容发给浏览器端,这里可以入手的方案又有:
  • 动态内容缓存
  • 动态内容静态化

多台服务器负载均衡同时处理大量的并发访问;

提升服务器磁盘访问性能,也即通常所说的 I/O 性能;

减少网页中的 HTTP 请求数;

更换更好性能的 Web 服务器;

合理部署服务器,在离客户端更近的地方部署服务器,已经证明可以明显地提升访问性能。

性能优化实践

经过前面小节的简要分析,我相信你对优化 Web 服务器有一定的思路了,你可以从硬件层面、软件层面、Web 代码三个层面去优化。

下面我们结合一个具体的实例来实践一回,本文所举例是一个小型的 Web 站点,部分数据系假设,如有类同,纯属巧合,仅起抛砖引玉之用。在实际工作中,如果碰到大站点,你可以参考此处的分析,修改优化方案。

1. 站点简介

一个社区论坛站点,采用 Discuz! 论坛程序构建,该程序采用主流的 PHP + MySQL 组成。

网站目前有近 5 万注册用户,绝大多数是国内的用户,活跃用户数在一半左右,每天平均 PV 在 15~20 万,独立访问 IP 数在 8000 左右。

2. Web 服务器性能优化需求

网站现部署在国外的服务器,租用虚拟主机来运营,因为访问量比较大,所以经常会收到虚拟主机服务商的流量很大的通知,要求控制下访问量。

另外,虚拟主机的服务器在美国,没有在国内租用虚拟主机的原因是国内网站在备案方面非常繁琐,在网站一开始运营时数据量和访问量都比较小,所以对性能要求不高,数据量小,所以服务器在查询处理数据时速度比较快,也让人感觉访问速度不慢,现在随着数据量和访问量的不断上升,访问速度已明显下降,到了需要改善访问性能的时候了。

基于目前该社区网站的情况,提出的优化需求是,国内访问速度需要提升一倍,目前首页加载时间需要 40 秒左右,希望优化后能在 20 秒以内将首页加载完成。

另外提出网站数据能够每天自动备份一次,备份数据保留一个月的,以便随时恢复。

上述两点需求,其中第一条才是性能优化需求,第二条是额外的需求了。

3. 性能优化方案

根据其网站的现状和优化需求,结合自己的经验,加上谷歌的搜索,同时与网站主不断确认沟通,最终得到以下性能优化方案:

由虚拟主机部署改为独立服务器部署

虚拟主机受限比较多,无法自己自定义配置 Web 服务器,无法配置 PHP 动态缓存,而且独立服务器可以独享内存、处理器资源,不再受虚拟主机商对每个虚拟主机用户的内存和处理器资源占用限制。处理器资源和内存资源,对接受更多并发访问有直接性能提升效果。

独立服务器,我们选用 Linode 2048 型号,2G 内存,4 核处理器(Linode 所有 VPS 都是四核处理器),80G 硬盘空间,800G 网络流量。

由 Windows 操作系统改为 Linux 操作系统

网站使用的是 PHP + MySQL 程序,PHP 在 Windows 下的性能,受限于 IIS 需要通过 ISAPI 形式调用 PHP,所以性能不如 Linux 下 Apache 直接通过 PHP 模块解释 PHP,更不如 Nginx 与 PHP-FPM 的性能,既然使用了独立服务器,操作系统也可以自己确定,Linux 系统我们选用了熟悉的 Ubuntu Linux Server 10.04(一年前还没有 12.04),^-^。

Web 服务器采用 Nginx,而不使用 Apache

选用 Nginx 而不用 Apache 的原因非常直接和干脆,因为站点里有很多静态的附件文件,在处理静态内容上,Nginx 性能是 Apache 的差不多 10 倍。

在 PHP 解释和伪静态规则方面,Apache 要比 Nginx 强,但这不影响我们放弃它,为缓解这一点,我们在后面对 PHP 进行了动态缓存。

对 PHP 查询进行动态缓存,使用 eAccelerator 这个加速器

PHP 加速器是一个为了提高 PHP 执行效率,从而缓存起 PHP 的操作码,这样 PHP 后面执行就不用解析转换了,可以直接调用 PHP 操作码,这样速度上就提高了不少。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读