不知道大家有没有遇到一个问题,就是服务器CPU经常会跳100%,但是网站却其实却没什么访问量,查看服务器带宽也是正常的,那为何CPU却偶尔跳100%呢?
对于这个问题主机吧上周也遇到过类似的问题,查了挺久,一开始以为是CC攻击,还把网站设置全部缓存,结果查看了下CDN,消耗流量与请求量并没有异常,说明并不是攻击问题。
最后我们从服务器下手,以为是服务器中毒了,然后我们发现来自网站的数据库请求并发非常高,连接中的经常达200+,也就是这导致了服务器一但有了稍微高一点的访问量,就会出现CPU100%的情况。
找到原因后我们要怎么解决呢? 当然是合理分配资源,以主机吧用的宝塔面板为例,进入软件商店,找到mysql数据库,进入设置
找到性能调整,根据自己的服务器配置选择相应的优化方案,比如我的是4G内存的,那么就选2-4G,可以选小的方案,但不要选大的,因为这样只会让数据库保持连接超过你服务器的承受范围,影响服务器性能。
选择完保存后,我们再进入PHP设置,性能调整,网站如果每天只有2000+IP访问量的,建议选50或者100并发,这里写的并发是让你的服务器一但达到这么多并发了,系统会自动清除掉进程,达到服务器优化目的,所以不是设置越大越好,因为一但你并发达56百的时候,系统却没有清除进程,一般服务器是受不住的,会出现卡慢设置打不开的状态,所以选择合适自己服务器配置的优化状态很重要,主机吧就是选100并发的。
主机吧设置完后,通过一周的观察没有再出现卡慢的情况了,CPU也不会跳100%了。
以上都是在非被攻击的情况下设置有效,如果你是被人CC攻击的,那么还是给自己弄个高防CDN吧,这里主机吧推荐百度云加速,拦截CC攻击效果棒棒哒!