技术人建站指南-网站性能优化(一)

缘起

昨天晚上我在v2ex.com里中宣告www.joyocapital.com博客可以访问,随后被来自全国各地的热心网友蜂拥而入把网站搞挂。有部分小伙伴反馈访问慢,还有一个小伙伴还尝试CC攻击,直接让wordpress小站不可用。我的xmlrpc.php已删除但还是能被cc攻击成功,可见性能差到何种程度。

今天上午至今折腾了博客性能优化。待会儿就要出门办理事情,趁热把经验总结写下来。

wordpress网站加速

为了更好地对比,我记录了网站加速前后的性能测试对比。从chrome浏览器看,TTFB响应>30s。TTFB是接收到响应的首字节前花费的毫秒数,主站http://www.joyocapital.com的服务器处理时间过长。

《技术人建站指南-网站性能优化(一)》

从360云ce.cloud.360.cn/task进行了测试,即使不在杭州,全国各地的访问结果都很慢。

《技术人建站指南-网站性能优化(一)》

《技术人建站指南-网站性能优化(一)》

我们开始性能优化之旅…

性能优化选型

要解决问题,首先得搞清楚问题是什么。经过分析,wordpress的处理链路可以抽象成 以下3个阶段:

Domain->ip->页面计算->数据库计算

在Domain->ip这个阶段,我们可以使用CDN来加速。目前国内外的加速CDN可选范围很广,如阿里云盾、百度云加速、腾讯云XX、知道创宇加速乐、云锁、安全狗等都提供此项服务。国外同类产品做得最大的是cloudflare和akamai。

CDN加速的原理简单说就是在全国各地部署CDN缓存服务器,引导用户在访问时优先选择近源的CDN镜像,整体网络传输链路变短了,服务器压力也会小。

最终我的技术选型是使用百度云加速,说不上很强大,免费的,能用就好。百度云加速网站在这里:next.su.baidu.com。

在ip->页面这个阶段,其实就是要部署wordpress的一些插件能达到这个效果。我主要做了以下优化:

WordPress默认引用了google的font被墙导致页面访问不到或特别慢,通过修改为360的useso.com解决。

WordPress默认使用一个国外的头像服务,同样因为被墙导致访问特别慢,通过禁用头像解决。

WordPress的插件方面我选型使用了Lazy Load,图片懒加载用的,说明只有需要访问图片的时候再加载,平时不需要。

在wordpress目录下wp-config.php添加以下两个设置,表明不需要存储postversion并且开启缓存。

define(‘WPPOSTREVISIONS’, false);

define(‘ENABLE_CACHE’, true);

在wordpress的index.php目录下,找到define(’WPUSETHEMES’, true);

在后面加上:obstart(‘obg zhandler’),表明会使用gzip压缩传输。

在页面计算->数据库阶段,我的技术选型是使用memcached加速方案,安装方法主要是参考以下实施步骤:

[安装memcached]

#yum -y install memcached

[安装 php的memcache插件]

#wget http://pecl.php.net/get/memcache-2.2.6.tgz

tar vxzf memcache-2.2.6.tgz

cd memcache-2.2.6

/usr/bin/phpize (如果不知道phpize在什么位置,可以用find / -name phpize查找)

./configure –enable-memcache –with-php-config=/usr/bin/php-config –with-zlib-dir

make

make install

记录下安装成功后的提示,类似于:

Installing shared extensions: /usr/lib/php/modules/

把这个地址记录下来,增加扩展extension配置文件

查看是否存在 /etc/php.d/memcache.ini 这个文件,如果不存在,我们就自己建立一个

vi /etc/php.d/memcache.ini

增加1行 extension=memcache.so

最后验证一下是否安装完成 php -m|grep memcache

应该会显示memcache

关于php.ini的修改,一般需要重启php-fpm才会生效。

#/etc/init.d/php-fpm restart

可以自己写一个小程序验证下memcache是否生效,相关代码如下:

$memcache = new Memcache; //创建一个memcache对象

$memcache->connect(‘localhost’, 11211) or die (“Could not connect”); //连接Memcached服务器

$memcache->set(‘key’, ‘test’); //设置一个变量到内存中,名称是key 值是test

$get_value = $memcache->get(‘key’); //从内存中取出key的值

echo $get_value;

?>

执行之后没有报错则表明配置成功。我处理时发现的问题是”Memcache类没找到”,回头看之前的步骤,确认是忘记重启php-fpm了。

优化效果

上述这些优化做完后,还是会有一些提升的,再测访问速度就基本没有红色的了。

《技术人建站指南-网站性能优化(一)》

小插曲:wordpress遭受cc攻击的解决方案

昨晚有热心网友测试cc攻击,现在记录解决方案如下:

找到自己的访问日志存储地址,一般在nginx的conf目录下有定义的。

到日志访问存储地址下,使用以下语句看看到底什么ip在刷:

# cat wordpress.log | awk ‘{print $1}’ | uniq -c|sort -rn|head -20

会得到对应的访问top的ip地址,使用iptables把对应ip丢到黑名单即可,譬如:

iptables -I INPUT -s {ip} -j DROP

搞定

后续计划

博客搭起来了,除了能记录一些日常感悟以外,还可以尝试growth Hacking技巧,在实践中提高。

需求也可以来自网友小伙伴,有兴趣及有好主意合作的朋友可以给我留言。

    原文作者:小谷先生
    原文地址: https://www.jianshu.com/p/a6142370c542
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞