雨翔河
首页
列表
关于
负载均衡策略出现问题
2018-11-21 12:48
公司某集群是针对 `微信(为啥这几个字是敏感词汇了。。。)公众号` 的,基本是可以说是完全面向用户的。 这个项目比较老,用户状态是用session来记录的,可能原来是单机运行,所以没有考虑会话层的分布式,后来用户量慢慢增长之后,架构没有随着变化,只是一味的增加了机器,而针对session的共享并没有做太多的操作,而是很暴力的改变了网关的负载均衡策略,让相同cookie的用户流量打在同一台机器上面,也就是说用cookie做的hash,进行负载均衡。 问题: 当早高峰和晚高峰的时候1号机器经常出现CPU满,内存满,然后极端情况出现宕机,而集群中的其他机器运行良好,吃瓜看戏。 当时觉得是偶然现象没去看原因,有一次直接宕机了引起了警惕,我进去jvm日志看了下线程占用都是垃圾回收占用最多,马上看了下jmap的日志,xxxSessionxxx对象和ConcurentHashMap是稳稳的在第四和第五,而且内存占用很高,另外几台机器都很正常,没有这种情况。马上想到有用户流量异常了全打在了这台机器上面,捞了一下accesslog,发现大量的腾讯的IP在请求这台机器,当时脑子一懵,ddos?不可能吧,看了下请求的链接,马上醒悟,是微信的消息回调,所有的微信消息回调流量全部打在了一号机器。 马上找运维看了负载均衡策略,果然这个负载均衡策略很坑,采用cookie做hash的话,有cookie的时候能均衡,但是没有cookie的时候hash到的都是一号机器(外来流量接口请求一般情况是不会携带cookie的),最后改成了没有cookie的时候网关手动加上一个随机cookie串,流量正常了,一号机器风平浪静了。
类型:工作
标签:负载均衡,微信
Copyright © 雨翔河
我与我周旋久
独孤影
开源实验室