今天部署生产环境遇到了坑,本文聊聊这个坑的上下文。
现象&定位
- 部署完成后,收到测试人员反馈业务运行异常
排查后,定位为livy向spark提交任务时执行失败
livy日志如下:初看有点懵,将关键字
spark
和OpenBLAS blas_thread_init
提交google,结果大多匹配python运行时相关异常,仔细看不难发现
RLIMIT_NPROC 4096 current, 514476 max
- 由此自然联想到
ulimit -u
,一查发现果然只有4096
解决方案
- 解决方案也简单,设置系统最大允许进程数
永久生效:
1 | /etc/security/limits.d/90-nproc.conf |
当前session生效:
1 | ulimit -u 1000000 |
- 重新测试,问题果然修复
总结
- 问题事后看并不复杂,但前前后后还是花了不少时间,其实之前ulimit也不是没学习过,但真正出现异常时,往往没有看透问题的本质
- 该生产环境主机时刚部署的,毕竟兼职运维,像ulimit此类系统资源的设置没有统一的整体设置过,吃一堑长一智,兼职运维的路上且走且学吧