Webfunny前端监控如何搭建高并发使用场景

news2024/11/13 14:43:32

Webfunny可以支持千万级别PV的日活量了。但是,我们默认的部署配置,是无法支持这么高的日活量的,需要我们做一些支持高并发的配置和操作,下面让我们一起看下如何让webfunny支持更高的并发量吧,下图为webfunny高并发架构图:

在这里插入图片描述

一、提升mysql最大连接数

正常情况下,如果我们的日志并发量比较高,我们遇到的第一个并发问题,应该是数据库的最大连接数。

如果给mysql设置一个合理的最大连接数,应该就能够支持一定量的并发了。

  1. 如何设置mysql连接数,请参考我的这篇博客:Mysql连接数设置

  2. 如何设置连接池数量,默认设置500,如果并发量高的用户,可以提高连接池数量,配置文件: config/db_local.js

  pool: {
    max: 500,  // 此处可提升
    min: 0,
    acquire: 30000,
    idle: 10000
  }, 

二、多点部署

如果你们日活量达到百万、甚至千万的级别,并且你们只部署了一台机器,那么将会遇到另一个瓶颈,就是服务器的TCP连接数不够用了。一旦出现流量高峰,很多日志上报请求都会连接超时,将会丢失大量的日志数据。

此时需要部署多台服务器,来缓解TCP连接数的压力。但是多台服务器的ip不同,如果才能让上报日志分发到不同的服务器上呢?

方式一(推荐):使用阿里云的负载均衡(SLB),将你的上报域名平均分配到多台机器上,即可实现多点部署。

方式二(自己配置):使用Nginx配置负载均衡,又Nginx来分发这些日志上报请求,配置如下:

http {
  # 分发
  upstream myApps {
        server 111.222.96.101:8011 weight=1; # weight 是权重,代表分发的比例
        server 111.222.96.102:8011 weight=1; # weight 是权重,代表分发的比例
  }
  # 代理
  server {
      location /server/upLog {
                proxy_pass http://myApps/server/upLog;
                proxy_connect_timeout 3000;
                proxy_send_timeout 3000;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
          }
   }  

}

注意:既然是多点部署,那么就需要区分主从服务器。

  1. 选一台服务器作为主服务器,启动方式为:npm run prd;重启命令为:npm run restart

  2. 剩下的服务器全都作为从服务器,启动方式为:npm run slave;重启命令为:npm run reslave;从服务器不会执行查询操作。

三、搭建消息队列

使用消息队列(RabbitMq),主要是为了缓解流量高峰的压力,削峰填谷。目前只能够支持RabbitMq,后续将会暴露出消息接口,以支持多种消息队列。

首先、我们需要多个消息队列服务,一台服务器对应一个消息队列。

你也可以安装在当前服务器上 Rabbitmq安装方法如下:

1)ubantu16 安装RabbitMQ服务软件包,很多教程都要求安装erlang, 但是更新apt以后,直接执行安装命令,会自动安装erlang的核心组件的。(erlang始终无法成功安装,真心累。)

$ apt-get update
$ apt-get install rabbitmq-server // 安装
$ rabbitmq-plugins enable rabbitmq_management // 启动插件,浏览器才能访问

正常情况下是直接成功的,直接访问ip端口号就可以打开了 http://IP:15672, 如下图:

在这里插入图片描述

2)现在我们需要一个有效的登录名和密码,执行如下命令

$ rabbitmqctl add_user username password  // 设置用户名密码
$ rabbitmqctl set_user_tags username administrator  // 设置为管理员身份
$ rabbitmqctl set_permissions -p / username ".*" ".*" ".*"  //为用户设置读写等权限

OK, 现在我们登录进来就是这样的界面,如此消息队列服务我们算是搭建完成了。

在这里插入图片描述

其次、进入monitor/config_variable/config.json文件中,调整参数:messageQueue: true, 进入lib/RabbitMq.js文件中配置消息队列的连接 amqp.createConnection({url: “amqp://用户名:密码@127.0.0.1:5672”});

注意:不可以多台服务器都向同一个消息队列服务添加消息,这样消息队列本身也扛不住。

四、配置读写分离(mysql主从同步)
我们把消息队列服务搭建好以后,就会遇到第二个瓶颈:大数据的查询

因为我们的分析日志的,所以免不了对大数据的分析和查询,如果在进行大量数据查询的时候,遇到了流量高峰,那么数据库的连接数就会瞬间耗尽,从而产生了大量的连接数报警,所以,我需要做读写分离。

  1. 我们需要配置mysql的主从同步,有条件的可以配置一主多从。(一般一主一从也就差不多够用了)配置方法请参考:主从同步配置

主从同步常见问题及处理:常见问题1、常见问题2、常见问题3

PS:主从同步的配置比较麻烦,请用户自己查询相关文档,完成配置,或者直接使用运行商的数据库。

  1. 配置mysql的最大连接数,mysql默认最大连接数很小,至少是设置1000以上(这个我也说不清设置多少最好,一般设置几千应该没问题)

  2. 进入webfunny_monitor/bin/mysqlConfig.js文件中,找到参数「read」,配置从库的连接即可。

好了,webfunny前端监控的高并发配置就算完成了,感兴趣的同学可以直接访问webfunny搭建自己的埋点系统
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095330.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据集格式转化

数据集格式转换的要点是从对应的格式中解析出对应的class和bbox 整体说明: lables_voc_dir: 为存放所有xml的标注文件夹,labels_yolo_dir: 为转换后存放所有xml的标注文件夹images_dir : 为所有图像文件的文件夹。、 注意:代码…

C++手撕简易list

目录 节点的准备 list类 push_back stl容器的遍历和修改 begin end ! 重载* 效果展示: const迭代器 方法一: 方法二: ->的重载 insert push_front erase 展示效果 pop_back && pop_front 效果展示 clear&am…

【 html+css 绚丽Loading 】000030 灵文闪烁符

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 &#x1f495…

【C++】继承相关知识详细梳理

1.继承简介 什么是继承: 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。 继承呈现了面向对象程序设计的层…

python破解[5分钟解决拼多多商家后台字体加密]

可【QQ群】拿源码 进入经营总览想把数据存下来发现返回的json数据部分空白如下 这可怎么办 稳住应该是字体的问题,可能是多多自己实现了某种字体,我们去找他的js 发现如我们所想,进行跟踪,发现的确是在css端进行了字体替换&am…

报警规范管理

报警规则管理 想要获取报警数据,我们首先必须先制定报警规则,会根据不同的设备,不同的物模型来定义报警规则 需求分析 我们先来分析需求,打开原型图 数据来源: 逻辑规则: 1)若多条报警规则是…

CSS-层叠上下文【看这一篇就够了!!!】

目录 前序 z-index设置定位元素层叠顺序 z-index值相同时,写在后面的覆盖写在前面的 z-index值越大,越在上面显示 z-index值为负数 CSS中的层叠上下文 什么是“层叠上下文” 层叠上下文的创建 根层叠上下文 定位元素的传统层叠上下文 层叠顺序…

15:发光二极管布局要求

1.指示灯一般放正面, 靠板边

【Android】Material Design编写更好的UI

Toolbar 对于控件ActionBar我们非常熟悉,就是我们常见的标题栏,但ActionBar只能位于活动的顶部,因此我们更建议使用Toolbar。在新建一个项目的时候都是默认显示ActionBar,我们要使用Toolbar就需要先将标题栏改为不显示 先来看看…

在Ubuntu上使用apt工具安装RabbitMQ

创建安装脚本 cd home/ madir scripts cd scripts 创建脚本前,需要确认Linux版本。不同的版本对应着不同的运行脚本。 lsb_release -a 查看Linux版本 可以看到,我的Ubuntu版本是22.04。 在这里找到对应的脚本复制。 创建脚本文件: ca…

详解树状数组(C/C++)

树状数组(Binary Indexed Tree,简称BIT或Fenwick Tree)是一种用于高效处理数据序列的算法数据结构。它能够支持两个主要操作:单点更新和区间求和,这两个操作的时间复杂度都能达到O(log n),其中 n 是数据序列…

STM32基础篇:SPI片上外设

SPI外设简介 STM32芯片内部集成了SPI片上外设,可由硬件自动执行时钟生成、数据收发等功能,减轻CPU负担。对于STM32F103C8T6,其SPI资源有SPI1、SPI2。 一些参数配置: 8位/16位数据帧高位先行/低位先行时钟频率:PCLK/…

vue3本地运行错误集

1、解决报错ValidationError: Progress Plugin Invalid Options问题 ValidationError: Progress Plugin Invalid Optionsoptions should NOT have additional propertiesoptions should NOT have additional propertiesoptions should NOT have additional propertiesoptions …

SMART PLC 脉冲输出指令PLS应用

200SMART PLC如何实现可调频率可调占空比PWM输出 200smart_PLC如何实现可调频率可调占空比PWM输出_200smart pwm-CSDN博客文章浏览阅读6.4k次,点赞2次,收藏7次。本文介绍了如何在SMART PLC中通过修改原向导接口,实现可调频率和占空比的PWM输出。详细阐述了脉冲周期、占空比…

DMA简述与使用实例

之后要学:SPI / IICDMA 学习的这位up主的视频:全网最清楚的DMA讲解,三种搬运模式三个例子讲清楚(STM32教程基于HAL库和CUBEIDE)_哔哩哔哩_bilibili 目录 01-基本信息 1-概述 2-方向 3-模式 正常模式 轮询模式 …

学习日志8.30--防火墙NAT

目录 一、实验环境配置 二、配置防火墙静态NAT一对一 三、配置防火墙静态NAT多对多 四、配置防火墙NAT端口转换NAPT 五、防火墙smart-nat、easyip 六、防火墙三元组NAT 在学习过基于路由器的NAT网络地址转换,现在学习基于防火墙NAT的网络地址转换,…

python-读写Excel:xlwings库操作

几种操作Excel的python库对比 安装:pip install xlwings 目录 APP实例化对象 工作薄对象 创建工作薄 打开工作薄 工作薄属性 工作表对象 新增工作表 复制表 获取工作表对象 工作表属性 删除和清除表数据及表格式 工作表行高列宽(自动调整) 单元格对象 获取单元…

【hot100篇-python刷题记录】【旋转图像】

R7-矩阵篇 印象题: 思路: 先转置,转置完我们按照列的中间进行对称交换就可以了。 class Solution:def rotate(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead.&qu…

【微机原理】指令JZ和JNZ的区别

🌟 嗨,我是命运之光! 🌍 2024,每日百字,记录时光,感谢有你一路同行。 🚀 携手启航,探索未知,激发潜能,每一步都意义非凡。 JZ(Jump …

祝贺严建兵教授任华中农业大学校长

公众号:生信漫谈,获取最新科研信息! 祝贺严建兵教授任华中农业大学校长https://mp.weixin.qq.com/s?__bizMzkwNjQyNTUwMw&mid2247487040&idx1&sn6800055c9944754be11dc77a30ee1906&chksmc0e9ebb0f79e62a64634d5cd057578ca5…