복붙노트

[REDIS] "TCP-잔고는"redis.conf의 새로운 기능

REDIS

"TCP-잔고는"redis.conf의 새로운 기능

나는 redis.conf에서 TCP-잔고 혼동하고 있습니다 :

# TCP listen() backlog.
#
# In high requests-per-second environments you need an high backlog in order
# to avoid slow clients connections issues. Note that the Linux kernel
# will silently truncate it to the value of /proc/sys/net/core/somaxconn so
# make sure to raise both the value of somaxconn and tcp_max_syn_backlog
# in order to get the desired effect.
tcp-backlog 511

TCP-백 로그 (여기에 설명 무엇 세 방향 핸드 셰이크 완료) "전체 연결 큐"또는 "불완전한 연결 대기열"의 크기인가?

그것은 "전체 연결 큐"를 의미한다면 왜 불완전한 연결 대기열의 크기를 제한 tcp_max_syn_backlog 공식 인상해야합니까?

해결법

  1. ==============================

    1.TCP-잔고는 전체 연결 큐의 크기입니다. 사실, 레디 스는 청취 번째 파라미터 (S INT, INT 잔고) 호출 등이 구성을 통과한다.

    TCP-잔고는 전체 연결 큐의 크기입니다. 사실, 레디 스는 청취 번째 파라미터 (S INT, INT 잔고) 호출 등이 구성을 통과한다.

    @GuangshengZuo 이미이 질문에 대한 좋은 답변을했다. 그래서 나는 다른 하나에 초점을 맞출 것입니다.

    당신이 언급 한 문서에서 인용 :

    우리는 전체 연결 큐에 항목이 불완전한 연결 대기열에서 이동하는 것을 볼 수 있습니다.

    당신이 작은 tcp_max_syn_backlog 공식에 큰 SOMAXCONN가있는 경우에, 당신은 충분히 항목이 전체 연결 대기열로 이동해야하지 않을 수도 있고 전체 연결 큐가 가득 수 없을 수도 있습니다. 그들은 두 번째로 이동할 수있는 기회가되기 전에 많은 요청은 이미 첫 번째 큐에서 삭제되었을 수 있습니다.

    그래서 단지 SOMAXCONN 힘 NOT 작업의 값을 올립니다. 당신은 그들 모두를 제기해야합니다.

  2. ==============================

    2.는 TCP-백 로그 큐 또는 전체 연결 대기열을 수락의 크기입니다.

    는 TCP-백 로그 큐 또는 전체 연결 대기열을 수락의 크기입니다.

    워드 프로세서로서 당신은 말했다 언급 :

    레디 스 서버 사용하는 TCP-백 로그의 설정이 듣기와 동의 큐의 크기를 지정합니다 (). 그리고 SYN 큐 크기는 리눅스의 관리자에 의해 결정됩니다.

    그것은 "전체 연결 큐"를 의미한다면, 왜 불완전한 연결 대기열의 크기를 제한 tcp_max_syn_backlog 공식 인상해야합니까?

    tcp_max_syn_backlog 공식을 제고하는 느린 클라이언트 연결 문제를 방지하는 것을 목표로한다. 이 레디 스 서버와 3 웨이 핸드 셰이크를하고있는 일부 느린 클라이언트 있으며, 이러한 클라이언트는 응답과 전송 요청을 읽기 속도가 느린 경우가 느린이기 때문에, 그들은 오랜 시간 동안 레디 스 서버의 SYN 큐를했다합니다.

    그리고 어떤 경우, SYN-큐는 이러한 비효율적 인 클라이언트 때문에 채워집니다. SYN 큐가 작성되면, 레디 스 서버는 새로운 고객을 받아 들일 수 없습니다. 그래서 당신이 처리 할 수있는 tcp_max_syn_backlog 공식을 제기해야한다.

  3. ==============================

    3.어제, 나는 레디 스에서 작업 여호수아 칼튼의 6 장을 읽어  레디 스의 단점 중 하나는 게시 및 구독 "고 기록  모델은 클라이언트가받을 항상 연결되어 있어야 있습니다  메시지는 연결이 끊어 클라이언트가 메시지를 잃게하고 있습니다  레디 스의 이전 버전을 사용할 수 없게, 충돌 될 수있는 경우, 또는 살해  느린 가입자가 있었다. "

    어제, 나는 레디 스에서 작업 여호수아 칼튼의 6 장을 읽어  레디 스의 단점 중 하나는 게시 및 구독 "고 기록  모델은 클라이언트가받을 항상 연결되어 있어야 있습니다  메시지는 연결이 끊어 클라이언트가 메시지를 잃게하고 있습니다  레디 스의 이전 버전을 사용할 수 없게, 충돌 될 수있는 경우, 또는 살해  느린 가입자가 있었다. "

    푸시 메시지가 유용 할 수 있지만 클라이언트가 저런 이유로 항상 연결 상태를 유지할 수없는 경우 다음, 여호수아 칼튼가 미국, "우리가 문제로 실행합니다. 이러한 제한을 해결하기 위해, 우리는 두 개의 서로 다른 풀 메시징 방법을 쓸 것이다 그 공개 / 등록에 대한 교체로 사용할 수 있습니다. 우리의 처음에서 큐 첫번째 아웃. 나중에이 섹션에서, 우리는로 이동합니다으로는 많은 공통점 공유하기 때문에 우리는 먼저, 단일받는 사람의 메시지와 함께 시작합니다 우리가 메시지의 여러 수신자를 가질 수 방법. 여러 수신자, 우리는 "그들이 분리하더라도, 레디 스 게시하고 우리가 모든받는 사람에게 도착하는 우리의 메시지를 필요로 할 때 구독 교체 할 수 있습니다      우리는이 / 레디 스 게시 게시 여호수아 칼튼의 제 6.5.2 다중 수신자로 구독 교체 UDP를 감지하는 프로토콜 및 수리 단선 손실을 활용하는 대신 교체를 구독하는 것이 더 성능이 좋은 지 여부를 알고 관심이 있습니다.

     Could we set a high tcp_max_syn_backlog in redis.conf to prevent either of
    

    여호수아 칼슨의 단일받는 메시지 및 각 메시지는 20 바이트 초당 20,000 메시지의 부하 상태에서 차단하는 여러 -recipient 메시징 방법?

  4. from https://stackoverflow.com/questions/45807792/whats-tcp-backlog-in-redis-conf by cc-by-sa and MIT license