[websocket] 최대 동시 Socket.IO 연결

이 질문은 이전에 질문되었지만 최근에는 없었으며 명확한 답변이 없습니다.

Socket.io를 사용하면 다른 서버를 추가하기 전에 유지할 수있는 최대 동시 연결 수가 있습니까?

웹 소켓 (특히 socket.io)을 대규모로 사용하는 활성 프로덕션 환경을 아는 사람이 있습니까? 최대 연결을 위해 어떤 종류의 설정이 가장 적합한 지 알고 싶습니다.

Websocket은 TCP를 기반으로 구축 되었기 때문에 연결간에 포트를 공유하지 않는 한 64K 포트 제한에 의해 제한 될 것임을 이해합니다. 하지만 Gretty를 사용 하는 512K 연결에 대한 보고서도 보았습니다 . 그래서 모르겠습니다.



답변

이 기사가 도움이 될 것입니다 : http://drewww.github.io/socket.io-benchmarking/

같은 질문이 궁금해서 연결이 실패 (또는 뒤처짐)가 시작된시기를 확인하기 위해 작은 테스트 (XHR 폴링 사용)를 작성했습니다. 내 경우에는 소켓이 약 1400-1800 동시 연결에서 작동하기 시작했습니다.

이것은 내가 사용한 테스트와 유사한 짧은 요점입니다 : https://gist.github.com/jmyrland/5535279


답변

AWS에서 socket.io를 사용하려고했지만 최대 약 600 개의 연결을 안정적으로 유지할 수 있습니다.

그리고 socket.io가 먼저 긴 폴링을 사용하고 나중에 websocket으로 업그레이드했기 때문이라는 것을 알았습니다.

websocket 만 사용하도록 구성을 설정 한 후에는 약 9000 개의 연결을 유지할 수 있습니다.

클라이언트 측에서이 구성을 설정하십시오.

const socket = require('socket.io-client')
const conn = socket(host, { upgrade: false, transports: ['websocket'] })


답변

이 사람은 단일 Node.js 서버에서 1 백만 개 이상의 동시 연결을 성공한 것으로 보입니다.

http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/

그래도 그가 얼마나 많은 포트를 사용하고 있는지 정확히 알 수 없습니다.


답변

+30 만 동시 연결의 경우 :

다음에서 이러한 변수를 설정하십시오 /etc/sysctl.conf.

fs.file-max = 10000000
fs.nr_open = 10000000

또한 다음에서 이러한 변수를 변경하십시오 /etc/security/limits.conf.

* soft nofile 10000000
* hard nofile 10000000
root soft nofile 10000000
root hard nofile 10000000

마지막으로에서 TCP 버퍼도 늘립니다 /etc/sysctl.conf.

net.ipv4.tcp_mem = 786432 1697152 1945728
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216

자세한 내용은 https://www.linangran.com/?p=547을 참조하십시오.


답변