小编Jad*_*ang的帖子

服务器端的异步和同步HTTP请求,性能比较

我试图找出异步和同步HTTP请求处理的优缺点。我正在将Dropwizard和Jersey用作我的框架。测试是比较异步和同步HTTP请求处理,这是我的代码

@Path("/")
public class RootResource {

    ExecutorService executor;

    public RootResource(int threadPoolSize){
        executor = Executors.newFixedThreadPool(threadPoolSize);
    }

    @GET
    @Path("/sync")
    public String sayHello() throws InterruptedException {
        TimeUnit.SECONDS.sleep(1L);
        return "ok";
    }

    @GET
    @Path("/async")
    public void sayHelloAsync(@Suspended final AsyncResponse asyncResponse) throws Exception {
        executor.submit(() -> {
            try {
                doSomeBusiness();
                asyncResponse.resume("ok");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
    }


    private void doSomeBusiness() throws InterruptedException {
        TimeUnit.SECONDS.sleep(1L);
    }

}
Run Code Online (Sandbox Code Playgroud)

同步 API将在由码头和维护的工作线程运行的异步 API将主要运行在海关线程池。这是Jmeter的结果

  • 测试1,500个Jetty工作线程,/ sync端点

    在此处输入图片说明

  • 测试2,500个自定义线程,/ async端点

    在此处输入图片说明 结果表明,两种方法之间没有太大差异。

我的问题是:这两种方法之间有什么区别?在哪种情况下应该使用哪种模式?

相关主题:同步HTTP处理程序和异步HTTP处理程序之间的性能差异

更新


我按照建议的延迟进行了10次测试

  • 同步500服务器线程

同步500服务器线程

  • 异步500-workerthread

异步500-workerthread

java multithreading asynchronous http jmeter

12
推荐指数
3
解决办法
1157
查看次数

如何加入两个数组是scala

假设我有两个数组

val x =Array("one","two","three")
val y =Array("1","2","3")
Run Code Online (Sandbox Code Playgroud)

什么是获得像["one1","two2","three3"]这样的新阵列最优雅的方式

functional-programming scala

4
推荐指数
1
解决办法
1530
查看次数

在vsql中垂直显示vertica记录

我在vsql中寻找一个命令,相当于mysql控制台中的\ g,因为我需要垂直显示结果集,如下所示:

在此输入图像描述

database vertica vsql

4
推荐指数
1
解决办法
1087
查看次数

在vertica中优化连接

我有这样的查询

SELECT a.column, b.column
FROM
table_a a INNER JOIN tableb_b ON
a.id= b.id
where a.anotherid = 'some condition'
Run Code Online (Sandbox Code Playgroud)

它应该非常快,因为使用谓词a.anotherid ='某种条件',查询计划应在table_b上过滤大量数据。但是,根据Vertica的文档,

执行联接后,将评估WHERE子句。它过滤FROM子句返回的记录,从而消除任何不满足WHERE子句条件的记录。

这意味着查询将先执行联接然后进行过滤,这非常慢,这在查询计划中也显示

在此处输入图片说明

那么,有什么方法可以在加入连接之前推送过滤器?还是有其他方法可以优化查询?

sql database vertica

1
推荐指数
1
解决办法
3383
查看次数