热门标签 | 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技巧,在实践中提高。

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


推荐阅读
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 环境配置tips
    一、MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:  1、数据库名与表名是严格区分大小写的;  2、表的别名是严格区分大小写的& ... [详细]
  • SOA架构理解理解SOA架构,了解ESB概念,明白SOA与微服务的区别和联系,了解SOA与热门技术的结合与应用。1、面向服务的架构SOASOA(ServiceOrien ... [详细]
  • 1.安装libeventyuminstalllibevent.x86_64libevent-devel.x86_64没有libevent编译memcached为出错checking ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • java布尔字段用is前缀_POJO类中布尔类型的变量都不要加is前缀详解
    前言对应阿里巴巴开发手册第一章的命名风格的第八条。【强制】POJO类中布尔类型的变量都不要加is前缀,否则部分框架解析会引起序列化错误。反例:定义为基本 ... [详细]
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社区 版权所有