升级了一个网站程序

没有想象中重要。

最近柠檬的网站经常收到 Dnspod 的网站监控短信,主要提示网站没有响应,一个短信提示宕机,一个短信提示网站恢复,还会告诉你网站宕机几分钟。

开始也没当回事,因为自己点开网站看,访问也挺正常。不过网站的用户群里和微信小程序的客服消息反馈里也经常有人反应网站或者小程序内容加载不出来。

我偶尔给回两句,再试一下吧,一般是服务器偶尔负载比较高,过一会就好了。

前段时间针对网站数据库负载高,刚优化了程序,把网站的一部分查询都做成了静态缓存,还单独针对静态缓存这个事写过一个日记记录。

数据库查询压力降下来了。但是服务器的压力好像一直没降下来,直到有一天,我收到十几条反馈说网站完全打不开了,这才意识到服务器可能完全宕机了。

【腾讯云】DNSPod1月3日6时01分宕机的www..com (39.56.88.10)于1月3日10时27分恢复。

但自己测试了一下 服务器响应时间很长,但也不是完全的宕机,好像就是反应不过来的样子。因为网站访问实在太慢了,响应很多是失败的。

想了想,前几天自己改了一下网站后台,尝试过把后台无法访问的问题修复了,别的没有干过什么大的改动。再想想,最近还把一台过期没有续费的服务器上面的几个web服务,都放到了这一台服务器上。

难到是调整nginx和网站缓存内容时出问题了吗?

仔细排查了一遍,配置也没发现异常,看服务器负载却异常的高,数据库却没有压力,再想一想,要排查是不是服务器中病毒或者是遭到ddos攻击了?

排查了服务器进程,没有发现异常进程,但发现php-fpm进程异常多,而且进程堵塞特别严重。那就从php-fpm进程排查一下吧。

先从nginx日志看访问,一看,实时的nginx日志跑到飞起,访问请求数超乎认知,以前是几秒钟一个,现在日志跑的速度直接看不清楚字符,分析日志内容都需要手动暂停新日志滚动。

开始我分析可能是被ddos了,但看日志基本上百度爬虫协议的请求,开始我以为是虚假爬虫,但是仔细分析了一下爬虫的 ip 地址段 123.125.71.* ,是真百度爬虫的ip段。

我一看,真百度爬虫居然这么疯狂的爬网站,去百度站长后台看了下爬虫抓取日志,确实是最近爬虫爬取次数太多了,最高的一天差不多爬了18万次,以前只是一天爬几千次几万次,一下子增加了了几倍,十几倍,一台2G2核的服务器受不了。真实用户访问也只有几千次,加上资源请求也就几万次。爬虫比真实用户访问还要多,进而拖垮了整个网站。

升级了一个网站程序

看爬虫的响应时间也越来越高,最近直接崩掉了。但爬虫好像还没感知到网站出现问题了 还在不断地加大爬取力度。也许需要针对爬虫做下机器学习参数的训练了。

升级了一个网站程序

找到问题原因了,那就申请调低百度爬虫的抓取频次。不过这个频次调整也要等第二天才能生效。

既然今天还要被爬虫爬的访问不了。索性根据大的流量访问进行一下系统优化,现成的模拟流量,可以用来练习真实流量突增时如何快速应对,也许经过优化以后能真的在一台服务器扛住这么大的请求。

最快的方法就是保证网站降级可用的情况下将网站静态网页和资源部分上cdn加速。可以快速通过切换域名解析的方式将大的流量洪峰从源站迁移到加速节点。

但在切换上cdn加速的时候又遇到了一些问题,本身网站域名就上过cdn加速的,后来因为觉得流量不大,用cdn加速动态网站反而会增加整个站点的架构复杂性,就改为直接解析了到服务器的模式了。

那次改造以后,在七牛的cdn加速和云存储缓存经过各种设置,已经没法直接加速动态域名了,如果想要通过七牛融合cdn加速,需要先修改源站缓存和配置https,但源站到云存储到cdn缓存的方式切换,在源站压力巨大的情况下硬切换容易出现源站无响应也被云存储缓存,导致cdn加速端也无法达到分流压力的目的。

本来是计划直接用腾讯云的动态加速,但七牛也采购过腾讯云的cdn服务,七牛的域名配置不删除,不能在腾讯云的cdn开启服务。七牛的系统经过多次架构升级,各种操作不能自助完成,通过工单联系客服,折腾了一天,配置好以后,测试七牛的源站ip加速效果不合适,有些资源需要访问云存储和动态解析有冲突。

开了一段时间的七牛融合cdn,然后网站服务器功能彻底不行了,样式和缓存功能都失效了。

再切换回源站解析的时候,又遇到网站后台和缓存各种无法写入。网站彻底崩溃了。cdn没用起来,网站原来用的是DiscuzX 2.5的程序也不能用了,各种程序出问题。

最后怎么办的?

我想既然网站都已经停摆了几天了,好像也没人找我恢复网站。网站的重要性基本为零了,DiscuzX 程序的那些功能基本没人用了,只要保证课程学习和小程序接口能用就能满足需求。

既然如此,趁着网站崩溃,直接一步到位,把网站程序进行一次升级好了。

DiscuzX 这个社区程序也有年头了,随着个人站长的时代火爆一时,后来 戴志康和康盛创想被腾讯收购以后,戴志康离职做天使投资,团队成员解散到腾讯云,Discuz 代码一度变为了社区维护产品。

现在站长时代的知名人物,Dnspod 的创始人吴洪声在 Dnspod 和公司被腾讯收购以后离开腾讯,吴洪声 奶罩 现在又再次回到腾讯云,把 Discuz 创始人离开后变成社区版的 DiscuzX 又收了回来,再次准备开始程序后续的迭代和维护了,据说马上就会发布 Discuz! Q 版本。

说回升级程序,这个网站用的旧版本 Discuz X 2.5还不能一次升级到最新版,还需要先升级到X3.2版本,再升级到X3.4版本(社区维护版本)。

升级的过程,折腾了两天,一直没法自动完成升级,主要卡在数据库的帖子表升级不成功,后来在社区找到了手动跳过数据升级的步骤,先把升级步骤走完。

升级以后再把需要升级的数据表手动切换以后手动修改数据配置。还是没能完整还原新版的数据架构,但经过一顿操作,算是把程序升级到了最新版。

再次把网站打开访问,感觉服务器压力变小了。这个网站的主要程序,在关闭了接近5天的情况下,根本没产生什么影响。

原来,我们以为很重要的东西,在消失不能用以后,带来的影响,可能微乎其微。

我们原本以为自己网站是互联网的一部分,但现在看来,站长的时代已经过去了,现在是知识过剩的时代,这个网站提供的内容,只是互联网中无数内容中的沧海一粟。

存在或者消失,所能影响的范围只是微乎其微,甚至可以忽略不计。

原来以为可以靠这个网站拯救世界,现在看来,能拯救自己的时间不被这些事情耽误就是一件大事。