linux에서 최대 tcp / ip 연결 수 늘리기


Answers

최대 연결 수를 설정하는 몇 가지 변수가 있습니다. 대부분 파일 번호가 부족합니다. ulimit -n을 확인하십시오. 그 후, / proc에 설정이 있지만, 기본값은 수만 가지입니다.

더 중요한 것은, 당신이 뭔가 잘못하고있는 것처럼 들린다. 단일 TCP 연결은 두 당사자간에 모든 대역폭을 사용할 수 있어야합니다. 그렇지 않은 경우 :

  • TCP 창 설정이 충분히 큰지 확인하십시오. 리눅스 디폴트는 정말 빠른 inet 링크 (수백 mbps) 나 빠른 위성 링크를 제외한 모든 것에 적합합니다. 대역폭 * 지연 제품은 무엇입니까?
  • 큰 패킷이있는 ping을 사용하여 패킷 손실을 확인하십시오 ( ping -s 1472 ...).
  • 속도 제한을 확인하십시오. Linux의 경우 이것은 tc 로 구성됩니다.
  • 당신이 생각하는 대역폭이 실제로 존재하는지 확인하십시오. 예를 들면, iperf
  • 프로토콜이 정상적인지 확인하십시오. 대기 시간을 기억하십시오.
  • 기가비트 + LAN이면 점보 패킷을 사용할 수 있습니까? 너?

아마 나는 오해했다. 어쩌면 당신은 비트 토 런트 (Bittorrent)와 같은 것을하고 있습니다. 그렇다면 실제로 사용하고있는 연결 수 ( netstat 또는 lsof 시도)를 알아야합니다. 그 수가 많은 경우 다음을 수행 할 수 있습니다.

  • 대역폭이 많이 필요합니다 (예 : 100mbps +). 이 경우 실제로 ulimit -n 사용해야 할 수도 있습니다. 여전히 ~ 1000 개의 연결 (내 시스템의 기본값)이 꽤 있습니다.
  • 연결 속도를 늦추는 네트워크 문제 (예 : 패킷 손실)
  • IO 대역폭과 같은 다른 문제가 느껴지거나, 특히 찾고있는 경우. iostat -x 를 확인 했습니까?

또한 소비자 등급 NAT 라우터 (Linksys, Netgear, DLink 등)를 사용하는 경우 수천 개의 연결을 통해 성능을 초과 할 수 있습니다.

이것이 도움이되기를 바랍니다. 너는 정말로 네트워킹 질문을하고있다.

Question

나는 서버를 프로그래밍하고 있으며 연결 수가 "무제한"으로 설정되어 있어도 내 대역폭이 포화 상태가 아니기 때문에 연결 수가 제한되어있는 것처럼 보입니다.

우분투 리눅스 박스가 한 번에 열 수있는 최대 연결 수를 늘리거나 없애려면 어떻게합니까? OS가이를 제한합니까? 아니면 라우터 또는 ISP입니까? 아니면 다른 것입니까?




애플리케이션 레벨에서 개발자가 수행 할 수있는 작업은 다음과 같습니다.

서버 측에서 :

  1. 로드 밸런서 (있는 경우)가 올바르게 작동하는지 확인하십시오.

  2. 느린 TCP 시간 초과를 503으로 설정합니다. 즉각적인 응답입니다. 밸런서 작업을 올바르게로드하면 서비스 할 작업 리소스를 선택해야하며 예기치 않은 오류 메시지가있을 때 응답하는 것이 좋습니다.

예 : 노드 서버를 사용하고 있다면 npm에서 toobusy를 사용할 수 있습니다. 다음과 같은 구현 :

var toobusy = require('toobusy');
app.use(function(req, res, next) {
  if (toobusy()) res.send(503, "I'm busy right now, sorry.");
  else next();
});

왜 503입니까? 과부하에 대한 좋은 통찰력은 다음과 같습니다. http://ferd.ca/queues-don-t-fix-overload.html

클라이언트 측에서도 몇 가지 작업을 수행 할 수 있습니다.

  1. 일괄 적으로 통화를 그룹화하고 클라이언트 및 서버의 트래픽 및 총 요청 수를 줄이십시오.

  2. 불필요한 중복 요청을 처리하기 위해 캐시 중간층을 빌드하십시오.




Links