Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点Js和并发性。它比Tomcat快吗?_Javascript_Java_Node.js_Rest_Express - Fatal编程技术网

Javascript 节点Js和并发性。它比Tomcat快吗?

Javascript 节点Js和并发性。它比Tomcat快吗?,javascript,java,node.js,rest,express,Javascript,Java,Node.js,Rest,Express,我试图理解“在NodeJS中,除了代码之外,所有东西都是并行运行的”语句。所以我决定试一试。我在tomcat本地服务器上运行一个restful服务 @RequestMapping(value = "/ping", method = RequestMethod.GET) public String ping() throws InterruptedException { //Simulation for background processing Thre

我试图理解“在NodeJS中,除了代码之外,所有东西都是并行运行的”语句。所以我决定试一试。我在tomcat本地服务器上运行一个restful服务

@RequestMapping(value = "/ping", method = RequestMethod.GET)
     public String ping() throws InterruptedException {
        //Simulation for background processing
        Thread.sleep(10000);
        return "Hi I am Tomcat Ping Service";
    }
同样,我的本地服务器上也运行着nodejsrestfulapi

app.get('/nodeTest', function(req, res){
    var options = {
         host: '192.168.1.8',
         port : 8080,
         path : '/TestNode/rest/ping'
    };
    http.get(options, function(resp) {
      console.log("Got response: " + resp.statusCode);
      res.send("Inside Node JS Ping Service.");
    }).on('error', function(e) {
      console.log("Got error: " + e.message);
    });
});
我正在从浏览器调用节点restservice,而浏览器又在tomcat上调用restservice。 为了检查nodejs的并发性,我在两秒钟的延迟后点击了两个选项卡。 我在10.03秒后得到了第一个呼叫响应,而第二个响应耗时18.01秒

当节点分配回调函数时,我没有预料到这个结果,只要请求完成,它就会执行回调函数(同时它可以处理其他请求)。因此,当第一个请求在分配回调给该请求之后出现时,它应该接受第二个请求,而不是等待第一个请求完成。 因此,理想情况下,第二次呼叫应该花费将近10秒的时间来完成

这就提出了一个问题:node js如何比传统的每线程请求模型更快

编辑:-

我正在使用nodeeclipse插件运行nodeJS,使用simplespringmvcrest服务在Tomcat上运行rest服务

确定了chrome问题的根本原因,chrome正在暂停请求,因此第二次呼叫延迟

请求所用时间

但当我尝试一个来自firefox和一个来自chrome的请求时,它成功了

以下是日志:- 节点服务器:-

Request Entry time in Node JS :: Sun Jul 19 2015 21:57:39 GMT-0400 (Eastern Daylight Time)
Request Entry time in Node JS :: Sun Jul 19 2015 21:57:45 GMT-0400 (Eastern Daylight Time)
Got response: 200
Time Taken in seconds :: 10.004
[90mGET /nodeTest [32m200 [90m10004ms - 28b[0m
Got response: 200
Time Taken in seconds :: 10.005
Tomcat服务器:-

Thread Entry time in Tomcat :: http-8080-1 :: Sun Jul 19 21:57:39 EDT 2015
Thread Entry time in Tomcat :: http-8080-2 :: Sun Jul 19 21:57:45 EDT 2015
Time taken by thread :: http-8080-1 :: 10
Time taken by thread :: http-8080-2 :: 10

不知道为什么chrome会推迟通话。

这看起来确实很奇怪。你能检查一下两个Tomcat线程是什么时候创建的吗?即同时或串联。可以使用
AtomicInteger
Thread.setName
。或者只返回
ping
中的开始和结束时间字符串。您必须在某个地方有一些同步块或瓶颈。你在给我们看所有的代码吗?这看起来真的很奇怪。你能检查一下两个Tomcat线程是什么时候创建的吗?即同时或串联。可以使用
AtomicInteger
Thread.setName
。或者只返回
ping
中的开始和结束时间字符串。您必须在某个地方有一些同步块或瓶颈。你给我们看所有的代码吗?