대용량 파일 업로드 시 Apache2 메모리 사용량

대용량 파일 업로드 시 Apache2 메모리 사용량

저는 PHP 5.2.10과 함께 apache2.2.12를 실행하고 있습니다. PHP는 fcgid를 통해 별도의 프로세스로 실행되도록 구성됩니다. 문제는 사용자가 파일을 업로드하면 아파치 프로세스의 크기가 거의 같은 양만큼 부풀어 오른다는 것입니다. 따라서 누군가 200MB 파일을 업로드하려고 하면 하위 프로세스 중 하나가 현재 크기+200MB로 늘어납니다. 2명의 사용자가 동시에 업로드를 시작하면 서버가 충돌합니다.

이제 증가하는 것은 가상 메모리 크기이지만 OpenVZ 기반 VPS를 사용하고 있기 때문에 그것이 중요합니다.

내 질문은 다음과 같습니다

  • 이것이 일반적인 Apache 동작입니까, 아니면 이 문제를 해결하기 위해 뭔가를 할 수 있습니까?
  • 그렇지 않은 경우 대용량 파일 업로드를 처리하는 메모리 효율적인 방법이 있습니까? 현재 동작에 따르면 업로드를 수락하는 모든 Apache 하위 항목에 대해 1GB의 여유 RAM이 필요합니다.

감사해요!

아바야

-

답변1

흥미로운 문제인데 php의 한계인 것 같습니다. 다음을 참조하세요.

결국 둘 다 "Java 또는 Perl 사용"이나 다른 것을 말하는 것 같습니다. 아마도 stackoverflow의 누군가가 대답을 가지고 있을 것입니다. 이렇게 큰 업로드의 경우 사용자 친화적이어야 하는지에 따라 sftp가 더 나은 솔루션일 수 있습니다.

PHP가 아닌 것을 사용하고 싶다면,J업로드파일을 청크로 나누고 각 청크를 디스크로 플러시할 수 있으므로 좋은 옵션처럼 보입니다. PHP여야 한다면 다음과 같이 소켓 프로그래밍을 사용하여 사용자 정의한 것을 롤아웃할 수 있을 것 같습니다.이 stackoverflow 게시물.

이 크기에서는 어쨌든 재개 및 진행 기능이 있는 것을 원할 것입니다.

관련 정보