升级Liferay 6.1到6.2 GA4,DMS需要很长时间才能升级

时间:2015-10-31 10:26:22

标签: liferay

我正在尝试将我的实时门户网站从LR6.1升级到LR6.2 CE-GA4。一切都很好,除非Liferay升级DMS需要30多个小时,

在6.1中,我的DMS已经开启 dl.store.impl = com.liferay.portlet.documentlibrary.store.AdvancedFileSystemStore

大小为29 GB

是的,它给出了一些例外情况,即找不到特定文件,但最终会进行升级。痛点是升级DMS所需的时间。由于门户网站是现场客户,因此不能等待很长时间才能实现渐变。请建议解决方法/解决方案。

提前致谢

2 个答案:

答案 0 :(得分:0)

您必须确定根本原因问题 - 您提到DMS中有29G数据,但它可能与此无关:监控升级过​​程以查看它实际在做什么以及瓶颈在哪里是:它是一个缓慢的NAS只能将数据流入Liferay吗?门户网站运行升级例程时CPU是否超出?您的数据库可以处理元数据的更新吗?是否存在所需的外部资源但在更新期间无法获取? (例如DTD文档,将在预览中包含的外部图像)

此外:虽然可能是DMS,但它可能也会完全不同。

另一项测试(如果 正在运行的DMS)可能是值得的,那就是暂时将文档库迁移到另一个存储,进行升级并迁移回来。如果这个速度明显加快,你就会更好,甚至可能没有解决根本原因。

听起来像是一个常规的性能调整工作,只有这次是一次性操作。性能调优算法是:

  1. 识别瓶颈#1(措施!)
  2. 修复
  3. 现在瓶颈#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();
    }
}