Melden Sie sich beim AEM-Server an und öffnen Sie die Datei crx-quickstart/install/org.apache.jackrabbit.oak.plugins.blob.datastore.S3DataStore.config in einem Editor.
Wenn Sie große Bilder oder Videos (100 MB+) mithilfe des S3DataStore in einem mehrknotigen AEM-Cluster zur Assets-Benutzeroberfläche über einen sekundären Topologieknoten hochladen, dann würden Fehlermeldungen wie die folgende protokolliert werden.
17.04.2017 23:53:27.106 *ERROR* [JobHandler: /etc/workflow/instances/server0/2017-04-17/update_asset_5:/content/dam/test.jpg/jcr:content/renditions/original] com.day.cq.dam.core.impl.cache.CQBufferedImageCache Error while loading image /content/dam/rrd/dsg/migration-test/to-rrd/aem-tester/Perf1492487597162_Performance_100MB_JPG.jpg/jcr:content/renditions/original java.lang.RuntimeException: Error occurred while obtaining InputStream for blobId [c260220808fc2ee8550a97daea0444123b02f90b#103376192] at org.apache.jackrabbit.oak.plugins.blob.BlobStoreBlob.getNewStream(BlobStoreBlob.java:49) at org.apache.jackrabbit.oak.plugins.value.BinaryImpl.getStream(BinaryImpl.java:53) at org.apache.sling.jcr.resource.internal.helper.LazyInputStream.getStream(LazyInputStream.java:106) at org.apache.sling.jcr.resource.internal.helper.LazyInputStream.read(LazyInputStream.java:65) at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792) at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769) at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744) at com.day.cq.dam.commons.handler.StandardImageHandler.getImage(StandardImageHandler.java:245) at com.day.cq.dam.core.impl.handler.JpegHandler.getImage(JpegHandler.java:79) at com.day.cq.dam.core.impl.cache.CQBufferedImageCache.getImage(CQBufferedImageCache.java:116) at com.day.cq.dam.core.impl.gfx.CommonsGfxRenderer.createImageLayer(CommonsGfxRenderer.java:488) at com.day.cq.dam.core.impl.gfx.CommonsGfxRenderer.createLayer(CommonsGfxRenderer.java:163) at com.day.cq.dam.core.impl.gfx.CommonsGfxRenderer.render(CommonsGfxRenderer.java:116) at com.day.cq.dam.core.impl.RenditionMakerImpl$PlanBasedTemplate.apply(RenditionMakerImpl.java:132) at com.day.cq.dam.core.impl.RenditionMakerImpl.generateRenditions(RenditionMakerImpl.java:216) at com.day.cq.dam.core.process.CreateWebEnabledImageProcess.createWebEnabledImage(CreateWebEnabledImageProcess.java:165) at com.day.cq.dam.core.process.ThumbnailProcess.execute(ThumbnailProcess.java:82) at com.day.cq.workflow.compatibility.CQWorkflowProcessRunner.execute(CQWorkflowProcessRunner.java:93) ... Caused by: java.io.IOException: org.apache.jackrabbit.core.data.DataStoreException: Could not length of dataIdentifier c260220808fc2ee8550a97daea0444123b02f90b at org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore.getStream(DataStoreBlobStore.java:539) at org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore.getInputStream(DataStoreBlobStore.java:322) at org.apache.jackrabbit.oak.plugins.blob.BlobStoreBlob.getNewStream(BlobStoreBlob.java:47) ... 26 common frames omitted Caused by: org.apache.jackrabbit.core.data.DataStoreException: Could not length of dataIdentifier c260220808fc2ee8550a97daea0444123b02f90b at org.apache.jackrabbit.oak.blob.cloud.aws.s3.S3Backend.getLength(S3Backend.java:485) at org.apache.jackrabbit.core.data.CachingDataStore.getLength(CachingDataStore.java:671) at org.apache.jackrabbit.core.data.CachingDataStore.getRecord(CachingDataStore.java:469) at org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore.getDataRecord(DataStoreBlobStore.java:548) at org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore.getStream(DataStoreBlobStore.java:533) ... 28 common frames omitted Caused by: com.amazonaws.services.s3.model.AmazonS3Exception: Not Found (Service: Amazon S3; Status Code: 404; Error Code: 404 Not Found; Request ID: 09ED6CDC6129E1DA) at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1389) at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:902) at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:607) at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:376) at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:338) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:287) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3826) at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:1015) at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:991) at org.apache.jackrabbit.oak.blob.cloud.aws.s3.S3Backend.getLength(S3Backend.java:478) ... 32 common frames omitted
AEM Assets 6.1, 6.2 auf MongoMK mit S3DataStore
Die Ursache dieses Problems besteht aufgrund dessen, dass der asynchrone Upload der Binärdatei zum S3 länger als die Auftragsverarbeitung im Cluster dauert. Der Leader-Knoten verarbeitet die DAM Update Asset Workflow-Aufträge, aber der Auftrag wird verarbeitet, bevor die Datei zu S3 geladen wird. Sehen Sie sich für weitere Details OAK-4903 an.
Dieses Problem wurde in AEM6.3 geregelt.
Als Umgehungslösung in AEM6.1 und 6,2 gehen Sie wie folgt vor:
Melden Sie sich beim AEM-Server an und öffnen Sie die Datei crx-quickstart/install/org.apache.jackrabbit.oak.plugins.blob.datastore.S3DataStore.config in einem Editor.
Legen Sie diese Eigenschaft fest
asyncUploadLimit="0"
Starten Sie AEM neu
Das Einstellen des asyncUploadLimit auf 0 hat eine Auswirkung auf Asset-Dateiuploads. Nach dem Einrichten müssen Sie einen Belastungstest durchführen, um sicherzustellen, dass die Umgebung weiterhin die Leistungsanforderungen erfüllt.
Eine andere Vorgehensweise zum Lösen des Problems ohne Leistungseinbußen besteht darin, die Sling Job Distribution zu ermöglichen. Sie können
Sling Jobs dann direkt auf den sekundären Cluster-Knoten zusammen mit den primären verarbeiten.
Gehen Sie dazu wie folgt vor:
Wechseln Sie zu http://aem-host:port/system/console/configMgr
Suchen Sie den Apache Sling Job Manager und klicken Sie auf „Bearbeiten“ (Stiftsymbol rechts)
Deaktivieren Sie Disable Distribution
Klicken Sie auf Speichern
Bei Ihrem Konto anmelden