Go Exec 僵尸与孤儿进程

2022-02-26
阅读 5 分钟
4.7k
原文地址:Go Exec 僵尸与孤儿进程最近,使用 golang 去管理本地应用的生命周期,期间有几个有趣的点,今天就一起看下。场景一我们来看看下面两个脚本会产生什么问题:创建两个 shell 脚本start.sh {代码...} sub.sh {代码...} 执行脚本输出结果 {代码...} 进程关系查看进程信息 {代码...} sub.sh 的 父进程(PPID)为 s...

Go Errors 详解

2022-01-17
阅读 4 分钟
4k
Golang 中的错误处理和 PHP、JAVA 有很大不同,没有 try...catch 语句来处理错误。因此,Golang 中的错误处理是一个比较有争议的点,如何更好的 理解 和 处理 错误信息是值得去深入研究的。

Kafka基本架构和命令

2020-12-30
阅读 7 分钟
2.2k
服务代理节点。对于Kafka而言,Broker可以简单地看作一个独立的Kafka服务节点或Kafka服务实例。大多数情况下也可以将Broker看作一台Kafka服务器,前提是这台服务器上只部署了一个Kafka实例,一个或多个Broker组成了一个Kafka集群。

Go 平滑重启(优雅重启)

2020-12-12
阅读 4 分钟
8.5k
问题背景生产环境重要且复杂,许多的操作需要在任何场景都要保证正常运行。如果我们对线上服务进行更新的步骤如下:kill -9服务再启动服务那么将不可避免的出现以下两个问题:未处理完的请求,被迫中断,数据一致性被破坏新服务启动期间,请求无法进来,导致一段时间的服务不可用现象一般有三种方案处理以上问题:生产环...

Go 逃逸分析

2019-07-14
阅读 5 分钟
2.8k
堆(Heap):一般来讲是人为手动进行管理,手动申请、分配、释放。堆适合不可预知大小的内存分配,这也意味着为此付出的代价是分配速度较慢,而且会形成内存碎片。

基于GitLab CI搭建Golang自动构建环境

2019-06-19
阅读 6 分钟
6.6k
Golang发布遇到的问题 对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程: 方案一 开发者本地环境需要将环境变量文件改为正式环境配置 编译成可执行文件 发送给运维 (运维)将文件覆盖为线上 (运维)重启进程 (可谓“又臭又长”) 方案二 开发者将代码commit到gitlab上交给运维同学 (运维)pull...

Go 性能分析之案例一

2019-06-15
阅读 8 分钟
2.4k
相信大家在实际的项目开发中会遇到这么一个事,有的程序员写的代码不仅bug少,而且性能高;而有的程序员写的代码能否流畅的跑起来,都是一个很大问题。而我们今天要讨论的就是一个关于性能优化的案例分析。