Hi,春哥
现在在用OpenResty搭建一个代理服务器,为上万域名提供代理反向代理,需要统计下每个域名的访问请求频率(以分钟为单位统计),统计结果写入到数据库里。
每个域名的QPS写入到ngx.shared.DICT里,以域名为KEY,目前纠结的是如何触发写数据库操作,有下面几种方案:
1、只使用一个ngx.timer,每分钟触发后遍历该DICT里的所有记录,并写入到数据库里,同时记数清零
=> 怕性能有很大问题,因为域名数是上万的,遍历的话性能消耗大
2、在OpenResty外部弄一个独立程序,每隔一分钟主动去请求OpenResty获取单个域名的QPS,由这个独立程序写入数据库
=> 性能问题,独立程序每隔1分钟会发上万请求到OpenResty
3、基于access.log来做日志分析
=> 磁盘性能问题,因为每秒HTTP请求数可能很大,10W以上
想听听你的意见,看看有没有更好的解决方案