又来像大佬们发问了。 我公司从 Heroku 迁移到 IBM Cloud 上,就感觉复杂了很多,会出现不懂的错误。 我们在云上使用 docker, 比如 sidekiq 和 application. 现在我们发现 docker 上 sidekiq 会丢失 job, 目前 devops 人察觉到的是 sidekiq on docker 有时候发生错误会重启,这个错误是 OutOfMemoryError, 内存爆了 (举个例子,比如有时有 pdf generation,会占用超过 10 GB 的内存,好几千页的 pdf ) 一般发生这种错误的情况都发生在 auto scale up / down 的时候,目前 auto scaling 是根据 cpu 使用率来 scale 的。
所以呢 我的 leader 给了我一个开放性的任务, 第一,如何侦测和抓到 OutOfMemoryError 错误。然后使用 AirBrake 之类的插件发送 notification 给自己,然后确定丢失的 job 就是这个 OutOfMemoryError 引起的。(目前不确定,只是猜想) 第二,在 scale up 特别是 scale down 的时候,SIGTERM 这个信号有没有造成 job 丢失,还有然后观察 job 是如何被重新推进 sidekia queue 的。
目前我的做法是: 我现在还是 docker 初学者,先试着在本地搭建 docker, 然后适合把 rails sidekiq 放到 docker 上,然后试试如何把它爆掉,还有本地 scale up scale down. 这做法对吗?还有什么好的方法吗?
先谢谢大家了。