Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Performance sockjs和vertx应用程序的加载测试_Performance_Benchmarking_Load Testing_Vert.x_Sockjs - Fatal编程技术网

Performance sockjs和vertx应用程序的加载测试

Performance sockjs和vertx应用程序的加载测试,performance,benchmarking,load-testing,vert.x,sockjs,Performance,Benchmarking,Load Testing,Vert.x,Sockjs,我已经建立了一个应用程序。它的后端是vertx(java),我正在使用sockJs从客户端访问它。我想为此应用程序进行负载测试(基准测试/性能测试)。我以前没有做过任何负载测试。有人能帮我一下吗,怎么办?比如,我想同时使用多个连接访问服务器,看看它什么时候出现故障,以及我能做些什么来改进它。这是一个基本代码 HttpVerticle.java package sockjs; import io.vertx.core.AbstractVerticle; import io.vertx.core.

我已经建立了一个应用程序。它的后端是vertx(java),我正在使用sockJs从客户端访问它。我想为此应用程序进行负载测试(基准测试/性能测试)。我以前没有做过任何负载测试。有人能帮我一下吗,怎么办?比如,我想同时使用多个连接访问服务器,看看它什么时候出现故障,以及我能做些什么来改进它。这是一个基本代码

HttpVerticle.java

package sockjs;

import io.vertx.core.AbstractVerticle;
import io.vertx.core.Vertx;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.http.HttpServer;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.sockjs.SockJSHandler;
import io.vertx.ext.web.handler.sockjs.SockJSHandlerOptions;
import io.vertx.ext.web.handler.sockjs.SockJSSocket;

public class HttpVerticle extends AbstractVerticle {
    static int count = 0;
    @Override
    public void start() throws Exception {
        HttpServer server = vertx.createHttpServer();
        Router router = Router.router(Vertx.vertx());
        SockJSHandlerOptions options = new SockJSHandlerOptions();
        options.setHeartbeatInterval(20000);
        SockJSHandler sockJSHandler = SockJSHandler.create(vertx, options);
        sockJSHandler.socketHandler(this::myHandler);
        router.route("/myapp/*").handler(sockJSHandler);
        router.route("/myway/*").handler(sockJSHandler);
        server.requestHandler(router::accept).listen(8080);
    }

    private void myHandler(SockJSSocket sockJSSocket) {
        System.out.println("Connection established " + count); //Calls when the connection is established
        count++;
        System.out.println(sockJSSocket);
        //sockJSSocket.handler(this::processMessage);
        sockJSSocket.handler(buffer -> { //everytime a message is received, a reply is sent back in uppercase.
            System.out.println(buffer.toString());
            String reply = buffer.toString();
            reply = reply.toUpperCase();
            sockJSSocket.write((Buffer.buffer(reply)));
        });
    }

    private void processMessage(Buffer buffer) {
        System.out.println(buffer.toString());
    }
}
Main.java

package sockjs;

import io.vertx.core.Vertx;
public class Main {
    public static void main(String[] args) {
        System.out.println("Vertx server started");
        Vertx vertx = Vertx.vertx();
        vertx.deployVerticle(new HttpVerticle());
    }
}
客户可能是这样的:

var sockJsUrl = "https://cdnjs.cloudflare.com/ajax/libs/sockjs-client/1.1.1/sockjs.min.js";
var head = document.querySelector("head");
var script = document.createElement("script");
script.type = "text/javascript";
script.src = sockJsUrl;
head.appendChild(script);



var sock = new SockJS("http://localhost:8080/myapp");
sock.onopen = function() {
    console.log("Connection open", sock.readyState);
}

sock.onmessage = function(event) {
    console.log("Message from server");
    console.log(event);
}

sock.onclose = function() {
    console.log("Connection closed", sock.readyState);
}

sock.onerror = function() {
    console.log("Connection error", sock.readyState);
}
坦率地说,我对性能测试一无所知。所以如果有人告诉我细节,我会很感激的。

看看


注意:它仅适用于websocket,因此您将无法测试模拟的性能(当浏览器或网络中没有websocket时)。

至少有3个独立选项:

  • 工具-
  • -
  • 带插件
  • 如果您更喜欢基于JavaScript的解决方案,可以看看

    还有几个“通常”的建议:

  • 别忘了监视服务器端操作系统资源,即CPU、RAM、交换、磁盘和网络使用情况——它们中的任何一个都可能成为瓶颈
  • 在遥测下运行应用程序-如果问题与应用程序相关,则可以更快地确定问题的根本原因
  • 请记住,web/ApplicationServer默认配置通常不适合高负载,您可能需要提前对其进行调整

  • 我的项目是sockJs,而不是WebSocket。那么,我如何使用thor来实现这一点,因为文档中说thor只接受ws-protocol?我的应用程序在SockJs上,这些工具都是用于WebSocket或socket.io的。那么我如何将其用于sockJs。请告诉我,我的应用程序是在SockJs上的,这些工具都是用于websockets或socket.io的。那么我如何将其用于sockJs。