升级Liferay 6.1到6.2 GA4,DMS升级时间长
Upgrade Liferay 6.1 to 6.2 GA4, DMS taking much time to upgrade
我正在尝试将我的实时门户从 LR6.1 升级到 LR6.2 CE-GA4。一切都很好,除了 Liferay 升级 DMS 需要 30 多个小时,
在 6.1 中,我的 DMS 已经打开
dl.store.impl=com.liferay.portlet.documentlibrary.store.AdvancedFileSystemStore
大小为 29 GB
是的,它给出了一些未找到特定文件的异常,但最终进行了升级。痛点是升级DMS所需的时间。由于门户网站是实时的,客户不能等太久才能升级。请提出解决方法/解决方案。
提前致谢
您必须确定问题的根本原因 - 您提到 DMS 中有 29G 数据,但这可能与此无关:监控升级过程以查看它实际在做什么以及在哪里瓶颈是:它是一个缓慢的 NAS,它只会将数据滴到 Liferay 吗?当门户运行其升级例程时,CPU 是否达到最大值?您的数据库可以处理元数据的更新吗?是否有需要但在更新期间无法获取的外部资源? (例如 DTD 文档、预览中包含的外部图像)
进一步:虽然它可能是 DMS,但它也可能是完全不同的东西。
另一个可能值得的测试(如果 是 运行 长的 DMS)是暂时将文档库迁移到另一个存储,执行升级并迁移回去。如果运行速度明显加快,你会过得更好,甚至可能无需修复根本原因。
对我来说听起来像是一项常规的性能调整工作,只是这次是一次性操作。性能调优算法为:
- 确定瓶颈 #1(测量!)
- 修复它
现在瓶颈 #2 升级到新的瓶颈 #1 - 冲洗并重复直到性能令人满意。永远不要没有测量步骤,因为您可能会从瓶颈 #3 开始,投入大量工作,只能获得 5% 的性能,而不是从 #1
获得的 50%
检查是否有任何文件丢失(升级日志会报告),如果有,我已经编写了以下方法来先删除那些悬空文件,然后开始升级过程。
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();
}
}
我正在尝试将我的实时门户从 LR6.1 升级到 LR6.2 CE-GA4。一切都很好,除了 Liferay 升级 DMS 需要 30 多个小时,
在 6.1 中,我的 DMS 已经打开 dl.store.impl=com.liferay.portlet.documentlibrary.store.AdvancedFileSystemStore
大小为 29 GB
是的,它给出了一些未找到特定文件的异常,但最终进行了升级。痛点是升级DMS所需的时间。由于门户网站是实时的,客户不能等太久才能升级。请提出解决方法/解决方案。
提前致谢
您必须确定问题的根本原因 - 您提到 DMS 中有 29G 数据,但这可能与此无关:监控升级过程以查看它实际在做什么以及在哪里瓶颈是:它是一个缓慢的 NAS,它只会将数据滴到 Liferay 吗?当门户运行其升级例程时,CPU 是否达到最大值?您的数据库可以处理元数据的更新吗?是否有需要但在更新期间无法获取的外部资源? (例如 DTD 文档、预览中包含的外部图像)
进一步:虽然它可能是 DMS,但它也可能是完全不同的东西。
另一个可能值得的测试(如果 是 运行 长的 DMS)是暂时将文档库迁移到另一个存储,执行升级并迁移回去。如果运行速度明显加快,你会过得更好,甚至可能无需修复根本原因。
对我来说听起来像是一项常规的性能调整工作,只是这次是一次性操作。性能调优算法为:
- 确定瓶颈 #1(测量!)
- 修复它
现在瓶颈 #2 升级到新的瓶颈 #1 - 冲洗并重复直到性能令人满意。永远不要没有测量步骤,因为您可能会从瓶颈 #3 开始,投入大量工作,只能获得 5% 的性能,而不是从 #1
获得的 50%检查是否有任何文件丢失(升级日志会报告),如果有,我已经编写了以下方法来先删除那些悬空文件,然后开始升级过程。
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();
}
}