fanyong920 / jvppeteer

Headless Chrome For Java (Java 爬虫)
Apache License 2.0
724 stars 158 forks source link

线程 JvEmitEventThread 和 JvHandleMessageThread CPU占用极高 #163

Open xiaomujin opened 13 hours ago

xiaomujin commented 13 hours ago

版本: 2.2.1 JvEmitEventThread-1 和 JvHandleMessageThread-1 在 centos 上cpu占用极高 image image

fanyong920 commented 13 hours ago

从2.0.0改了消息处理的方式。 处理消息流程:接收消息-处理消息-处理完毕-接收消息。但是在处理消息的时候,经常会需要向浏览器发送命令然后等待返回,1.x.x版本 处理方式是只发送命令,但不等待。 2.0.0后添加了 JvEmitEventThread 和 JvHandleMessageThread 这两条线程 使得可以实现 在处理消息的时候,向浏览器发送命令并等待返回 的效果。 所有从浏览器 通过 Websocket 传回来的消息都由这两条线程处理,并且这两条线程切换频繁,是会导致这样的。

xiaomujin commented 13 hours ago

还有优化的空间不

fanyong920 commented 13 hours ago

再想想,能优化最好啦

xiaomujin commented 11 hours ago

老师,看看这个 callback,有没有参考价值。 https://github1s.com/MisakaTAT/Shiro/blob/main/src/main/java/com/mikuac/shiro/handler/ActionHandler.java#L73

fanyong920 commented 11 hours ago

好的,我看看

fanyong920 commented 11 hours ago

这个callback处理逻辑简单一些,单条线程就能处理完成