提醒:本文最后更新于 3196 天前,文中所描述的信息可能已发生改变,请仔细核实。

如题。这次更新修补了6个重要的安全漏洞(主要为XSS类)并修正了39个问题,详见发行注记。
算是个比较重要的更新。建议大家尽快升级。
最近忙于工作和一些杂七杂八的吧,不过还是对Nginx的FastCGI和MySQL配置进行调优。
优化结果,丢张测试图,所有测试都在1分钟内完成。

前三次,因为流量清洗的原因,所以测试不完整。
我们来看看第一次测试,一共成功了9W+次访问,有1W多超时,实际接收数据1.72G。

在2500并发的时候,平均600ms+响应;6000并发时,近7500ms+的平均响应时间;在接近7500并发,被流量清洗了。
再来看第五次测试,成功10W+次访问,8k+超时,实际接收数据2G。这是在没有流量清洗下的结果。

在2500并发时,也是平均600ms+的平均响应时间;在3500并发时,有个小高峰,3000ms+的平均响应时间;6500并发时,平均响应达到第二高峰,超过10000ms的响应时间;7500并发时,达到最高峰11500ms+的平均响应时间;9500到1W并发,也是有比较高的响应时间。
针对这些,主要对Nginx的FastCGI规则进行调优,调优结果,使曲线相对平整,不会过于波动起伏。
其大幅度波动原因,主要在于缓存过期后,更新缓存时没有锁导致的,当并发高加上缓存过期,FastCGI可能处理着上W条更新缓存的请求,导致这一情况发生。
解决方案主要是使用fastcgi_cache_lock,还有在fastcgi_cache_use_stale添加updating项。
最后针对MySQL总体进行了微调,略微降低平均响应时间值,有了最后一次测试结果。

成功了20W+次的访问,有8K+的超时及8个网络错误,实际接受数据3.75G。可以见到2500并发时,只要平均500ms+的响应时间了;在10000并发时,平均响应时间在2000ms左右。
对于这个结果还是比较满意的,超时对比成功次数,其实算是比较少的,主要还在于服务器的IO及运算能力达不到的原因导致。
怎么说呢,在没有Varnish的情况下,负载在大并发下还是显得有些高,或者说高出不少,有时间我会再看看缓存规则这块,能不能有所改善。
关于测试工具,来自SendGrid Lab的Loader,工具免费使用,其免费套餐对个人来说足够了。
需要加入白名单的测试IP有:
54.85.131.200
52.86.198.91
54.208.68.192
54.85.214.144
52.91.128.14
54.89.44.6
54.175.144.60
52.91.118.90
54.85.128.114
54.197.122.196
52.87.220.244
54.162.105.71
52.87.255.0
52.87.219.148
52.55.246.193
52.90.0.22
172.217.4.168
172.217.5.72
172.217.11.72
172.217.5.200
216.58.193.200
216.58.216.40
216.58.216.8
216.58.219.40
216.58.219.8
172.217.4.136
172.217.11.168
54.234.74.136
34.203.38.68
转载请注明转自: kn007的个人博客 的《更新至WordPress 4.7.3》

膜拜,技术小白只能看看
@空空裤兜: 还真是好久不见。
赞
@老虎: 谢谢
这个测试工具是什么?
@Sumhat: 好久不见你评论啊。
是Loader,我在文章补充说明了。
@kn007: 嗯,前一阵子博客挂了,加上自己有其它事情在忙,就没怎么活动了。
从我的博客的性能来看,Varnish是必要的,Wordpress本身的CPU消耗过高。
@Sumhat: 嗯嗯,Varnish我用了很久了,应该比你们都要早得多。
我很喜欢它的规则,非常灵活,而且占用低。
放弃的原因主要是还是我烦了要同时维护Nginx和Varnish,太多站点了,443给nginx,80给varnish,然后还要nginx各种后端端口监听,Varnish还要VCL维护。
第二就是流量降低,也没什么攻击,就没什么必要了。我之前把Varnish的oom值提高了,攻击时,varnish会被oom,流量清洗完后会重启varnish。
第三就是大流量时,有个延迟异常,我暂时没测出原因。所以临时性放弃了。
@Sumhat: 你现在服务器是怎样的架构方式?什么环境?
@kn007: 前端是GCE的load balancer,用于CDN分流和TLS Termination,当中使用了n台Varnish机器做静态化,后端是一台WordPress(Apache)+一台MySQL。机器用的都是GCE的micro机型,每台主机上运行不了太多东西,于是都分开了。
@Sumhat: 这么多台,可以的,很强势。GCE高富帅啊。
我是单台高配,所有东西都在上面。国内通过CDN分流了静态文件,国外全部回源。
后端Wordpress由Nginx with FastCGI proxy pass PHP-FPM。
你CDN用哪家?
@kn007: Google自己的CDN
@Sumhat:
壕,我只能说
@Sumhat: 话说你有没有试着在Loader那测试下网站,有机会发个曲线来看看?
我挺想知道Varnish能发挥多大,因为我已经卸了,而且配置改了,就不重配置后测试了。
@kn007: 测了,没什么效果,所有的请求都被CDN挡掉了,响应时间100ms左右。
@Sumhat:
这样是吧。。
@kn007: 我把所有不包含评论的页面全放进了CDN,含评论的页面会穿透CDN到Varnish,大概再加个50ms左右,如果Varnish没缓存再回源,回源大约需要300ms。如果每个请求都回源,测出来应该和你的图差不多。
@Sumhat: 嗯,CDN还是方便、省事。
pipe给Varnish其实还好,都是G家的服务。
请教下用啥测试,我也刚刚升级了……
@sunnywolf: 是Loader,我在文章补充说明了。
我的首页GET达到100并发的时候延迟已经有2s了。
@BiN:
优化一下吧。
那个白名单是SendGrid Lab那边的ip吗?
@World: 是啊,这些ip进入我的防火墙了。
@kn007:
你的防火墙配的太高了
@World: 软防而已,也没什么用
4.71被人用XSS漏洞爆了一下,被吓怕了,有更新立马跟进
@aunsen: 还有人玩你
我还好,无人问津
@kn007: 鬼知道啊,尼玛吓死我了啊!
我的设置的自动更新WP。
@夏日博客: 嗯,我也是。
这并不能阻挡我更新文章
这负荷…牛…已经没啥访问量的我的博客就随便了
@zwwooooo: 谦虚了,z大
@zwwooooo: 我想到一连串的经济数据图。。。。和心电图。。。。我那没得研究
@zwwooooo: z大好谦虚
自动更新。。。
以前还想干掉这种热升级,现在懒得管,到也方便了不少。
@be.truth: 自动更新是好事啊。