诡异的服务重启原因探索
背景
同事做了一个订单导出功能,大约15万的数据量,使用golang语言开发,使用了ShardingSphere分表组件,通过多协程并行把15万的数据一次性读到内存,写excel并上传阿里OSS。
在本地测试没有发生什么异常的情况。部署到服务器,执行导出功能程序就会自动重启。
探索过程
由于,这个项目在本地运行并没有发生重启,并且在服务器上运行时,并没有发现有panic,因此,开始并没有考虑程序本身的问题。
因为我们的服务部署在k8s上,所以,遇到重启的问题,我首先想到的服务重启原因是内存和CPU资源不够导致的。
在这个想法的指引下,通过Grafana查看了资源的消耗情况。
服务器资源分配情况如下:
程序重启,通过Grafana查看资源消耗的情况, CPU分配是足够的,而内存消耗却达到了400M左右,由此,判断内存分配是不够的。
因此,把内存提高了一倍,分配了800M。