특정 시간에 정확히 지연이 발생하는 사례입니다. (대용량 서버)
Reg. Date: November 20, 2006 By 이현수
시나리오 :
세대의 서버가 있습니다.
A B C
A : solaris sun5.9 CPU 16장 RAM : 1G 30 장
B : solaris sun5.9 CPU 16장 RAM : 1G 30 장
C : 알수 없으니 동종의 비슷한 기종
A --> B 로의 대량의 데이터를 전송 4K 바이트 짜리 초당 1000개 정도를 처리합니다.
하루 24시간을 따지면 약 5천만개 정도를 처리하는데 ...
B --> C 로는 하루 12번 즉 매 정시가 되면 FTP 를 통해 B에서 C 서버로 약 200메가 정도를 전송합니다. FTP 를 이용하여 송신 완료하는데 대략 한 3분~4분 정도 사이가 걸립니다.
문제는 여기서 부터 입니다.
B-->C 로의 전송이 되고 나면
A-->B 로의 전송에 있어서 대략 한 8분 정도간 지연이 발생합니다.
정확히 말씀드리자면 FTP 전송이 끝난후 매시 5분이 되면 top으로 보았을 경우 정확히 프로세스 모듈이
아래로 떨어지기 시작합니다. 데이터를 확인해 보아도 지연이 발생함이 확실히 보이구요 ...
TRUSS 를 찍어보니 Polling 하는 시간이 너무기네요...
아시겠지만 Polling 시간이 길어지면 recv 버퍼에 데이터가 들어오지 않는다는 말인데요...
아무래도 FTP 전송후에 흐름제어를 하는것 같습니다.
A와 B의 syn , ack 관련 사항을 보아도 너무느리게 전송이 오가는것 같네요 ....
궁금사항 :
특정포트가 흐름제어를 받게 되면 다른 모든 포트역시도 제어를 받게 되나요?
Data link 계층에서 흐름제어를 하게 되면 일단 프레임 단위로 제어를 하게 되는지?
nagle 알고리즘과의 연관성도 궁금합니다.
참고로 FTP 는 shell 을 이용하여 전송후 바로 quit 에서 빠져 나와 버립니다.
이것 또한 연관성이 있는건지 궁금합니다.
대용량 서버인지라 매우 급하네요....
아시는 분은 답변 부탁드립니다. 연관된 사례라도 있으시면 부탁드립니다. 그럼
좋은 하루 보내세요 ... 답변기다리겠습니다.