WANGJUEJU.CN

1358

J
AI+留学专家菊叔

关于网站响应性能优化的几点实践经验--单机云主机


没办法啊,这篇我还没有配图

留学咨询专家菊叔王觉菊
Wed, 09/12/2018 - 17:00

0/从硬件角度来看(云主机也要考察硬件性能),一个是加大一点内存,另外就是用ssd云盘。一般情况下,cpu是充足的,内存反而是经常性不足的。当然,用云主机要选可靠一点的厂商,另外一个就是数据中心要选离自己用户近一点的。加大服务器带宽。但是大家所忽略的是,磁盘IO是对系统整体性能最大的约束。所以,如果可以的话,可以配1T的内存,然后把内存mount成disk来用,那是最牛逼了。也是我以后脱离云平台,自己做独立服务器的一种想法。实际上php 7它的运行缓存就全部都是在/run这个目录,这个目录就是一个内存虚拟的磁盘。所以php7可以说是相当鸡贼了,升级php7也是很有必要的。另外,我是把自己的php sessions和opcache都存到内存虚拟盘的。

记得开发varnish的大神说过一句话,他说,在cpu眼里,只有内存和文件,没有存储。cpu通过内存操作文件。就这么简单。这也是这么多年来菊叔认为对我重新认识计算机体系架构最为重要的一句话。所以,其实云平台真的那么好么?我觉得不见得。如果有必要和经济许可的情况下,自己配置超大内存的服务器租用IDC应该是更加高性价比的一种做法。

云平台公司大部分都很鸡贼,内存给你配置的总是很低。实际上我想一颗2core配32G内存,厂商不是做不到,就是贵死。

1/分离数据库到云数据库平台,让云主机只做web server。实际上,云主机限于云盘的io,也不适合做数据库。

2/用linux操作系统,最新版稳定和简单的。我用的是centos7.4,centos是由大名鼎鼎的红帽开源的。做服务器的不二之选。亚马逊的AMI的镜像也很类似。

3/用更强大和小巧的服务器,nginx,采用支持https和http2的配置方式。

4/用最新版本的php,我用的是php7,和php7-fpm(nginx必须的)。

5/启用fastcgi-cache。注意,因为是单机,所以我们用的是fastcgi cache,不是proxy cache。

6/在流量与并发到一定程度的话,我觉得可以用reserve proxy,比如,nginx proxy,或者varnish。但是据说nginx proxy+fastcgi cache比varnish性能更好,这个我不知道,我也没有测过他俩的性能。用过一段时间varnish proxy apache,确实使得系统的负荷下降下来了,原来经常报内存和cpu过载的,后来就没有了。不过改了nginx php-fpm组合以后,cpu和内存使用率一直都比较低了。

因为varnish只支持http流的proxy,所以,如果打算用proxy肯定就还要加一个nginx来转发https流。所以,真的流量比较大的话,又要实现全站随时随地https,那么比较简单的配置proxy的方式是nginx加varnish了。

7/优化网站代码系统,去掉不必要的插件。既为了性能,也为了安全。

8/采用大厂cdn分发的js库和css库,字库。比如,微软,谷歌(谷歌字库是不用翻墙的),jsdliver等。

9/采用redis做key/value的数据库缓存。

10/加大静态文件的缓存时间。

11/从网络角度来讲,对于访问量不大的网站,不要启用cdn。对于访问量大的网站,启用cdn。

像服务器nginx,php fastcgi,还有数据库,比如mariadb,都有优化的细节。这里就先不一个一个来说了。

12/从服务器端配置而言,如果再情况许可的情况下,应该开启https和http2。

varnish说http2可以不需要https就行,我还没有研究。不过在nginx的conf里面开启http2是很简单的,就是在listen后面加上 https http2即可。但是如果你是用nginx做proxy的话,就不能享受http2的好处了。因为nginx proxy服务器暂时不支持http2

 

Add new comment

网站建设
网站优化

话题分类
IT技术

点击转发,手留余香

筑梦·面向 AI 和未来