创作灵感:起因是工作中处理硬件传来的数据时,接收监听出现异常现象。
现象描述:两个独立的端口传输数据是有一定关联性的,在这里可以设为A端口和B端口,当A端口接收到的数据符合判断条件是,会对硬件下发某一指令,此时会接收到B端口传来的数据。理想情况下A,B端口都会有数据(数据量在每秒300-1G左右),但实际情况是当下发了数据采集命令时,A端口就没有数据到A线程了,只有当B线程运行完一次以后,才会有少量数据进入A线程,以此达到自动检测收集的效果,但不保证当B端口无数据传入后,A端口任旧有数据传入。
问题原因分析:(1)数据量过大,导致内存不够;(2)线程休眠,A端口的数据无法压入到A线程中;(3)硬件原因
排查:(1)打开任务管理器,对内存进行监控,内存占用率不超过60%,基本排除(1);(2)写了一个demo,测试线程休眠时压入数据是否会有影响,程序依旧稳定运行,数据持续压入(1,2分别是压入数据来源,然后是输出数据处理线程被压入数据的次数,之后每8s打印一次);(3)通过shark对网络端口进行抓包,若有数据源源不断从A端口传入,则证明是程序问题,若无数据传入,则证明是硬件逻辑的问题