首页 > 编程语言 >Nodejs Http 阻塞业务接口 压测

Nodejs Http 阻塞业务接口 压测

时间:2024-01-26 14:23:10浏览次数:23  
标签:const Nodejs 压测 res req http end Http data

const http = require('http');


// 创建一个 HTTP 服务器
const server = http.createServer((req, res) => {
  // 设置响应头
  res.writeHead(200, {'Content-Type': 'application/json'});

  // 定义接口路径
  if (req.url === '/index') {
    // 模拟返回的数据
    const data = {
      message: 'Hello, this is the API response!'
    };

    var currentTime = new Date();

    data.message=currentTime;

    // 将数据转换为 JSON 格式并发送响应
    res.end(JSON.stringify(data));
  } else if (req.url === '/google') {
    const options = {
        hostname: 'cn.bing.com',
        path:'/HPImageArchive.aspx?format=js&idx=0&n=1',
        port: 80,
        method: 'GET',
        timeout:1000,
      };

    // 模拟返回的数据
     fetchDataFromServer(options, (error, data) => {
        if (error) {
            res.writeHead(200, {'Content-Type': 'application/json'});
            res.end(JSON.stringify(error));
    
        } else {
            const googleData = {
                message: data
              };
            res.writeHead(200, {'Content-Type': 'application/json'});
            res.end(JSON.stringify(googleData));
         
        }
      });

  } else {
    // 处理未知路径的请求
    res.writeHead(200, {'Content-Type': 'application/json'});
    res.end('Not Found');
  }
});

function fetchDataFromServer(options, callback) {
    const req = http.request(options, (res) => {
      let data = '';
  
      // 接收响应数据
      res.on('data', (chunk) => {
        data += chunk;
      });
  
      // 响应完成后处理数据
      res.on('end', () => {
        // 调用回调函数并传递获取的数据
        callback(null, data);
      });
    });
  
    // 处理请求错误
    req.on('error', (e) => {
      // 调用回调函数并传递错误信息
      callback(e, null);
    });
  
    // 结束请求
    req.end();
  }


// 监听端口
const port = 3000;
server.listen(port, () => {
  console.log(`Server is running on http://localhost:${port}`);
});

阻塞接口压测

wrk -c 100 -t 10 -d 15s http://127.0.0.1:3000/google

QPS几十

同时压测普通接口

wrk -c 100 -t 10 -d 10s http://127.0.0.1:3000/index

QPS 3万左右,没有明显影响.

标签:const,Nodejs,压测,res,req,http,end,Http,data
From: https://www.cnblogs.com/xuyaoxiang1991/p/17989220

相关文章

  • HTTP 请求体编码用 json 还是 x-www-form-urlencoded
    application/x-www-form-urlencodedapplication/jsonapplication/json对初学者友好application/x-www-form-urlencoded对Postman友好axios和superagent默认使用JSONbody来自专家的建议TheStripeAPIisorganizedaroundREST.OurAPIhaspredictableresour......
  • 解决 fatal: unable to access 'https://github.com/alibaba/nacos.git/': Failed to
    直接打开这个网站:https://sites.ipaddress.com/github.com/。找到网站中的IP地址复制出里面的IPAddress并粘贴到hosts里面。以下是macos上使用命令行打开方式,也可以直接在硬盘上找到这个文件打开sudovim/private/etc/hosts在最后一行添加如下代码140.82.113.4githu......
  • APISIX同时代理websocket和http请求 websocket无法正常工作
    1.配置了一个路由同时代理websocket和http请求 2.打开了websocket支持,websocket还是无法工作  3.定位3.1通过postman分别走apisix和不经过apisix建立websocet连接,发现经过apisix也能成功建立连接,但是10秒左右就自己断开了。  3.2思考3.3决定试一下是否和超时配置......
  • nginx 如何强制跳转 https
    本项目nginx作为代理服务项目上线,客户说要加个安全证书,于是安全证书是加上了,可是htttp和https都能访问网站,客户要求不行必须强制用带有https的地址访问开整这是http和https都能访问的nginx.conf 关键配置  server{listen80;lis......
  • HTTP连接池在Java中的应用:轻松应对网络拥堵
    网络拥堵是现代生活中无法避免的问题,尤其是在我们这个“点点点”时代,网页加载速度直接影响到我们的心情。此时,我们需要一位“救世主”——HTTP连接池。今天,就让我们一起探讨一下,这位“救世主”如何在Java中大显神通。首先,我们要明白,什么是HTTP连接池?简单来说,它就像一个“连接银行”......
  • 使用Java中的OkHttp库进行HTTP通信:快速、简单且高效
    在Java的世界里,进行HTTP通信的方式多种多样。其中,OkHttp以其简单、高效和强大的功能受到了开发者的广泛欢迎。今天,我们就来深入探讨如何使用OkHttp库在Java中进行HTTP通信。首先,OkHttp是一个基于HTTP/2和SPDY的客户端,提供了现代且高效的通信方式。它不仅支持同步请求和异步请求,还提......
  • 使用Go语言编写高效的HTTP代理服务器:轻松应对流量洪流
    在这个网络时代,HTTP代理服务器成了我们与世界沟通的“桥梁”。它们能帮我们在浏览网页、下载文件时绕过某些限制,也能让我们在测试网络应用时隐藏真实IP。那么,如何用Go语言编写一个高效的HTTP代理服务器呢?让我们一起探讨这个问题,轻松应对流量洪流!首先,让我们来了解一下什么是HTTP代理......
  • Go语言实现HTTP代理的原理与步骤
    在计算机网络中,代理服务器是一种重要的中间件,它能够帮助客户端和服务器进行通信,并处理各种网络请求和响应。在Go语言中,我们可以使用标准库中的"net/http"包来实现一个简单的HTTP代理服务器。下面我们将介绍实现HTTP代理的原理与步骤。一、代理服务器的工作原理代理服务器的工作原理......
  • 探讨Go语言中的HTTP代理模式:看Go如何玩转网络中转站
    在互联网的海洋中,HTTP代理服务器像一座灯塔,为我们的网络冲浪提供了指引。而当Go语言遇上HTTP代理,会碰撞出怎样的火花呢?今天,让我们一起探讨Go语言中的HTTP代理模式,看看它如何玩转这个网络中转站!首先,让我们来了解一下什么是HTTP代理模式。简而言之,HTTP代理模式就是通过一个代理服务器......
  • miniweb开源的迷你HTTP服务器端软件
    前言全局说明MiniWeb是一个用C语言写成的HTTP服务器端软件,具有资源占用少、响应快速、跨平台(POSIX、*nux、Windows)等优点,支持常用的GET、POST算法及音/视频流媒体应用,可用来构建WEBSITE站点或VOD服务器等。MiniWeb是一个针对嵌入式应用而开发的微型WebServer,它占用资源少,工......