我正在尝试将我的实时门户网站从LR6.1升级到LR6.2 CE-GA4。一切都很好,除非Liferay升级DMS需要30多个小时,
在6.1中,我的DMS已经开启 dl.store.impl = com.liferay.portlet.documentlibrary.store.AdvancedFileSystemStore
大小为29 GB
是的,它给出了一些例外情况,即找不到特定文件,但最终会进行升级。痛点是升级DMS所需的时间。由于门户网站是现场客户,因此不能等待很长时间才能实现渐变。请建议解决方法/解决方案。
提前致谢
答案 0 :(得分:0)
您必须确定根本原因问题 - 您提到DMS中有29G数据,但它可能与此无关:监控升级过程以查看它实际在做什么以及瓶颈在哪里是:它是一个缓慢的NAS只能将数据流入Liferay吗?门户网站运行升级例程时CPU是否超出?您的数据库可以处理元数据的更新吗?是否存在所需的外部资源但在更新期间无法获取? (例如DTD文档,将在预览中包含的外部图像)
此外:虽然可能是DMS,但它可能也会完全不同。
另一项测试(如果 正在运行的DMS)可能是值得的,那就是暂时将文档库迁移到另一个存储,进行升级并迁移回来。如果这个速度明显加快,你就会更好,甚至可能没有解决根本原因。
听起来像是一个常规的性能调整工作,只有这次是一次性操作。性能调优算法是:
现在瓶颈#2升级到新的#1 - 冲洗和重复,直到表现令人满意。永远不要没有测量步骤,因为你可能从瓶颈#3开始,投入大量工作,只获得5%的性能而不是你从#1获得的50%
答案 1 :(得分:0)
检查是否有任何文件丢失(升级日志时会报告)如果有,那么我已经编写了以下方法来删除那些悬空文件,然后开始升级过程。
public void cleanDMS(){
List <DLFileEntry> fileEntries = null;
fileEntryId = 0L;
try {
fileEntries = DLFileEntryLocalServiceUtil.getDLFileEntries(0, DLFileEntryLocalServiceUtil.getDLFileEntriesCount());
System.out.println("Total file entries in system "+ fileEntries.size());
for (DLFileEntry dlFileEntry : fileEntries) {
getFileAsStream(dlFileEntry.getUserId(), dlFileEntry.getFileEntryId(), dlFileEntry.getVersion());
//System.out.println("Legal File found ");
}
System.out.println("###################################################################################################################");
System.out.println("total dangling entries found and deleted are "+ entries.size());
System.out.println("###################################################################################################################");
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void getFileAsStream(long userId, long fileEntryIdsss, String version){
try {
fileEntryId = fileEntryIdsss;
DLFileEntryLocalServiceUtil.getFileAsStream( userId, fileEntryIdsss, version);
}catch (NoSuchFileException e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
//DLFileEntryLocalServiceUtil.deleteDLFileEntry(fileEntryId);
DLAppLocalServiceUtil.deleteFileEntry(fileEntryId);
} catch (PortalException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SystemException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("No such file Exception caught for this ");
entries.add(fileEntryId);
} catch (PortalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}