我有主要是解析xml并返回json响应的webflux应用程序。应用程序处理的最大xml大小约为9MB,就像json响应一样。
问题是我的应用程序吞吐量仅为16TPS。
我花了几天时间调试应用程序,以发现问题所在,并且我认为JAXB是瓶颈。
我尝试了一些JAXB改进,例如从byteInputStream而不是StringReader解组等。
所以,我的问题是,jaxb是否不适用于响应式应用程序?
答案 0 :(得分:1)
您的应用程序正在执行的操作声音大多受IO限制,因为它解析(相对大)从请求中读取的文档。读取流可能很慢(也取决于网络),并且解析XML也不是最快的事情(我不知道您还需要做什么来准备响应)。
可以将这两个任务都卸载到不同的线程池中:
Mono<RequestBody>
而不是RequestBody
可以轻松实现)除非您的应用同时也在做其他事情(这就是您要做的其他事情),否则您并没有真正从反应式架构中受益。对于所有IO绑定的应用程序通常都是这样。响应式架构不能很好地处理大多数IO任务。
当然,我所说的大部分都是推测的,因为我没有看到您的任何代码,也没有对您的应用程序有任何了解。但是,这些是一些通用准则。如果不确切地知道 您的应用程序内部发生了什么以及实际是什么数字,就不可能给出更准确的答案。即使那样,它也可能涉及。 (顺便说一句,这可能就是为什么有人(不是我)投票结束了您的问题)