技术解析
node+socket.io
我使用的是websocket-bench进行并发测试。
服务器和测试都在本地。node 端采用多进程多端口。
但是测试的过程中发现,负载只在一个 ws 服务器的时候是没问题的,但是同时使用多个 ws 服务器,就会出现 400 错误,请求错误。
我初步估计是发送 ws 的 key 的时候和之后升级协议分配到了不同的服务器,导致不认这个请求,所以报 400 错误。如果还有其他可能,请指正。
upstream io_nodes {
#ip_hash; # 实际需求肯定采用这个策略,但是本地压测使用的都是同一个 ip,将会导致请求只分配到同一个服务器上
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
server 127.0.0.1:8004;
}
server {
listen 8088;
server_name server.com;
error_log logs/error.log debug;
access_log logs/access.log;
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set国外服务器_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_pass http://io_nodes;
}
}
我的毕设不解决这个问题大概就要吹了- -