首页 > 其他分享 >聊聊使用错误采集平台sentry踩到的坑

聊聊使用错误采集平台sentry踩到的坑

时间:2023-07-11 11:45:13浏览次数:41  
标签:Sentry socket 错误 开发人员 sentry 采集 聊聊 uWSGI

前言

sentry简介

Sentry 是一款专业的企业级错误跟踪和日志分析工具,旨在帮助开发人员、管理员和产品经理跟踪、分析和解决应用程序错误和性能问题。

Sentry 的主要功能和优点包括:

错误跟踪: Sentry 可以跟踪应用程序中的错误,并将它们记录下来,以便开发人员能够快速定位和解决问题。

日志分析: Sentry 可以分析应用程序的日志,并提供详细的信息,如错误级别、调用堆栈、数据库访问等,以帮助开发人员快速定位和解决问题。

通知和警报: Sentry 可以通过电子邮件、Slack、PagerDuty 等渠道通知开发人员错误和性能问题的发生,以便及时响应和解决问题。

可扩展性: Sentry 支持自定义错误消息、扩展错误跟踪功能等,开发人员可以根据自己的需求进行自定义和扩展。

团队协作: Sentry 支持团队协作,可以方便地共享错误和日志信息,并支持多人同时编辑和评论。

总的来说,Sentry 是一款功能强大、易于使用的企业级错误跟踪和日志分析工具,可以帮助开发人员和管理人员更好地管理和解决应用程序中的错误和性能问题。

本文主要聊下在使用sentry过程中遇到的一些问题

问题锦集

问题一:uWSGI listen queue of socket "127.0.0.1:42563" (fd: 3) full !!! (101/100)

这是由于uWSGI的监听队列满了,默认的监听队列长度为100,把监听队列调大就行

具体操作,修改/onpremise/sentry/sentry.conf.py

SENTRY_WEB_OPTIONS = {
    ....
    "listen":10240,
   ....
}  

不过调了,重启后大概率会报

Listen queue size is greater than the system max net.core.somaxconn (128)

此时要修改系统参数,如果是通过宿主机部署,则执行vim /etc/sysctl.conf,添加如下内容

# 用于设置内核无法及时处理网络接口收到的数据包时允许发送到队列的最大数据包数目,默认为128。也就是每个监听的socket,在没有accept之前,等待处理的socket队列长度
net.core.somaxconn = 10240

然后执行sysctl -p 重新加载参数。不过如果是基于docker-compose部署sentry,这么加是没效果的。得通过在docker-compose.yml做如下配置

示例:

version: '3'
services:
   ...:
    image: ...
    container_name: ...
    privileged: true
    sysctls:
      net.core.somaxcomm: '10240'

可以查看如下文档
https://github.com/docker/compose/issues/3765#issuecomment-402929969

问题二:a client request body is buffered to a temporary file

在运行大概一周会,再次报

uWSGI listen queue of socket "127.0.0.1:43523" (fd: 3) full !!! (10241/10240)

说明队列又满了,于是看了nginx,出现问题二的错误,这个问题是因为客户端请求体的缓冲区太小导致写入临时文件

因此可以通过配置如下参数

client_max_body_size 100m;
 client_body_buffer_size 10M;

将请求体缓存区大小调大。不过调了这个并没解决

uWSGI listen queue of socket "127.0.0.1:43523" (fd: 3)

后边调大uWSGI 线程数(默认workers是4,thread是3)和keepalive(默认是30s)时长,具体操作如下,修改/onpremise/sentry/sentry.conf.py ,根据系统的cpu核数,适当的调整workers数和thread数,示例配置如下

SENTRY_WEB_OPTIONS = {
   ....
    "so-keepalive": True,
    # Keep this between 15s-75s as that's what Relay supports
    "http-keepalive": 60,
    # the number of web workers
    "workers": 8,
    "threads": 8,
 
}

问题三:worker 3 lifetime reached, it was running for 86401 second(s)

程序运行大概一周后,不再报

uWSGI listen queue of socket "127.0.0.1:43523" (fd: 3) full 

转而报问题三的错,后边通过https://stackoverflow.com/questions/66489889/uwsgi-resets-worker-on-lifetime-reached-causes-downtime找到解决方案,就是将max-worker-lifetime改为 max-worker-lifetime-delta
具体原因可以查看
https://github.com/unbit/uwsgi/issues/2020

示例配置

修改/onpremise/sentry/sentry.conf.py

SENTRY_WEB_OPTIONS = {
    ....
    "max-worker-lifetime-delta":86400,
   ....
}  

至此sentry运行了大半年都没出现上述问题

总结

本文主要是记录在使用sentry过程中,遇到的问题,为什么会记录,因为我在排错的过程中,我一开始是去官方github看issues,看有没有解决答案,其中看到要么是纯理论要么是建议升级版本,通过搜索引擎查了一些资料,也试了很多,发现没解决问题,或者看似解决了,后面又复现了。于是就写了这篇文章,一来可以复盘一下,二来是希望可以帮助到有出现类似问题的伙伴

标签:Sentry,socket,错误,开发人员,sentry,采集,聊聊,uWSGI
From: https://www.cnblogs.com/linyb-geek/p/17348954.html

相关文章

  • 整车控制器 新能源电动车,tcu,hcu控制器,十路模拟量采集,
    整车控制器新能源电动车,tcu,hcu控制器,十路模拟量采集,十路高边输出,十路底边出输出,十路高有效,十路低有效。飞思卡尔5634芯片,控制器量产极。支持matlab自动代码生成。包含ccp标定,inca标定。ID:153000661321444505......
  • 聊聊Zookeeper技术内幕之客户端与SetData请求处理
    从客户端会话创建到网络连接、请求处理,简单的叙述下流程与逻辑客户端客户端是开发人员使用ZooKeeper最主要的途径,ZooKeeper的客户端主要由以下几个核心组件组成。ZooKeeper实例:客户端的入口。ClientWatchManager:客户端Watcher管理器。HostProvider:客户端地址列表管理器(管理......
  • 聊聊WPF中字体的设置
    1.今天帮同事调试一个字体的bug:TextBox中的中文显示大小不一致,比如包含”杰“,”热“。原因是WPF针对点阵字体需要制定特定字体才能正确渲染,比如中文应该设置为”SimSun:2.如果一段文本中既包含中文又包含英文,如何不同设置字体呢?方法:FontFamily支持2个字体设置,比如FontFam......
  • api接口技术开发分享,亚马逊国际获得AMAZON商品详情数据采集商品规格信息列表示例说明
    ​ 亚马逊商品详情API接口的作用是提供对亚马逊平台上商品的详细信息进行访问和操作的功能。通过调用该API接口,开发者可以获取亚马逊商品的标题、描述、价格、库存、销量、评价、图片等信息,并且可以对商品进行购买、加入购物车、添加评论等操作。这个API接口可以用于构建电商平......
  • 岩土工程中的振弦类采集仪完整解决方案的要点
    岩土工程中的振弦类采集仪完整解决方案的要点岩土工程中的振弦类采集仪是一种用于测量土的动力特性的重要工具。它利用振弦的共振频率来确定土的剪切波速度和阻尼比等参数,这些参数对土的力学性质有着重要的影响。在该领域中,振弦类采集仪的完整解决方案包括以下几个方面: 1.仪......
  • 岩土工程中的振弦类采集仪完整解决方案的要点
    岩土工程中的振弦类采集仪完整解决方案的要点岩土工程中的振弦类采集仪是一种用于测量土的动力特性的重要工具。它利用振弦的共振频率来确定土的剪切波速度和阻尼比等参数,这些参数对土的力学性质有着重要的影响。在该领域中,振弦类采集仪的完整解决方案包括以下几个方面:1.仪器选择......
  • 三菱CNC数控数据采集网络配置
    菱数控系统在国内比较少见比不过国外的fanuc西门子等,和国内的一线数控品牌比起来性价比又很低。api接口如图  废话不多说,直接开撸一概述 Windows界面在三菱CNCM700/M800系列数控系统中的应用以及CNCC70系列。产品可以通过消除对内部处理的了解来加速开发计算机数......
  • 台湾新代数控系统数据采集CNC系列通讯网络配置
    新代数控为Wince系统,近几年的新代都焊接了网口以及集成了api接口 控制器版本   架构新代的Dipole功能将人机与核心分离,让使用者于前台的应用程序(例如标准人机),透过因特网,进行操控后台的控制器。使用者可以藉由这个架构进行远程监控、远程诊断。前台应用程序的开发环境......
  • KNDCNC凯恩帝数控设备数据采集
    凯恩帝算是国内数控系统比较好的一种凯恩帝目前在接口部分分为两种,一种是调用动态链接库的方式,一种是通过restapi的方式http请求,前者采集数据没有后者多,且支持动态链接库基本都支持了restapi请求。 IP设定方式程序管理->文件管理->网络->软键盘右键=>配置网络API开启方式 ......
  • Fanuc发那科法兰克数控系统采集系列教程完整版(数据采集、网络配置、教程)
    Fanuc数控系统初探 FANUC是日本一家专门研究数控系统的公司,成立于1956年。是世界上最大的专业数控系统生产厂家,占据了全球70%的市场份额。FANUC于1959年首先推出了电液步进电机,在后来的若干年中逐步发展并完善了以硬件为主的开环数控系统。进入70年代,微电子技术、功率电子技......