>

nginx 대용량 파일 다운로드

아래 docker-compose.yml 파일은 디렉터리 conf및 docker-compose.yml이 있는 파일을 만들었다고 가정합니다. 또한 Nginx 구성 파일이 conf 디렉터리 내에 있고 다운로드하려는 파일이 파일 디렉토리에 있다고 가정합니다. 먼저 사용자 지정 구성 파일을 통해 Nginx 이미지를 빌드하고(이미지 및 컨테이너에 대한 자세한 내용은 이 설명서를 참조)합니다. 이렇게 하면 무언가를 다운로드해야 할 때 이미지를 시작하고 다운로드가 완료되면 중지합니다. 위의 구성은 Nginx가 포트 80에서 듣고 /downloads / URL에서 요청이 이루어질 때 파일을 제공하라고 알려줍니다. 우리는 문제의 근본이 Nginx에 있다고 결정했습니다. 그 결론은 간단한 테스트를 기반으로했다. 웹 서버가 900개의 활성 연결에 도달했을 때 테스트 파일을 다운로드하려고 했습니다. 다운로드 속도는 ~ 20kBps였습니다. 동시에 FTP를 통해이 파일을 다운로드하기 시작했습니다. FTP 속도는 20MB 이상이었습니다.

4) 처음 세 단계에서 몇 가지 구성 옵션을 시도했지만 원하는 결과를 얻을 수 없었습니다. 경우에 따라 연결의 일부를 잃어 보았지만 전체 대역폭이 사용되었습니다. 다른 경우에는 전체 대역폭을 사용하지 않았지만 모든 것이 안정적이였습니다. 디스크의 잠금을 방지하기 위해 aio 커널 모듈을 활성화하고 aio를 지원하여 Nginx를 다시 컴파일했습니다. Aio는 좋은 결과를 보였지만 한계가 있었습니다. 디스크 I/O가 증가하고 서버의 부하 평균이 증가했습니다. 먼저 문서에서 Nginx 구성을 확인하여 동일하인지 확인하십시오. 이것은 Nginx, 스프링 부팅 및 SQLite (또는 MySQL)를 기반으로 서비스를 다운로드하는 큰 파일 (일반적으로 GB 크기)입니다. 동적으로 더 많은 파일과 더 많은 Nginx 노드를 추가하는 것은 지원, 단순히 관리 웹 페이지에 몇 가지 등록 단계가 필요합니다. 게다가 Nginx의 근본적인 지원은 X-Accel입니다. 기본 페이지로 돌아가서 „내 다운로드 작업 목록“을 클릭합니다. 그것은 놀라운 일이었습니다.

하드웨어 RAID 컨트롤러에 20개의 SATA HDD가 있는 6GB 메모리 및 디스크 어레이인 인텔 제온 L5410이 있는 강력한 서버였습니다. 이 소프트웨어 부분은 매우 까다로운 워크로드에서 실행되도록 개발 및 설계되었습니다: Os로 FreeBSD 및 Nginx 웹 서버로. FreeBSD는 최신 서버를 위한 고급 운영 체제이며 네트워크 애플리케이션을 위한 고성능으로 잘 알려져 있습니다. Nginx는 세계에서 세 번째로 가장 인기있는 웹 서버입니다. 번개 속도로 정적 콘텐츠(예: 이미지, 스타일, js)를 처리하고 사이트의 속도를 크게 향상시킬 수 있습니다. 이제 우리는 대용량 파일을 제공 할 때 Nginxs 동작이 항상 예측 할 수있는 것은 아니라는 것을 알고 있습니다. 편집 : 2.2GB를 다운로드 한 후 완료된 것으로 나타났습니다. 뭔가 여전히 잘못 생각. 5) 우리가 가진 모든 경험을 감안할 때, 우리는 극적으로 전체 파일 서버 스키마를 변경하기로 결정했다.