聊一下服务器上OOM的那些事儿
前言
为什么今天来讨论这个话题呢?因为昨天遇到一个大坑,其实也不是算大坑吧,就是一件特别奇怪的事儿。
问题
不多bb,直接上图,在我提交sparkSQL和datax同步任务的时候发现部分任务报错如下:
部分任务OOM了,所在机器配置是物理内存为32G,我提交了20个任务......(datax同步任务有最大使用内存限制为1G、sparkSQL只有一个Driver端在服务器上面,没有设置,默认为1G)
spark官网默认配置如下:
那么这样算的话,提交20个任务,即占用内存20G,那么总共是32G,用了20,感觉很饱满啊???资源充足噻~
排查过程
经过排查后发现,linux的最大线程数为4096,猜测是不是由于最大线程数导致的呢?
然后可以参考这篇文章进行调整:https://jingyan.baidu.com/article/656db918d36b24e381249cb1.html
简单的调整的话,也很简单:调整下图的参数即可:
调整完这个,修改为65535,以后发现仍然报错,那我就不是线程数的问题。
然后继续看,会是神马问题导致的呢?
难道是内存吗?
测试15个并发的情况,去进行提交作业以后,发现ok了~
建议:任务提交的时候,设置并发,一定要预留好空间噻。