go语言 socket: too many open files 错误分析

news2024/10/6 22:30:45

问题背景:

近期针对老的PHP接口做了迁移重构,用golang重新实现,在上线之前,测试进行了压测,压测的量级为:200请求/s, 连续请求10s,发现接口出现大量超时错误,查看日志发现错误信息为:socket: too many open files (测试服务器配置:4核8G)

问题分析:

出现问题后,心里大概猜测是新版go接口使用了大量协程并发的去调用其他服务获取数据,导致一瞬间将socket链接数占满导致的

首先查看了系统的文件描述符打开限制, 为65535:

 然后让测试帮忙重新压测,查看项目进程使用的文件描述符数量:

发现并没有达到系统限制 

然后百度进行查询,才知道每个进程有自己的文件描述限制,查看方式如下:

cat /proc/839357/limits

 可以看到,当前项目进程的文件描述限制为 1024, 那到这里,一下就明朗了,确实是文件描述符不够用导致的

那么问题来了,这个进程的文件描述符石谁来控制的呢,我想到我们的go服务使用守护进程来进行统一管理的,百度查询后了解到,守护进程有一个默认的文件描述符配置,初始值为1024,不做修改的话,守护进程启动的每个服务,文件描述限制都是1024,如下图:

问题解决:

 为了临时解决此问题,决定修改为65535,发现改了配置之后,reload、update都不生效,必须重启守护进程,这里要特别注意

因为线上守护进程不能随意重启,所以通过代码修改了此配置,代码如下:

syscall.Setrlimit(syscall.RLIMIT_NOFILE, &syscall.Rlimit{
		Max: 65535,
		Cur: 65535,
})

至此,这个问题算是临时解决,可以正常上线

深层次思考:

通过这个问题,可以看出系统本身的抗并发能力很弱,所以上线后又进行一次具体的分析,分析思路如下:

  • 模拟压测请求,查看并发情况下,开启的协程数量 (基本协程的使用都是请求其他服务的接口,通过这个来看对其他服务的并发调用情况)
  • 查看依赖服务主要接口的抗并发能力,在并发量大的情况下,依赖服务是否存在问题从而影响web端
  • 调用其他服务是否使用了连接池,tcp是否进行了复用,链接是否正常关闭
  • 调用其他服务是否有做超时熔断以此来保证当前服务的稳定性
  • 当前服务是否有做限流控制,当并发超过承受能力后,新的流量只会机器压力更大导致服务出现更多的问题
  • 对携程的使用是否要加以控制,比如使用协程池

go萌新一枚,后续的线上问题以及解决过程会持续更新

下篇文章会针对各项思考去逐个分析

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

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

相关文章

前缀和模板算法

一)模板前缀和 【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) 前缀和:快速的得出数组中某一段连续区间的和 暴力破解的话需要从头到尾的进行遍历,时间复杂度就可以达到O(N),而前缀和时间复杂度是可以达到O(1)的 第一步:预处理创建出一个前缀和数组dp&a…

RTMP简介

简介 RTMP协议是Real Time Message Protocal(实时传输协议的缩写),同时Adobe公司提供的一种应用层协议,用来解决多没意思数据流传输的 多路复用和分包问题。 RTMP是应用层协议,采用TCP来保证可靠的传输在TCP完成握手连接建立后&#xff0c…

【动手学深度学习】--03.多层感知机MLP

文章目录 多层感知机1.原理1.1感知机1.2多层感知机MLP1.3激活函数 2.从零开始实现多层感知机2.1初始化模型参数2.2激活函数2.3 模型2.4损失函数2.5训练 3.多层感知机的简洁实现3.1模型3.2训练 多层感知机 1.原理 官方笔记:多层感知机 1.1感知机 训练感知机 收敛定…

SEO 基础知识? 2023学习SEO最佳指南

文章目录 搜索引擎优化基础知识什么是搜索引擎优化?为什么搜索引擎优化很重要?SEO有什么好处?如何做搜索引擎优化关键词研究内容优化网站结构优化(页面SEO)外部链接优化移动优化分析和迭代(技术SEO) 为 SEO 成功做好准…

蓝牙技术|低功耗蓝牙和LE Audio助力游戏设备行业发展

去年,蓝牙技术联盟官方宣布推出LE Audio,它以BLE为基础,旨在更好地兼顾音频质量和低功耗,以在多种潜在应用中显著增强用户体验。这在游戏行业中引起了轰动,由于其延迟显著降低,LE Audio在增强游戏体验方面展…

单片机第一季:零基础9——直流电机和步进电机

目录 1,直流电机 2,步进电机 1,直流电机 直流电机是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。它是能实现直流电能和机械能互相转换的电机。…

Jenkins的安装部署以及基本使用

前言: 今天有空大概记录的一个作为一个测试人员日常中Jenkins的使用。 一、环境准备 在安装使用Jenkins前我们要先安装jdk,这里博主选择的是jdk11。我们先删除旧的jdk然后安装全新的jdk。 1、先看下当前我们的jdk版本。 2、查看jdk安装路径&#xff1…

Simulink仿真模块 - Unit Delay

Unit Delay:将信号延迟一个采样期间 在仿真库中的位置为:Simulink / Discrete HDL Coder / Discret 模型为: 双击模型打开参数设置界面,如图所示: 说明 Unit Delay 模块按指定的采样期间保持和延迟输入。当放置于迭代子系统中时,该模块将其输入保持并延迟一个迭代。此…

视频文件一键批量去除水印需要用到什么剪辑软件

刚接触视频剪辑这个行业的小伙伴在找视频素材的过程中,如果发现视频带有水印是不是非常头疼,不知道怎么处理这件事。那今天我们就来聊聊怎么才能快速批量去除视频的水印呢?今天小编给大家带来一个好方法,一起来看看吧。 一、首先我…

Redis实战案例17-Redisson可重入的原理

可重入原理分析 为什么自定义的Redis实现分布式锁不能实现可重入 method1中调用了method2方法,属于是同一线程内的操作,但是当method1中获取了锁之后,method2中就无法获取锁了,这就是同一线程无法实现可重入; 如何解决…

Windows上查看服务器上tensorboad内容

文章目录 前言一、SSH的设置二、tensorboard命令 前言 本篇文章是针对于局域网内的服务器的tensorboard可视化,由于设置方式稍微有点复杂,导致我每次隔了一段时间之后,就不知道该怎么查看tensorboard了,每次都要百度搜一大堆资料…

安达发|选择APS排程系统一定要注意这五大问题

随着信息技术的迅速发展,云计算已成为企业信息化建设的重要领域。在云计算中,aps是企业服务器环境中常见的虚拟化解决方案。然而,市场上有许多aps系统可供选择,企业在选择合适的系统时需要综合考虑多种因素。本论文将从这个五个角…

nacos十分钟快速搭建

简介 nacos是阿里巴巴开源的微服务基础组件,充当微服务架构中的配置中心和注册中心,nacos可单独作为配置中心或者注册中心 目录结构 bin,bin工具 conf,配置文件 target,nacos的jar包 安装 机器环境:cen…

清洁机器人规划控制方案

清洁机器人规划控制方案 作者联系方式Forrest709335543qq.com 文章目录 清洁机器人规划控制方案方案简介方案设计模块链路坐标变换算法框架 功能设计定点自主导航固定路线清洁区域覆盖清洁贴边沿墙清洁自主返航回充 仿真测试仿真测试准备定点自主导航测试固定路线清洁测试区域…

Redis数据类型 — Hash

目录 Hash内部实现 源码片段 Hset执行函数 创建hash对象 尝试转换存储空间的编码 遍历把键值对根据存储空间格式进行存储起来 Hash 是一个键值对(key - value)集合,Hash 特别适合用于存储对象。 Hash内部实现 Hash 类型的底层数据结构…

[Error] graphics.h: No such file or directory

原因:系统编译器找不到graphics.h文件,graphics.h这个文件就类似Java里面的jar包,也相当于Python里面pip安装的依赖包,graphics.h是样式设计文件,需要放到编译的文件夹里面 解决办法: 1.从该网址下载graphi…

Talk | 天津大学博士生赵煜:从平面图像中理解空间语义 - 视觉空间位置描述

本期为TechBeat人工智能社区第512期线上Talk! 北京时间7月12日(周三)20:00, 天津大学博士生—赵煜的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “从平面图像中理解空间语义-视觉空间位置描述”,他与大家探讨了…

Html基础知识学习——兼容问题与解决方法(十六)

文章目录 1.计算一定要精确,不要让内容的宽高超出我们设置的宽高,在IE6下内容会撑开设置好的宽高2.元素浮动,宽度需要内容撑开,就给里面的块元素都加浮动3.在ie6.ie7下元素要浮动并在同一行 就给这些元素都加浮动4.注意标签嵌套规…

数学建模-典型相关分析

上节回顾 论文:常州大学一等奖淡水养殖… 要进行 pearson 相关系数 画散点图、折线图看是否相关检验正态分布满足上述,利用pearson相关系数 刚开始推导不会没关系,会应用就行,推导过程略,之后学习了后续知识&#xff…

JS基础教程

一、JS简介 1.1 学习内容 JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。它是作为开发Web页面的脚本语言而出名,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对…