IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 记录一次机器CPU高负荷占用导致服务不可用 -> 正文阅读

[系统运维]记录一次机器CPU高负荷占用导致服务不可用

一 问题描述

接到上游调用方反馈到服务一直504,根本没办法使用,同时机器cpu 监控一直报警
在这里插入图片描述
在这里插入图片描述

二 问题排查过程

解决思路1

  • 思路一: 接口本身处理比较耗时,加上上游并发请求比较大,所以才会一直报警

  • 思路一解决方案: 确实也是如此,如果你的服务处理非常快且不是特别消耗资源那么确实不会在目前的并发下出现密集的504问题。
    那么先优化目前的接口。 接口是提供图像ocr功能,会加载深度学习模型的模型文件,代码中每一次请求都会重新实例化一个对象,这样做就会存在两个问题:
    1,每次请求都去load 一次模型文件,这部分IO操作其实还是比较耗时的,而且是没有必要;
    2 每个请求都实例化一个对象,那么在高并发下,系统的内存会很吃紧。
    所以针对这个问题,定义了一个全局的对象,让该进程的所有请求都用同一个对象去处理。

  • 思路一存在问题: 该方案确实减少了每次请求的耗时,同时也减少了内存的占用。更新服务后并没有解决, 而且ocr请求耗时取决于你传入图片的大小,如果图像太大,元素太多,耗时问题同样无解

解决思路2

  • 思路二: 504问题的就是超时问题,是不是我的nginx超时时间的问题。

  • 思路二解决方案: 确实也是如此,nginx初始超时时间是在一些较小图像下得到的一个值,但是现在上游调用传入的图像比较大,那么在并发比较大的情况下,肯定都超过了这个时间,所以才会一直返回504
    在这里插入图片描述

ok,将超时时间设置大一点

  • 思路二存在问题: 虽然问题解决了,但是其实没有完全解决。 为什么修改了nginx超时时间后,我的服务实例的CPU压力降了下来???

总结思路

  • 504问题: 修改了nginx超时时间,所以大部分请求能够正常返回了

  • cpu超负荷问题
    虽然服务本身比较吃CPU,但是在目前的请求并发下不应该完全打满。因为在nginx超时时间是1s时候,上游调用504后都会重新请求多次。这里需要注意下??: 虽然调用client和nginx的链接断开了,但是服务实例还是在继续处理该次请求,直到请求处理完成,这样直接导致了流量被扩充了N倍!!!(不断重试)

  • 最终解决方案
    1、 接口本身优化,尽量提升处理速度,尽量减少系统占用资源
    2、 nginx + 服务本身 超时设置,如果断开的链接,就没有必要继续去执行,浪费系统资源
    3、 预估服务的能力,设定访问限制(每秒请求多少),将超过限制的流量挡住

三 总结

在高并发,高可用的需求下,确实是有一套好的方法论供参考。或许只有自己真正在遇到问题后才会去理解学习,这样其实并不好,应该学会在设计系统时候将这些潜在的风险都尽量考虑周全
日常记录,有问题欢迎指出,自己搞清楚的同时也不想误导他人

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 12:43:23  更:2021-08-13 12:47:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 17:41:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码