背景: 100长度的循环队列, 个人电脑环境可正常运行,线上服务器有时会卡住 线上服务器250G,内存消耗 249G~250G,使用率基本100% 但这个程序消耗的内存也就几G, 处理的内容为最近100条交易的ID,time两个列排个序,可能连1G内存都用不了... 其他程序消耗的内存不止250G,swap64G空间也用完了,是在处理海量数据... 有时的意思是: 不是每次都卡住,比如内存使用率已经达到百分之百时,再运行这个程序就会卡 我在关键的代码位置加入了日志,它就不卡了,这时的内存使用率依然还是100% 也就是说,在内存使用率已经100%的情况下,关键位置加入日志后,程序就不卡了... 个人猜测如下: 服务器上有其他程序在处理海量数据,内存用完了 它申请内存空间或者其他资源遇到了阻塞/等待 加入日志,就是申请流处理... 流处理在OS中统一分配,在被分配io流资源时,顺便争取到了它运行需要的其他资源 这个地方卡了大概一星期,反复地找可能哪里出了问题, 毕竟线下没问题,线上又无法现场调试...
总结
如果一件事比较重要,或者应该主动地觉察一系列事物中的关键环节, 在这个关键环节上反复思考,验证,打磨, 这样出问题时,才有可能快速解决...