场景:我有一个node.js应用程序,它使用socket.io进行通信。如果我在本地运行它,它效果很好。然后我将部署到AWS Elastic Beanstalk。如果我在那里运行并自己使用它,它会很好。即使是少数用户,也可以正常工作。但是,一旦我开始获得大量用户,应用程序(一个聊天应用程序)就变得无法响应。有时邮件会发送,有时邮件不会发送,有时会延迟。疑难解答socket.io和EBS
我知道我已经阅读过EBS不支持网络套接字。但是,对于少数用户来说似乎没有问题。我不太确定如何测试socket.io是否真的存在问题。
这是我从运行应用程序中得到的几个日志。
“GET /socket.io/?token=MSAxNDYyMzAyNzM4NTc2IDU2OTJiNDQzZmYxYzdjYzNiOTE5MjMxZSAxODRmNmQ4NGIzNGQ0OWUzOWZiMWUwYTI1ZDhhYWVjOA%3D%3D & EIO = 3 &运输=轮询&吨= LD32u37 HTTP/1.1” 200 101
“GET /插座.IO /?标记= MSAxNDYyMzAyNzM4NTc2IDU2OTJiNDQzZmYxYzdjYzNiOTE5MjMxZSAxODRmNmQ4NGIzNGQ0OWUzOWZiMWUwYTI1ZDhhYWVjOA%3D%3D & EIO = 3 &运输= WebSocket的& SID = DZof5F5PCmmy26eEAAAA HTTP/1.1" 400 45
这两个日志来自我自己一次性使用。
我试过在两个不同的EBS实例上运行这个应用程序,负载平衡和单实例。我在两者上都得到相同类型的日志。
我不太清楚如何解决这个问题,以及如何诊断它的socket.io问题或其他问题。
有什么想法?
你有没有机会在一个负载均衡的env上运行多个实例?如果是这样的话,您会错过EB – Tal
@Tal的粘性会话配置,谢谢您的回应。我意识到我需要现在执行Sticky会话。你能建议实际测试这个最好的方法吗?我试图使用redis,但我无法弄清楚实际测试粘性会话是否正常工作的最佳方法。任何帮助? – Srmuhs