PHP의 GD 라이브러리를 이용해서, 퍼가기 방지를 적용해서

이미지를 일부 카페에서 호스팅 하려고 합니다.

이미지 호스팅은 일단 트래픽이 가장 중요하다 생각해서 트래픽이 넉넉한 Ramnode로 왔습니다.

다만 서버사양은 최하급입니다. CPU가 2.3G 1코어, 램 128MB 입니다.

 

어제 GD로 이미지 호스팅 테스트 해봤습니다.

이미지를 5번을 요청하면 그중 1번은 이미지가 뜨다말고 멈추고, 새로고침을 하면 503 오류를 냅니다.

수십초 이상 지난후, 새로고침 하면 이미지가 다시 뜨긴 합니다.

이미지는 600x600 픽셀 정도의 jpg 이미지였고, 50kByte 정도의 사이즈를 가졌습니다.

 

짐작으로는 램이 부족해서 이미지 뿌려주다가 라이브러리가 멈춰버리는게 아닌가 하는 생각도 드네요.

일 평균 200명 이하의 사람들에게 보여지고 요청당 100kByte 미만의 이미지를 GD로 편집(워터마크)해서

사람들에게 전송하는데, 램 사이즈가 최소 어느정도는 되야 수월할까요?

  • ?
    GD로 이미지 편집하면 메모리 많이 먹습니다. 매 번 워터마크 씌우지 마시고, 파일로 저장해놓고 캐싱하세요.

    램 128MB면 이미지만 처리하느라 서버만 죽어날텐데요. 게다가 외부 링크까지 걸어놓으셨다면 접속자가 좀 많을수도 있을텐데, 동접자까지 감당하려니 서버가 탈이 날 수 밖에요.
  • ? ?
    • KSH
    • 질문기여자
    답변 감사합니다.
    다만 로그를 남겨야 하기 때문에 php를 꼭 거쳐가야 하는데 php 구문 내에서 이미지 파일을 가져다가
    GD를 통하지 않거나 직접 뿌려주는 방법이 있을까요?
  • ? ?
    한 번은 무조건 GD를 거쳐야 합니다. 워터마크 씌우고 바로 출력하지 마시고, 파일로 저장해놓으시고, 필요할 때마다 저장한 파일을 뿌려주면 될 것 같습니다.
  • ? profile
    로그는 아파치나 nginx에서 남기도록 하고, 정기적으로 로그파일을 불러와서 파싱하세요.
    매번 PHP를 실행하려면 RAM 128MB로는 무리입니다.
    아무런 처리도 거치지 않는 파일서버로나 쓸 만한 사양이네요.
  • ? ?
    • KSH
    • 질문기여자
    답변 감사합니다.
  • profile ?
    • KSH
    • 질문기여자
    답변 감사합니다.
    매번 PHP 처리도 벅찬 사양이었군요...