问题现象
业务通过sparkstream处理10000+上数据大致需要30s时间,但偶发出现超过30s的情况
问题分析
sparkstream是内存密集型的应用,一般出现延迟通常是因为以下两个原因:
- 内存分配过程出现延迟,出现GC问题,通常是内存资源问题导致
- 数据源侧录入数据出现卡顿现象
-
从以往经验看,内存分配延迟通常是透明巨页导致延迟现象的发生,可以通过关闭透明巨页来解决,建议:
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never #never 禁用透明巨页
cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never #never 禁用透明巨页
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
[always] madvise never #never 禁用透明巨页
cat /sys/kernel/mm/redhat_transparent_hugepage/defrag
[always] madvise never #never 禁用透明巨页
验证:cat /proc/sys/vm/nr