노드 간 통신 채널 미세 조정
1153 단어 erlangtcpbuffer커 뮤 니 케 이 션
erlang 노드 간 통신 은 설정 할 수 있 습 니 다.기본 값 은 inet 입 니 다.tcp 。두 노드 가 소통 하려 고 할 때 netkernel 모듈 은 필요 한 연결 을 만 드 는 것 을 책임 집 니 다.inet_tcp 는 밑 에 있 는 gen 을 호출 합 니 다.tcp 데이터 전송 수락.rpc 나 노드 간 의 메시지 상호작용 은 모두 이 port 를 통 해 나 갑 니 다.
분포 노드 간 에 가끔 대량의 정보 가 흐 르 면 모든 소식 이 이 port 를 통 해 들 어 오기 때문에 이 port 의 성능 은 노드 간 통신 의 효율 에 큰 영향 을 미친다.그러면 가끔 우 리 는 이 port 의 인 자 를 미세 조정 하여 업무 의 특징 에 따라 효율 을 극 대화 하려 고 합 니 다.그러나 port 는 어떻게 얻 습 니까?
node_port(Node)->
{_, Owner}=lists:keyfind(owner, 1, element(2, net_kernel:node_info(Node))),
hd([P|| P<-erlang:ports(), erlang:port_info(P, connected) == {connected,Owner}])
Port 가 있 으 면 tcp port 의 수위 선,buffer 등 을 설정 할 수 있 습 니 다.
inet:setopts(node_port('xx@nd-desktop'), [{high_watermark, 131072}]).
또한 nodeup nodedown 이 tcp 링크 를 바 꿀 수 있 으 니 다시 가 져 오 는 것 에 주의해 야 합 니 다.
또 다른 방법 이 있 습 니 다.모든 gen 을 설정 합 니 다.tcp 의 행동,예 를 들 어 다음 과 같은 방법:
erl -kernel inet_default_connect_options '[{sndbuf, 1048576}, {high_watermark, 131072}]'
그러나 이 영향 면 은 매우 커서 정상 tcp 의 매개 변수 에 영향 을 주 었 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Instalando o Elixir e o Erlang com o gerenciador de versões asdfEsse tutorial usa o gerenciador de versões asdf, mas fique a vontade para utilizar outros se preferir. Infelizmente o as...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.