首先,web优化是一个综合,有目的优化,并不是把一味的把某方面做到极致,而是全方位的提升。就像木桶效应一样,如果我们一味的去优化mysql,但是web服务器已经支持不了了,那这优化根本没有什么用。
我们要知道为什么要去优化,因为web支持不住了,请求太久了,web请求超时了,那就是极需要优化。首先,要找到出现这种问题导致的原因,查一下web服务器的cpu占用,还有内存使用情况,这个去阿里云的服务平台上就可以看出来了,你也可以更快的,直接上服务器用top命令去看一下情况
主要看上图的 cpu和free,cpu表示现在系统的cpu使用率,超过70%的话要看一下是那些进程占用了,free也是同样的道理,一般如果有问题的话,这个free都是0。我遇到过的情况就是跑了几十个php进程,吃光了cpu,然后就去看一下web日志,发现某些接口请求的很慢,一个要几秒钟甚至更长,本地都是经过测试的,单个请求不会那么慢,这让我怀疑mysql那边出了问题。所以去看了一下mysql服务器的情况,结果发现,cpu吃了80%,几十页的慢查询。天啊,这是怎么一回事。马上临时加了读写分离,情况就好了。后面的话看对应的慢日志,哪些接口,哪些sql请求慢了,代码再具体的优化。
如果上面查询都没问题,但是访问还是很慢,这有另一种可能,就是带宽吃完了,这情况在直播很容易出现,我们这边也是有一个类似直播的东西,不过不是传输视频,而是用户数据的东西,因为要不断的传,所以很容易也吃光了我们的带宽,这种情况比较难解决,因为他大部分不是代码的问题,只能通过说用什么方式去压缩,比如说gzip,减少数据的传输,比如说标点符号不要了。不然就只能花钱了,带宽这种是硬性条件,直播行业最大的消耗就是带宽。
最后,优化是各方各面的,有时候连自己的想不到,比如说redis可以做负载,之前想着,redis已经够强大的了,一般不会有什么问题吧,但事实上,当业务上涨的后,什么东西都会成为瓶颈,优化这些东西都仅仅只是解决暂时的问题,永远无法彻底解决,除非业务停滞。