热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

缘起昨天晚上我在v2ex.com里中宣告www.joyocapital.com博客可以访问,随后被来自全国各地的热心网友蜂拥而入把网站搞挂。有部分小伙伴反馈访问慢,还有一个小伙伴还
缘起

昨天晚上我在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.cnblogs.comleefreemanp3998757.html前言在前一篇随笔《大型网站系统架构的演化》中&# ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 大厂首发!思源笔记docker
    JVMRedisJVM面试内存模型以及分区,需要详细到每个区放什么?GC的两种判定方法GC的三种收集方法:标记清除、标记整理、复制算法的 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • CISCO ASA防火墙Failover+multiple context详细部署By 年糕泰迪[操作系统入门]
    一.文章概述本文主要就CISCOASA防火墙的高可用和扩张性进行阐述和部署。再cisco防火墙系列中主要有3种技术来实现高可用和扩张性。分别是Failover,multiplese ... [详细]
  • php实现文件下载代码一例,
    php教程|php手册php,实现,文件下载,代码,一例,php,实现,文件下载,代码,一例,我们,需要,用到,header,函数,来,发送,php教程-php手册php实现文件下 ... [详细]
  • html锚点是什么详解
    web前端|html教程html,锚点,web前端-html教程学习网页知识入门的肯定是HTML,其中html的锚点到底是干吗的?企业文件微信管理系统源码下载,ubuntu学习网站 ... [详细]
  • php网站_十周后,62%的PHP网站将运行在一个不受支持的PHP版本上
    本文由编程笔记#小编为大家整理,主要介绍了十周后,62%的PHP网站将运行在一个不受支持的PHP版本上相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 栈是一种先进先出的线性表,对么
    常见问题栈,先进先出,线性表常见问题网络电视直播源码php,ubuntu安装固态硬盘,爬虫思路有哪些,php安全实例,江苏360seolzw栈是一种先进先出的线性表,不对。网页挖矿 ... [详细]
author-avatar
牵绊2502897683
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有