欢迎访问我的博客,你的支持,是我最大的动力!

使用systemd管理golang应用并限制cpu使用

Linux 小马奔腾 342℃ 评论

golang编写的程序天生就支持多核心,能够充分发挥多核心cpu的优势。不过,有时,会有限制程序使用资源量的需求,比如限制最多可以使用的cpu和内存量,CGroup可以满足这种需求,不过,直接使用CGroup门坎稍微会有点高,并存在管理维护不方便的问题,那么,如何才能够满足限制cpu和内存的需求呢,可以借助systemd来达到这个目的

nginx-jsonlog-adapter 是我写的一个处理nginx日志,生成json格式日志的工具,内部会解析nginx日志,并添加和丰富一些json字段,供其他程序使用。为了限制该程序的cpu使用,防止占用过多cpu资源,影响nginx服务,所以,需要限制cpu使用量

这里限制cpu最多可以使用 80% ,注意,这个数100%表示一个核,可以大于100%表示可以用到多个核(并不是限制在某个指定的核心上运行,实际运行依然会随机分配到各个核)

如何设置呢,命令如下,实时生效

检查是否生效,可以使用如下命令查看

实际作用到的属性是 CPUQuotaPerSecUSec

参考资料:

1、官方文档 RedHat的修改CGROUP

1、对cpu压测方法,为了测试效果,可以用go写一个计算圆周率的程序,可以把cpu拉满

 

转载请注明:轻风博客 » 使用systemd管理golang应用并限制cpu使用

喜欢 (10)or分享 (0)