近日服务器出现如下故障:在线人数80多的时侯,登陆服务器发现CPU利用率并不怎以高,内存也还剩余很多,但是远程连接上服务器后就是很卡很卡。时不时还掉线。
但是之前服务器曾经经历过200多人同时在线的情况,那个时候也只是CPU利用率偶尔占用有点高,所以那时侯就把数据库迁移到单独的一台服务器上了。为什么会出现这种情况呢?
到控制台查看服务器监控情况,cpu正常范围,内存也在正常范围,问题出在了带宽上,居然已经超出了我原有的固定带宽,于是尝试临时增加一下带宽,2-3分钟后带宽生效再登服务器,确实问题解决了。登陆服务器不卡了,网站在线人数也一下子翻了一倍。
故障分析:上面有提到之前曾经在线人数达到了200也没有问题,但是上面也有提到我之前200人在线是数据库放在本地的时侯。当我数据库迁移到了另一台服务器后,一个用户访问网站时,服务器要先从数据库服务器读取数据。这样现在的一个用户访问消耗的流量相比于之前就要翻了一倍。如:一个页面用户打开时需要流量为50k,那1M带宽就可以承受200个人同时访问。但是由于数据库不在本地,所以可能需要服务器再向数据库服务器请求20-30k的流量,这样,虽然一个用户访问50k的页面,但实际上服务器却要消虚70-80k的流量,这样1M带宽就不能像以前那样带动200人在线,只能有100多了。
当然这是因为我网站并非做了静态处理的情况下,其实这种情况我还可以将页面静态化,这样用户访问网站时就不会向数据库服务器请求数据了。也可以极大地减少带宽使用率。