欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Nginx反向代理作负载均衡的高压测试,一些错误

程序员文章站 2022-03-10 23:08:14
背景计算所里给大家配发了多台工作机,我给他们都按上了ubuntu linux,拿来做了一个web集群。我自己的电脑作为主反向代理服务器,将请求转发到同事的web服务器上,从而实现分布式的web请求,提高请求命中率,减少但个服务器压力。在进行高压测试的时候,以每秒大约10000次请求的JS脚本进行for循环请求,持续10000次,也就是1秒内发送10000次请求左右。测试的业务逻辑每一次请求的业务逻辑要实现两次数据库insert操作,一次O(n^2),n小于i等于8的循环,一次数据库update运算...

背景

计算所里给大家配发了多台工作机,我给他们都按上了ubuntu linux,拿来做了一个web集群。

我自己的电脑作为主反向代理服务器,将请求转发到同事的web服务器上,从而实现分布式的web请求,提高请求命中率,减少但个服务器压力。

在进行高压测试的时候,以每秒大约10000次请求的JS脚本进行for循环请求,持续10000次,也就是1秒内发送10000次请求左右。

测试的业务逻辑

每一次请求的业务逻辑要实现两次数据库insert操作,一次O(n^2),n小于i等于8的循环,一次数据库update运算,一次redis删除操作,一次redis新增操作。两个控制器,请求有先后依赖关系,先请求接口1,从接口1得到数据后请求2,请求循环为非同步请求,每隔0.1ms发送一次。脚本是JS基于Node.js平台。

一些错误

  • socket hang out 错误,原因是worker_connections过小
  • Internal Server Error 错误,原因是把for循环中sleep等待时间去除了,也就是不限制时间间隔,internal error是控制器(业务逻辑处理)高压,无法response
  • Gateway Timeout 错误,原因是把for循环扩大十倍,10万次循环,间隔还是0.1ms,1秒万次。 gateway timeout是反向代理服务器处理不了这么多代理请求

配置

以下是Nginx的具体配置:

user  www www;

worker_processes  8;
 
error_log logs/error.log;


events
    {
        worker_connections 100000;
    }
 
http
    {
   
		server {
        	listen 80;
        	server_name   localhost 192.168.1.79;
        	location / {
            	proxy_pass http://web;
        	}
        }
    	upstream web  {
        	server localhost:3000 weight=3;
        	server 192.168.1.103:3000 weight=3;
        	server 192.168.1.114:3000 weight=1;
        	server 192.168.1.127:3000 weight=3;
    	}
}

这套配置只能解决问题1,“socket hang out” 问题。上游服务器(实际处理http请求的服务器)有4台,其中一台是本机。

本文地址:https://blog.****.net/u014466109/article/details/107337851

相关标签: 乱七八糟 nginx