加入收藏 | 设为首页 | 会员中心 | 我要投稿 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

eAccelerator 是一个开源 PHP 加速器,优化和动态内容缓存,提高了 PHP 脚本的缓存性能,使得 PHP 脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使得的 PHP 程序代码执效率能提高 1-10 倍,这个加速还是非常明显的。

具体地,我们计划对 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 进程性能进行优化

Nginx 没有 PHP 模块,所以它对 PHP 的支持是通过 PHP-FPM 来实现的,PHP-FPM 是跑进程来处理并发请求,在这个案例中,我们配置了 20 个进程,每个进程差不多占用 20M 左右内存资源,一共是 400M 左右。

同时,PHP-FPM 与 Nginx 交互机制,选用 Linux Socket 模式而不是 TCP 协议端口,Socks 是系统级处理模式,socks 也就是一个文件连接,而 TCP 协议端口,需要经过网络协议处理,性能不如前者,所以我们选择了前者。

MySQL 数据库性能优化

因为网站主程序是选用他人开发的开源程序,所以对数据库查询的程序优化我们无法处理,只能从 MySQL 本身寻找突破口。

我们可以想像一下,对于论坛网站,通常看贴、查贴的访问量要远大于创建贴子、回复贴子的访问量,体现在 MySQL 数据库上,就是读表与查询表数据的连接处理更多。

因此我们要选择对读表、查询性能更好的存储引擎,结合以前了解的知识,MySQL 缺省的 MyISAM 引擎就是被设计为适合处理读频率远大于写频率的环境,查询效率相当可观,而且内存占用很少,这也与我们租用低内存配置的 VPS 相符。

具体到 MySQL 配置参数的优化上,受限于服务器上内存资源本身有限,就直接采用缺省的中型环境配置文件。

内容分发网络应用

站点每天十多万的访问,上万独立 IP 访问,查看先前的访问统计,访问来自国内各个地区,使用多种网络连接访问进来,为保证来自各网络的用户访问速度,同时也减少对网站服务器的请求,我们采用了 CDN 来分发静态内容,这样各地的用户可以就近访问到已缓存在 CDN 上的文件,CDN 服务商会在静态内容第一次访问时缓存到他们全国各地的服务器上,当第二次访问时,用户实际是没有连接到网站服务器上获取文件的,而是直接从 CDN 服务器上获取,可以明显的提升网站性能。

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

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

热点阅读