iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > GO >防止Golang后台进程CPU使用率过高
  • 656
分享到

防止Golang后台进程CPU使用率过高

2024-04-05 00:04:20 656人浏览 泡泡鱼
摘要

一分耕耘,一分收获!既然打开了这篇文章《防止golang后台进程CPU使用率过高》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎

一分耕耘,一分收获!既然打开了这篇文章《防止golang后台进程CPU使用率过高》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我正在编写一个 Go 程序,用于监视文件并在其中一个文件发生更改时运行系统命令。到目前为止,效果很好。我对我的主“无限”循环有疑问,因为我不希望它占用所有系统 cpu 资源:

runtime.GOMAXPROCS(1)
for {
    updatedFiles, _ := GetWatchMap(config)
    if !reflect.DeepEqual(filesToWatch, updatedFiles) {
        start := time.Now()
        _, _ = colorstring.Println(fmt.Sprintf(" [yellow] ⬇ Update detected[white] at [green]%s[white] > updating...", start.FORMat("15:04:05")))
        _, _ = Update(config)
        end := time.Now()
        elapsed := end.Sub(start)
        _, _ = colorstring.Println(fmt.Sprintf("  [green]✅  Done![white] in [yellow]%.2f[white] second(s).", elapsed.Seconds()))
        filesToWatch = updatedFiles
    } else {
        time.Sleep(config.SleepTime)
    }
}

所以,我所做的是设置 gomaxprocs,因此它只使用“1 cpu/core”,并且我在 else 分支中添加了可配置的睡眠时间。

如果没有睡眠时间,htop 显示该进程占用了 100% 的 cpu 时间(我猜它是一个核心的 100%?),无论我是否调用 runtime.gomaxprocs(1)

如果我在我的机器(Macmini i7,12 核)上使用 30 毫秒的睡眠时间,htop 会报告该进程的 cpu 利用率为 20%,这看起来不错,但我想这会根据运行该程序的计算机而有所不同。

这里的最佳实践是什么?


解决方案


GOMAXPROCS 并不像您想象的那样。来自包运行时文档:

GOMAXPROCS 变量限制可以同时执行用户级 Go 代码的操作系统线程的数量。代表 Go 代码在系统调用中可以阻塞的线程数量没有限制;这些不计入 GOMAXPROCS 限制。

它限制操作系统线程。如果您的代码不使用可以调度到操作系统线程的goroutine,那么限制线程数量实际上没有。 只要删除 GOMAXPROCS 的东西,它什么也不做。 (如果将 GOMAXPROCS 设置为 12,则最多将有 12 个操作系统线程实际执行 Goroutine 代码;如果只有一个 Goroutine 限制它可以运行的操作系统线程数,则属于 noop。)

您所能做的就是不像 time.Sleep() 那样忙循环。根据的要求,您可以定期调用实际代码,例如通过 time.Ticker。没有单一的“最佳实践”(除了不要摆弄 GOMAXPROCS)。

本篇关于《防止Golang后台进程CPU使用率过高》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注编程网公众号!

您可能感兴趣的文档:

--结束END--

本文标题: 防止Golang后台进程CPU使用率过高

本文链接: https://www.lsjlt.com/news/596418.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 防止Golang后台进程CPU使用率过高
    一分耕耘,一分收获!既然打开了这篇文章《防止Golang后台进程CPU使用率过高》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎...
    99+
    2024-04-05
  • golang 后台进程的启动和停止操作
    启动命令 我们先来个非后台运行的启动命令 func init() { startCmd := &cobra.Command{ Use: "st...
    99+
    2024-04-02
  • 【Mysql】主机cpu 之-sys使用率过高
    学习大神的http://mp.weixin.qq.com/s/hXtCzSnlVfo9Cq92538ipw自己整理一点思路 1.0top看cpu消耗,发现sys比usr要高不少,这非常不正常 1...
    99+
    2024-04-02
  • 排查WMI CPU使用率过高问题
    排查WMI CPU使用率过高问题的步骤如下:1. 确认问题:首先,确认系统的CPU使用率确实过高。可以通过任务管理器或性能监视器来查...
    99+
    2023-09-13
    CPU
  • 电脑cpu使用率过高如何解决
    高CPU使用率可能是由于以下原因引起的:1. 病毒或恶意软件:运行一个病毒扫描程序来检测和清除任何可能感染计算机的恶意软件。2. 后...
    99+
    2023-08-23
    电脑
  • Win7 32位中audiodg进程CPU占用率过高问题解决方法
      最近有用户win7 32位操作系统下使用酷狗音乐、PPS或千千静音等等播放器时,在任务管理器中查看到audiodg.exe进程CPU占用率过高,导致系统运行缓慢甚至出现假死现象,出现这种问题该如何解决呢   Win7...
    99+
    2023-06-13
    Win7 32位 audiodg进程CPU占用率过高 问题 CPU 占用率 进程 解决
  • 遇见Linux系统CPU使用率过高怎么办?
    导读对于新手来说,可能各种进程管理工具用的还不算熟悉,那么遇见Linux系统CPU系统使用率过高怎么办?那么就学习一下吧。查看CPU使用...
    99+
    2023-06-05
  • Linux系统CPU使用率过高的排查技巧
    本篇内容介绍了“Linux系统CPU使用率过高的排查技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!下面,介绍几个 CPU 使用率过高的排...
    99+
    2023-06-16
  • 如何使用调试诊断工具排查IIS中进程CPU使用率过高的问题
    要使用调试诊断工具来排查IIS中进程CPU使用率过高的问题,可以按照以下步骤进行操作:1. 确认问题:首先,需要确认是否真的存在进程...
    99+
    2023-09-08
    CPU
  • Runtimebroker.exe进程占用CPU过高的解决方法
    这篇文章主要为大家展示了“Runtimebroker.exe进程占用CPU过高的解决方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Runtimebroker.exe进程占用CPU过高的解决方...
    99+
    2023-06-27
  • Tomcat进程占用CPU过高的解决方法
    目录案例上下文切换开销?总结CPU经常会成为系统性能的瓶颈,可能: 内存泄露导致频繁GC,进而引起CPU使用率过高 代码Bug创建了大量的线程,导致CPU频繁上下文...
    99+
    2024-04-02
  • win7 dllhost.exe进程占用CPU过高如何解决
    win7 dllhost.exe进程占用CPU过高可能是由于系统文件损坏、病毒感染、程序冲突等原因引起的。解决此问题的方法如下:1....
    99+
    2023-10-20
    win7
  • kernel_task 进程 CPU 占用率高导致 mac 卡顿问题
    kernel_task 进程 CPU 占用率高导致 mac 卡顿问题 问题 这个问题已经遇到多次了,在 mac 使用中会突然变得非常卡顿,查看活动监视器发现 kernel_task 进程 cpu 占用率很高 100% - 800%,同时风扇...
    99+
    2023-08-17
    macos
  • 高效管理 Linux 进程:如何后台执行程序、查看进程、终止任务
    目录 前言一、nohup命令详解1-1、nohup命令介绍1-2、语法格式1-2-1、基础语法介绍1-2-2、执行脚本文件1-2-3、执行python文件1-2-4、拓展延申:在服务器上运行后...
    99+
    2023-09-11
    linux unix 服务器
  • linux php-fpm进程 cpu占用过高 解决方法
    主要解决思路如下: 设置控制php-fpm进程池进程数量。 修改pm.max_children的数量,根据内存来进行分配,系统开一个进程20-30M。比如系统内存1G,那就将差不多能开30个进程,所以可以设置pm.max_children ...
    99+
    2023-09-12
    linux php 服务器
  • Linux中怎么使用cpulimit限制进程的cpu使用率
    本篇内容介绍了“Linux中怎么使用cpulimit限制进程的cpu使用率”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!很用 Linux时可...
    99+
    2023-06-13
  • 导致服务器CPU使用率高的系统进程因素是什么
    有几个常见的系统进程因素可能导致服务器CPU使用率高: 系统负载高:当服务器上运行的任务过多或者负载过高时,系统进程会竞争CPU...
    99+
    2024-04-28
    服务器
  • 导致服务器CPU使用率高的系统进程因素有哪些
    导致服务器CPU使用率高的系统进程因素有:1、Dllhost进程,消耗所有的CPU空闲时间,导致CPU一直处100%的水平,且不会下降;2、Services进程,会导致CPU使用率可能间歇性地达到100%,且计算机可能停止响应。具体内容如下...
    99+
    2024-04-02
  • Godaddy购买域名后台的使用过程
    本篇文章为大家展示了Godaddy购买域名后台的使用过程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、我的帐户(my account)二、域名管理面板:Manage domains 具体的各项解...
    99+
    2023-06-12
  • Linux如何使用Supervisor管理后台进程
    小编给大家分享一下Linux如何使用Supervisor管理后台进程,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 1.安装easy_install supe...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作