前言
2003年,小虫站长租用了虚拟主机。
2005年,由于访问人数增加,组装了一台1U服务器(P4/3.0G,4GBX2内存,160GB硬盘X2 做RAID1)拿去托管,成都电信当时的费用约1.2万/年,高攀不起,只能放在外地,大约4000元/年。
早期的托管基本上是没有人工服务的,IDC公司只提供机位,电力,带宽,最多能帮你关机重启一下,至于系统和安全得自己搞定,遇到硬件故障,IDC公司会把服务器给客户发回来,维修好后,再发回去。
在托管的9年里,这台1U服务器搬了三次家。最后一次搬家是在2008年512大地震时期,由于绵阳电信机房受损,搬回成都。
随着云技术的兴起,2014年选择了弹性云主机,更方便、安全、灵活,性价比更高。
但是。站长发现,租用的至强四核甚至八核主机,10多人同时在线也经常满载,而网吧的无盘服务器,一个老奔腾双核同时带50台机器轻轻松松,这又是咋回事呢?
正文
CPU云服务器类型主要分为两类:“虚拟化云服务(虚拟机)”和“裸金属云服务“
虚拟化云服务器是用软件“虚构”的一台服务器,如图。
这是一台虚拟云服务器,vCPU为4核,这个V是指“Virtual”(虚拟的),对应实际的物理CPU型号是E5-2620V2(六核十二线程)。这里的四核,不是把E5-2620V2的服务器的12线程划分其中4个线程让客户独自使用,一般情况下会有很多人来共享这颗处理器。在服务器空闲的时候,这四个线程可以跑得比较顺畅。但是,当其他人计算量一上去,这台主机的性能就下降了,有点类似一辆公交车有12个座位,小李买了4张车票,理论上仿佛占有这台车1/3的资源,但票是没有座位号的,人比较多的时候只能站着。
裸金属云服务器是独占服务器的部分或者全部资源,没人来和您争抢计算资源,但价格昂贵,适合从事金融、游戏、专业大型计算的客户。
有点容易弄混的是,裸金属服务器并不一定是单独一台或者几台物理服务器,也可以是一种硬件层级的虚拟化技术,兼具虚拟机的弹性和物理机的性能及隔离性,独占计算资源,没有虚拟化性能开销和特性损失。类似于小李买了四张车票,这票是可以对号入座的,以此来保证舒适性。
弹性云服务器
弹性云服务器通常是指虚拟机(区别于裸金属服务器),其配置(vCPU数量、内存、硬盘等)可以自由选择,支持中途变更(升降级),升级补差,但降级不退钱,感觉有些无奈。但细细一想,生活中很多时候不都是这样么?例如乘坐火车,硬座升级卧铺要补差价,但是你的卧铺票要换到硬座,只要有空位就行,但退钱没门。
弹性云既然可以升级,先选个稍低的配置,不够再加钱升级看起来非常合理。实际上,由于服务器买的时间越长越划算,假设A主机为7000元/3年,用几天发现性能不足再加3000升级到B主机,此时会发现,如果一次性选B主机实际只需付8600元。
那是不是应该选高配置?也不是,因为配置过高,浪费了。
选取的原则——“适度冗余”。看起来简单四个字,实际做起来比较难。以下五个“软的”方面,都会考验硬件的能力。
1、“静态网页”和“动态网页”对配置要求不同。
静态网页是单纯的HTML页面,访问时不需要和数据库打交道,速度快。
动态和伪静态网页并不是独立存在于服务器的文件,当浏览器发出请求时,服务器要查询数据库后才反馈相应的网页。
大多数功能性较强的网站,是“动静共存”的,无需频繁更改的信息采用静态网页,而交互性功能采用动态设计,有些网站还挂了很多插件来实现较为复杂的功能,当访问量稍大,有几个访客同时刷页面,就会给CPU带来较大的压力。
2、运行环境对硬件要求不同。
LAMP是国际流行的WEB框架,它是Linux+Apache+Mysql+Perl/PHP/Python的缩写,Linux为服务器操作系统,Apache提供Web服务,MySQL为数据库管理系统,PHP作为面向对象的脚本语言(或Perl、Python)。它们本身都是各自独立的开源程序,但常常放在一起使用。
LINUX除了稳定性、安全性、免费等优势外,对硬件要求也较低。
例如,选一款入门级云服务器:2核2G,这配置跑WINDOWS很勉强,其系统本身就最低要1G内存,但跑LINUX就会轻松一些。
3、疯狂爬虫会导致压力急增
在淘汰了托管后,站长选择了一台2核4G内存的云服务器,后来随着访问量的增加,升为4核4G,4核6G,8核8G。从表面看,这是一个正常的操作,但经过长久的观察发现,8核8G的主机,有时CPU占用不足10%,有时却高达80%以上,难不成要升级到16核?
与之对比的是,一台网吧无盘服务器,同时服务50台电脑,一颗老奔腾双核也够用了,虽然vCPU不是真正的物理处理器,8个线程也不至于无法应对十多个访客同时在线吧,vCPU为何如此拉跨呢?
通过查询日志发现,搜索爬虫消耗了大量资源。
修改:.htaccess文件,对googlebot进行限制,mysql负载立刻从80降低到30,CPU从60降到20,立杆见影。
一般情况下,并不建议对知名的蜘蛛进行拦截,会影响排名,但这个实验告诉我们,云服务器要有相当的冗余。
4、网络攻击
网吧的无盘服务器属于局域网,工作压力大但环境单纯。而云服务器属于互联网,面临的环境复杂, 除了善意和恶意的爬虫外,CC攻击也时常出现。
CC攻击模拟多个用户不停的进行访问消耗系统资源的页面,CPU占用迅速升高,导致卡顿、宕机。在现实生活里,有点类似某餐厅突然大量涌入顾客,超过了正常接待量而混乱。在大量的CC攻击下,无论是8核、16核还是更多,都会很快陷入瘫痪。
5、配置的均衡性
带宽不足也会导致CPU占用高,从而造成处理器性能不足的假象。
某月,网站卡顿,检查后发现CPU占用率偏高,服务器后台报警提示带宽不足。经过查找,发现罪归祸首是一张“刚上传的图片“,之前的图片尺寸较小,使用【质量8】保存后体积能控制到300KB内,新图加大了尺寸,再用【质量8】保存,就超过了500KB,看起来好像仅多200KB没多大问题,但10多人同时一刷,就要多消耗3M带宽。最后的解决办法是降低图片质量,用【质量5】保存,这样后台再也没有报警,节约了升级带宽的费用,CPU负载也降下来了。
不仅是中小企业,世界级公司也必须要在“节省带宽”上动动脑筋。例如,打开任何一家知名购物网站,用电脑浏览,会发现图片并不算非常清晰。又如,从事自媒体的人员会发现,当你把一张1.5MB的图片传上去,会被自动压缩到不到200KB,其目的都是为了节省带宽,提升页面的打开速度。
总结
四核或者八核至强云服务器,不如本地的奔腾双核主机,主要原因有两个方面,一是虚拟机的vCPU如同公交车,无法保证随时让客户处于舒适的状态。二是网络服务器的环境异常复杂,复杂的交互功能、疯狂爬虫、CC攻击、配置不均衡等都会导致CPU、内存或者带宽不足,而此时最容易犯的错误是盲目升级,弹性云升级太容易了,点点鼠标就能完成,但上升容易下降难,未找到性能不足的真实原因,以后的每年都会白白浪费资金。