近期运维发现搜索系统的内网流量经常超过百兆每秒,经过排查发现有时百度会批量抓取页面,导致页面上的相关内容搜索接口被大量调用,由于搜索系统各服务器之间做了分布式,所以大量的数据交换导致带宽几乎被占满。于是计划取消服务器之间分布式,通过互相拷贝索引数据后做单机多个实例做分布式。上线一台测试机后发现流量降得很低,但是平均负载比之前高出不少,通过vmstat命令发现cpu核心的使用数量很不均匀,经常从0跳到十几。原因是做成分布式的时候,每次请求都会均匀的把查询请求分布到多台服务器,再加上服务器之间的数据传输、解包会花费一定的时间,导致cpu核的使用更均匀,并发低,变化也更平缓。而采用单机分布式,每次查询几乎没有缓冲的时间,一次请求就并发使用多个核心,请求未轮询到就是0,cpu使用率和变化率都非常不合理。
最终采取了一部分本地,一部分远程的分布式配置方式,将内网传输流量和cpu核心使用调整到了一个相对合理状态。关于系统优化需要将各个方面综合考虑,调整宜缓不宜急。
转载请注明出处:https://my.oschina.net/u/554660/blog/edit/1305255