Adobe Experience Manager(AEM)資產設定包含許多硬體、軟體和網路元件。 根據您的部署方案,您可能需要對硬體、軟體和網路元件進行特定配置更改以消除效能瓶頸。
此外,識別並遵守某些硬體和軟體優化指南有助於建立健全的基礎,使您的AEM Assets部署能夠滿足對效能、可擴充性和可靠性的期望。
在AEM Assets,效能不佳會影響使用者在互動式效能、資產處理、下載速度等方面的體驗。
事實上,效能最佳化是您在建立任何專案的目標量度之前所執行的基本工作。
以下是您發現並修正效能問題後,才會對使用者產生影響的特定重點領域。
雖然AEM許多平台都支援Adobe,但是Linux和Windows上對原生工具的支援最強,這有助於提供最佳效能並簡化建置。 理想情況下,您應部署64位元作業系統,以符合AEM Assets部署的高記憶體需求。 和任何部AEM署一樣,您應盡可能實作TarMK。 雖然TarMK無法擴展至單一作者執行個體,但其效能比MongoMK強。 您可以新增TarMK卸載例項,以提高AEM Assets部署的工作流程處理能力。
若要改善資產上傳時間,請對Java temp目錄使用高效能儲存。 在Linux和Windows上,可使用RAM驅動器或SSD。 在雲端環境中,可使用等同的高速儲存類型。 例如,在AmazonEC2中,臨時驅動器驅動器可用於臨時資料夾。
假設伺服器記憶體充足,請配置RAM驅動器。 在Linux上,運行以下命令以建立8 GB的RAM驅動器:
mkfs -q /dev/ram1 800000
mkdir -p /mnt/aem-tmp
mount /dev/ram1 /mnt/aem-tmp
df -H | grep aem-tmp
在Windows OS中,您必須使用協力廠商驅動程式來建立RAM磁碟機,或只使用高效能的儲存空間,例如SSD。
在高效能臨時卷就緒後,請設定JVM參數-Djava.io.tmpdir。 例如,您可將下列JVM參數新增至bin/start指令碼中的CQ_JVM_OPTS變AEM數:
-Djava.io.tmpdir=/mnt/aem-tmp
由於Oracle自2015年4月起停止發行Java 7更新,Adobe建議在Java 8上部署AEM Assets。 在某些情況下,它已顯示出改進的效能。
您應設定下列JVM參數:
-XX:+UseConcMarkSweepGC
-Doak.queryLimitInMemory
=500000-Doak.queryLimitReads
=100000-Dupdate.limit
=250000-Doak.fastQuerySize
=true建議所有AEM Assets使用者將資料存放區與區段存放區分開。 此外,設定maxCachedBinarySize
和cacheSizeInMB
參數有助於將效能提升到最高。 將maxCachedBinarySize
設定為快取中可保存的最小檔案大小。 指定cacheSizeInMB
中用於資料儲存的記憶體快取大小。 Adobe建議您將此值設定為堆大小總計的2-10%。 不過,負載/效能測試可協助您決定理想的設定。
當將大量資產上傳至Adobe Experience Manager時,為了允許記憶體使用量出現意外的尖峰,並防止JVM因OutOfMemoryErrors而失敗,請減少已設定的緩衝影像快取最大大小。 例如,您有一個系統,其最大堆積(- Xmx
param)為5 GB,Oak BlobCache設為1 GB,檔案快取設為2 GB。 在這種情況下,緩衝快取最多需要1.25 GB的記憶體,因此,當出現意外的尖峰時,僅需0.75 GB的記憶體。
在OSGi Web Console中配置緩衝快取大小。 在https://host:port/system/console/configMgr/com.day.cq.dam.core.impl.cache.CQBufferedImageCache
處,以位元組為單位設定屬性cq.dam.image.cache.max.memory
。 例如,1073741824是1 GB(1024 x 1024 x 1024 = 1 GB)。
從AEM6.1 SP1,如果您使用sling:osgiConfig
節點來配置此屬性,請確保將資料類型設定為Long。 如需詳細資訊,請參閱CQBufferedImageCache在資產上傳期間耗用堆。
實施S3或共用檔案資料儲存有助於在大規模實施中節省磁碟空間並提高網路吞吐量。 有關使用共用資料儲存的利弊的詳細資訊,請參閱資產調整指南。
以下S3資料儲存配置(org.apache.jackrabbit.oak.plugins.blob.datastore.S3DataStore.cfg
)幫助將現有檔案資料儲存中的12.8 TB二進位大對象(BLOB)Adobe到客戶站點的S3資料儲存中:
accessKey=<snip>
secretKey=<snip>
s3Bucket=<snip>
s3Region=us-standard
s3EndPoint=<a href="https://s3.amazonaws.com/">s3.amazonaws.com</a>
connectionTimeout=120000
socketTimeout=120000
maxConnections=80
writeThreads=60
concurrentUploadsThreads=30
asyncUploadLimit=30
maxErrorRetry=1000
path=/opt/author/crx-quickstart/repository/datastore
s3RenameKeys=false
s3Encryption=SSE_S3
proactiveCaching=true
uploadRetries=1000
migrateFailuresCount=400
Adobe建議啟用HTTPS,因為許多公司都有防火牆來監聽HTTP流量,這會對上傳和損毀檔案造成負面影響。 對於大型檔案上傳,請確定使用者有連線至網路,因為WiFi網路會快速飽和。 有關確定網路瓶頸的指導,請參閱資產規模調整指南。 要通過分析網路拓撲來評估網路效能,請參見資產網路考慮事項。
主要是,您的網路優化策略取決於可用頻寬的數量和實例的負AEM載。 常見配置選項(包括防火牆或代理)有助於提高網路效能。 以下是需要記住的一些要點:
盡可能將「DAM更新資產」工作流程設為「暫時」。 此設定可大幅降低處理工作流程所需的開銷,因為在本例中,工作流程不需要經過一般的追蹤和封存程式。
依預設,DAM更新資產工作流程在6.3中會設AEM為「暫時」。在這種情況下,您可以略過以下過程。
在要配置的實例AEM上開啟http://localhost:4502/miscadmin
。
從導覽樹狀結構中,展 開「工具 >工 作流程 >模 型> dam 」。
連按兩下DAM更新資產。
從浮動工具面板切換至Page標籤,然後按一下Page Properties。
選擇「過渡工作流」按一下「確定」。
有些功能不支援暫時性工作流程。 如果您的AEM Assets部署需要這些功能,請勿設定暫時工作流程。
在無法使用暫時性工作流程的情況下,請定期執行工作流程清除,以刪除封存的DAM更新資產工作流程,以確保系統效能不會降低。
通常,您應每週運行清除工作流。 但是,在資源密集的情形中(例如在大規模資產擷取期間),您可以更頻繁地執行它。
要配置工作流清除,請通過OSGi控制台添加新的AdobeGranite工作流清除配置。 接著,設定並排程工作流程作為每週維護視窗的一部分。
如果清除過長時間,就會逾時。 因此,您應確保清除作業完成,以避免由於工作流數過多而導致清除工作流無法完成的情況。
例如,在運行許多非臨時工作流(建立工作流實例節點)後,您可以在臨機基礎上運行ACS AEM Commons Workflow Remover。 它會立即移除冗餘、已完成的工作流程例項,而不需等待Adobe的Granite Workflow Purge排程器執行。
預設情AEM況下,運行與伺服器上處理器數量相等的最大並行作業數。 此設定的問題在於,在負載較重的時期,所有處理器都會被DAM更新資產工作流程佔用,降低UI回應速度,並防止執行其AEM他保護伺服器效能與穩定性的程式。 作為一個好做法,請通過執行以下步驟將此值設定為伺服器上可用處理器的一半:
首先,將隊列設定到一半的可用處理器是一個可行的解決方案。 不過,您可能必須增加或減少此數量,才能達到最大的吞吐量,並依環境進行調整。 瞬態和非瞬態工作流程以及其他程式(例如外部工作流程)有不同的佇列。 如果多個隊列設定為50%的處理器同時處於活動狀態,則系統可以快速過載。 大量使用的佇列在使用者實作中會大不相同。 因此,您可能必須仔細配置它們,以達到最大效率,而不必犧牲伺服器穩定性。
針對大量耗費資源的工作流程或工作流程(例如視訊轉碼),您可以將DAM更新資產工作流程卸載至第二個作者實例。 通常,卸載的問題是,卸載工作流處理所保存的任何負載都會被在實例之間來回複製內容的成本所抵消。
從AEM6.2開始,使用6.1版的功能AEM包,您可以使用無二進位複製執行卸載。 在此模型中,作者實例共用一個通用資料儲存,並僅通過轉發複製來來回發送元資料。 雖然此方法適用於共用檔案資料儲存,但S3資料儲存可能存在問題。 由於背景寫入線程可能會引起延遲,因此在卸載作業開始之前,資產可能尚未寫入到資料儲存。
DAM更新資產工作流程包含為工作設定的完整步驟套裝,例如Dynamic Media傳統PTIFF產生和InDesign Server整合。 不過,大部分使用者可能不需要其中幾個步驟。 Adobe建議您建立DAM更新資產工作流程模型的自訂復本,並移除任何不必要的步驟。 在此情況下,請更新DAM更新資產的啟動器,以指向新模型。
深入執行DAM更新資產工作流程可大幅增加檔案資料存放區的大小。 通過Adobe進行的實驗表明,如果在8小時內執行約5500個工作流,則資料儲存大小可以增加約400 GB。
這是臨時增加,在運行資料儲存廢棄項目收集任務後,資料儲存將恢復為其原始大小。
通常,資料儲存廢棄項目收集任務與其他計畫維護任務一起每週運行。
如果您有有限的磁碟空間並密集執行DAM更新資產工作流程,請考慮更頻繁地排程廢棄項目收集工作。
客戶在其網站上使用各種大小和格式的影像,或將影像發佈給商業合作夥伴。 由於每個轉譯都會增加資產在儲存庫中的佔用空間,因此Adobe建議您審慎地使用此功能。 為了減少處理和儲存影像所需的資源量,您可以在執行時期產生這些影像,而不是在擷取時當做轉譯。
許多網站客戶會實作影像servlet,在要求影像時調整影像大小並裁切影像,這會對發佈例項造成額外負載。 不過,只要可以快取這些影像,挑戰就可以減輕。
另一種方法是使用Dynamic Media經典技術完全放棄影像操縱。 此外,您還可以部署品牌入口網站,不僅負責從基礎架構產生轉譯,AEM還負責整個發佈層。
如果您自訂「DAM更新資產」工作流程,以使用ImageMagick產生轉譯,Adobe建議您修改位於/etc/ImageMagick/的policy.xml檔案。 預設情況下,ImageMagick使用OS卷上的整個可用磁碟空間和可用記憶體。 在policy.xml的policymap
區段中進行下列組態變更,以限制這些資源。
<policymap>
<!-- <policy domain="system" name="precision" value="6"/> -->
<policy domain="resource" name="temporary-path" value="/ephemeral0/imagemagick_tmp?lang=zh-Hant"/>
<policy domain="resource" name="memory" value="1000MiB"/>
<policy domain="resource" name="map" value="1000MiB"/>
<!-- <policy domain="resource" name="area" value="1gb"/> -->
<policy domain="resource" name="disk" value="10000MiB"/>
<!-- <policy domain="resource" name="file" value="768"/> -->
<policy domain="resource" name="thread" value="1"/>
<policy domain="resource" name="throttle" value="50"/>
<!-- <policy domain="resource" name="time" value="3600"/> -->
</policymap>
此外,將configure.xml檔案(或通過設定環境變數MAGIC_TEMPORARY_PATH
)中ImageMagick的臨時資料夾的路徑設定到具有足夠空間和IOPS的磁碟分區。
如果ImageMagick使用所有可用磁碟空間,錯誤配置可能會使伺服器不穩定。 使用ImageMagick處理大型檔案所需的策略更改可能會影響AEM效能。 如需詳細資訊,請參閱安裝及設定ImageMagick。
ImageMagick policy.xml
和configure.xml
檔案可在/usr/lib64/ImageMagick-*/config/
下找到,而非/etc/ImageMagick/
。 有關配置檔案位置的詳細資訊,請參閱ImageMagick文檔。
如果您正在使AEM用Adobe Managed Services(AMS),如果您打算處理大量大型PSD或PSB檔案,請聯絡Adobe客戶服務。 Experience Manager處理的PSB檔案解析度可能不會超過30000 x 23000像素。
每當XMP在中修改中繼資料時,回寫會更新原始資產AEM,這會產生下列結果:
所列結果消耗了大量資源。 因此,Adobe建議禁用XMPWriteback(如果不需要)。
如果勾選執行工作流程標幟,匯入大量中繼資料會XMP造成資源密集的回寫活動。 在精簡伺服器使用期間規劃此類匯入,以免影響其他使用者的效能。
當將資產複製至大量發佈例項(例如在Sites實施中)時,Adobe建議您使用鏈式複製。 在這種情況下,作者實例會複製到單一發佈實例,而該實例又會複製到其他發佈實例,釋放作者實例的空間。
Adobe不建議自動啟動資產。 不過,如有必要,Adobe建議將此作為工作流程(通常是DAM更新資產)的最後步驟。
請確定您實作了最新的Service Pack和與效能相關的修補程式,因為它們通常包含系統索引的更新。 請參閱效能調整提示 | 6.x,以取得某些可套用的索引最佳化,視您的版本而AEM定。
為經常運行的查詢建立自定義索引。 如需詳細資訊,請參閱分析慢速查詢的方法和建立自訂索引。 有關查詢和索引最佳實踐的其他深入資訊,請參閱查詢和索引的最佳實踐。
Oak索引組態可進行一些最佳化,以協助改善AEM Assets的效能:
更新LuceneIndexProvider配置:
更新索引配置以改進重新索引時間:
(AEM僅限6.1和6.2)更新ntBaseLucene索引以改進資產刪除和移動效能:
瀏覽至/oak:index/ntBaseLucene/indexRules/nt:base/properties
在/oak:index/ntBaseLucene/indexRules/nt:base/properties下新增兩個nt:unstructured nodes slingResource和damResolvedPath
在節點上設定以下屬性(其中ordered和propertyIndex屬性為Boolean類型:
slingResource
name="sling:resource"
ordered=false
propertyIndex= true
type="String"
damResolvedPath
name="dam:resolvedPath"
ordered=false
propertyIndex=true
type="String"
在/oak:index/ntBaseLucene節點上,設定屬性reindex=true
按一下保存全部
監視error.log以查看索引完成時間:
已完成索引的重新索引:[/oak:index/ntBaseLucene]
您也可以看到,在CRXDe中重新整理/oak:index/ntBaseLucene節點,將重新索引屬性返回false,即可完成索引
索引完成後,返回CRXDe,並將這兩個索引上的type屬性設為disabled
按一下保存全部
禁用Lucene文本提取:
如果您的使用者不需要搜尋資產內容(例如搜尋PDF檔案中的文字),則您可以停用此功能來改善索引效能。
在建立生成大結果集的查詢時,請使用guessTotal
參數以避免運行這些查詢時佔用大量記憶體。
中有兩個與大型檔案相關的主要已知問題AEM。 當檔案大小超過2 GB時,冷備用同步可能會出現記憶體不足的情況。 在某些情況下,它會阻止備用同步運行。 在其他情況下,會造成主要例項當機。 此案例適用於任何大AEM於2GB的檔案,包括內容封裝。
同樣地,當使用共用S3資料儲存區時,檔案大小達到2GB時,檔案從快取完全保存到檔案系統可能需要一些時間。 因此,在使用無二進位複製時,可能在複製完成之前無法保存二進位資料。 這種情況可能會導致問題,尤其是當資料的可用性很重要時(例如在卸載情況中)。
針對每AEM個部署,建立可快速識別並解決瓶頸的效能測試機制。 以下是需要重點討論的一些關鍵領域。
對於客戶對網路效能的所有顧慮,請執行以下任務:
為了透過有效的CPU使用率和負載共用,將延遲降至最低並達到高吞吐量,請定期監AEM視執行個體的效能。 尤其是:
guessTotal
來最佳化查詢效能。