1

Umbraco에서 ImageProcessor를 사용하여 이미지 로딩, 크기 조정 및 많은 작업을 수행 할 때 성능이 저하되었습니다. 현재 사용Umbraco와 AWS S3 버킷 간의 이미지 및 캐시 된 이미지 (ImageProcessor)에 대한 성능이 매우 낮습니다.

:

  • Umbraco 7.4.3
  • AWSSDK.Core 3.3.11
  • AWSSDK.S3 3.3.5.11
  • ImageProcessor 2.5.3
  • ImageProcessor.Web 4.8. 3
  • Umbraco.Storage.S3 1.0.23 (더 이상 유지 관리되지 않음)

CloudFront는 이미지를 캐싱하지 않습니다. (사용자 정의 원점은 내가 이해 한 것에서 캐싱되지 않습니다.) 사이트가 넘어지지 않도록하려면 CloudFront와 Umbraco 서버 사이에 NGINX 서버가 있습니다. 표준 AWS로드 밸런서).

2 x c4.xlarge 인스턴스는 이미지 처리에 즉시 대응할 수 없다고 생각하기 어렵습니다. Log snippet

난 그냥 어떤 차이를 만들 것입니다 있는지 확인하기 위해 AWS 액세스 키의 새로운 쌍을 추가하는 듯했으나 슬프게도, 여전히 느린 :

것은 그 상황이 발생할 다음과 같다 나타났습니다. 백 오피스조차도 콘텐츠 탭과 미디어 탭 모두에서 이미지 미리보기를로드하는 데 오래 걸립니다.

구성을 현명하게 설정하면 인터넷에서 발견 한 내용 (FileSystemProviders 및 ImageProcessor 구성)에 대해 세 가지 검사를 수행했습니다.

Imageprocessor 캐시 설정 :

<?xml version="1.0" encoding="utf-8" ?> 
<!-- For more information on using transformations 
    see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. --> 
<caching xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" currentCache="AmazonS3Cache" xdt:Transform="Replace"> 
    <caches> 
    <cache name="AmazonS3Cache" type="formula_e.web.cms.Core.ImageProcessor.AmazonS3Cache, formula-e.web.cms" maxDays="365" xdt:Locator="Match(name)" xdt:Transform="Replace"> 
     <settings> 
     <setting key="AwsAccessKey" value="XXXXXXX" /> 
     <setting key="AwsSecretKey" value="XXXXXXX" /> 
     <setting key="AwsBucketName" value="XXXXXXX" /> 
     <setting key="AwsEndpoint" value="http://XXXXXXX.s3.amazonaws.com/" /> 
     <setting key="AwsBucketFolder" value="cache-live" /> 
     <setting key="CachedCDNRoot" value="http://XXXXXXX.cloudfront.net" /> 
     <setting key="StreamCachedImage" value="true" /> 
     </settings> 
    </cache> 
    </caches> 
</caching> 

Imageprocessor 보안 설정 :

<?xml version="1.0" encoding="utf-8" ?> 
<!-- For more information on using transformations 
    see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. --> 
<security xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <services xdt:Transform="Replace"> 
    <service prefix="media/" name="CloudImageService" type="ImageProcessor.Web.Services.CloudImageService, ImageProcessor.Web"> 
     <settings> 
     <setting key="MaxBytes" value="41943040"/> 
     <setting key="Timeout" value="30000"/> 
     <setting key="Host" value="http://XXXXXXX.s3.amazonaws.com/media/"/> 
     </settings> 
    </service> 
    </services> 
</security> 

Filesytemproviders 설정 : 나는 문제가 무엇인지 찾아 가야합니까 어떻게

<?xml version="1.0" encoding="utf-8" ?> 
<!-- For more information on using transformations 
    see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. --> 
<FileSystemProviders xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <Provider alias="media" type="Umbraco.Storage.S3.BucketFileSystem, Umbraco.Storage.S3" xdt:Locator="Match(alias)" xdt:Transform="Replace"> 
    <Parameters> 
     <!-- S3 Bucket Name --> 
     <add key="bucketName" value="XXXXXXX" /> 
     <!-- S3 Bucket Hostname - Used for storage in umbraco's database (Should be blank when using Virtual File Provider) --> 
     <add key="bucketHostName" value="" /> 
     <!-- S3 Object Key Prefix - What should we prefix keys with? --> 
     <add key="bucketKeyPrefix" value="media" /> 
     <!-- AWS Region Endpoint (us-east-1/us-west-1/ap-southeast-2) Important to get right otherwise all API requests will return a 30x response --> 
     <add key="region" value="eu-west-1" /> 
    </Parameters> 
    </Provider> 
</FileSystemProviders> 

?

+0

umbraco를 CDN에 게시하는 방법에 대한 설명서를 확인 했습니까? – mootmoot

+0

@mootmoot 링크를 공유하고 싶습니까? 나는이 프로젝트를 물려 받았기 때문에 내가 할 수있는 한 대부분의 셋업을 알아 내려고 노력했다. 감사합니다 – MrVentzi

+0

Google 'umbraco 캐시 AWS CDN'하시기 바랍니다. CDN 캐시 설정은 간단하지 않습니다. – mootmoot

답변

1

비슷한 문제가있는 사람이라면 S3의 이미지 캐시 때문에 캐시 구성 파일에 문제가있어 여러 이미지가 동시에 요청되었을 때 전체 시스템이 매우 느리게 수행됩니다 지역보다는 오히려.

캐시가 공식 (심지어 JamesSouth가 확인한)이 아닌 currentCache = "AmazonS3Cache"로 설정되었습니다.

일단 프로덕션 시스템에 currentCache = "DiskCache"를 넣으면 모든 것이 정상적으로 작동합니다.