当前位置: 首页 > 知识库问答 >
问题:

如何配置Micronaut以使用电抗器获得更好的性能

王翰墨
2023-03-14

我定义了两个HTTP GET API /test-mono和 /test-no-mono,除了 /test-mono使用Mono返回类型之外,两者都是完全相同的。HelloControlllerSpec使用100个线程池测试两个API 1000次, /test-no-mono需要45秒,但 /test-mono需要4分钟以上,为什么?看起来 /test-no-mono的默认并发配置比 /test-mono.

完整代码https://github.com/soumitrak/micronaut-server

@Controller("/")
class HelloController {

    @Get("test-mono/{id}", produces = arrayOf(MediaType.APPLICATION_JSON))
    fun test_mono(id: String): Mono<String> {
        Thread.sleep(4000)
        return Mono.just("Hello World! $id")
    }

    @Get("test-no-mono/{id}", produces = arrayOf(MediaType.APPLICATION_JSON))
    fun test_no_mono(id: String): String {
        Thread.sleep(4000)
        return "Hello World! $id"
    }
}

$ ./格雷德洛清洁试验

任务:测试

sk。测验服务器HelloControllerSpec标准输出

09:37:32.473 [Test worker] INFO  i.m.context.env.DefaultEnvironment - Established active environments: [test]

sk.test.server.HelloControlllerSpec

09:37:34.262 [Test worker] INFO  sk.test.server.HelloControllerSpec - Tests using mono
09:41:46.972 [Test worker] INFO  sk.test.server.HelloControllerSpec - Done tests using mono

sk.test.server.HelloControlllerSpec

09:41:46.975 [Test worker] INFO  sk.test.server.HelloControllerSpec - Tests without mono
09:42:27.216 [Test worker] INFO  sk.test.server.HelloControllerSpec - Done tests without mono

“/test mono”速度慢的原因是什么?如何提高此API的性能?

共有1个答案

苏洛城
2023-03-14

您的测试场景是不现实的。您永远不应该阻塞事件循环,这就是您在调用T时所做的hread.sleep.阻塞代码的性能更好,因为它有更多的线程。添加更多线程并不是在现实场景中实现更好性能的答案。

 类似资料:
  • 我刚刚更新了我的服务器,我正在使用Deeplearning4J运行一个web服务。我想检查不同的性能配置,以决定未来的努力方向。从什么知道。 本机或CPU,这是我当前的默认设置 CUDA或GPU使用情况。在代码中设置环境以使用CUDA 特定于GTX GPU。

  • 我为回归问题建立了一个模型,即从9个输入变量中预测一个值。该模型的开发是基于Keras库的人工神经网络 在这个使用编译和拟合方法的模型中,我已经预测了输出值。然而,我得到了糟糕的评价分数。我使用RMSE和R2评估了模型 (已归一化的)预测值和标记值之间的RMSE为0.207,(原始形式)预测值和标记值之间的RMSE为215,R2为0.4 如何修改模型以获得更好的结果(低RMSE和高R2)?或者这种

  • 这是一个众所周知的问题,当您在Windows上更新Java、JDK或JRE时,Eclipse很可能无法启动,因为它指向过时的JDK/JJRE文件夹。修复是相对简单的,它是在这里或这里的几个线程上讨论和解决的。 但我发现这些解决方案缺乏灵活性,令人不满意。此解决方案建议在转换为: 这意味着你必须在每次更新后,一次又一次地进行。如果您经常更新JDK,并且每个人都应该有最新的安全补丁,这会使它非常烦人。

  • 我尝试在使用Micronaut时使用SNAKE_CASE将jackson配置为接受JSON,但是,它无法识别属性。

  • 我是Spark SQL的新手。我有一个关于联接期间分区使用的问题 假设有一个名为的表,它保存在分区(parquet)文件上。还假定。 谢谢

  • 问题内容: 我有一个存储“主题”的数据库,每个主题都与一堆图像(=这些主题的屏幕快照)相关联。现在,我想显示最新的10个主题,对于每个主题,我只想从数据库中获取一张图像(ID最低的图像)。 当前,我的查询如下所示(我正在使用子查询): 它可以工作,但是查询速度很慢。当我使用EXPLAIN时,我可以看到有一个“依赖子查询”。是否可以将此依赖子查询转换为某种可以通过mysql更快处理的联接? PS:我