如题,采用log4j 的 socketappender 向远程机发送logEvent, 如果远程机的处理速度慢于客户端日志的产生速度,会造成客户端的阻塞,有没有什么好的解决办法?
如题,采用log4j 的 socketappender 向远程机发送logEvent, 如果远程机的处理速度慢于客户端日志的产生速度,会造成客户端的阻塞,有没有什么好的解决办法?
谢邀,没用过这个。。
不过你的问题是消费者和产生着的问题我还是可以帮忙下,其实问题的原因找到这里已经是比较简单的了。
就好像超市一样,排队的人太多超市会考虑增加收银员(处理通道),因为大家都用的现金消费给钱找钱(来了就处理)太慢了!超市推出了刷卡消费(延迟处理),什么?我是回民哦!不能和汉民一起结账(特殊的大数据量或是特殊记录),超市会增加了专门一个收银员来处理这样的消费。
其实无非就这么几种办法了
1.增加处理通道
2.缓存到处理的本地队列处理或是用db先存着
3.这个东西没用过不太清楚,不过log一般来说可能会很碎,如果时效不敏感是否可以考虑成批的发送?
4.处理的步骤可以分段处理,这就和你的业务有关了,尽可能的减少及时即用甚至队列处理的速度
15 回答8.2k 阅读
8 回答5.9k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.2k 阅读✓ 已解决
到底是处理速度不够,还是时间都花在了三次握手上了,你是使用的长连接吗?
如果不是因为TCP三次握手问题,建议考虑用一个本地队列进行缓存。