Performance 从Websphere 6.1.35到Websphere 8.5.5.17—应用程序启动受文件系统扫描的影响

Performance 从Websphere 6.1.35到Websphere 8.5.5.17—应用程序启动受文件系统扫描的影响,performance,websphere,Performance,Websphere,这是一个旧的应用程序,我们很难更改该应用程序 在部署从6.1.35环境迁移到8.5.5.17 websphere application server环境的类似CRM的应用程序期间,应用程序的启动时间从10秒更改为12分钟 我们对sono进行了故障排除,发现问题出在一个包含1.200.000个文件的远程文件系统上。这个远程文件系统“挂载”在WAR单元的一个路径中。这是在部署应用程序之后完成的 使应用程序启动如此缓慢的原因是,在8.5.5.17上,应用程序路径中存在的所有文件都会被遍历(因此它会尝

这是一个旧的应用程序,我们很难更改该应用程序

在部署从6.1.35环境迁移到8.5.5.17 websphere application server环境的类似CRM的应用程序期间,应用程序的启动时间从10秒更改为12分钟

我们对sono进行了故障排除,发现问题出在一个包含1.200.000个文件的远程文件系统上。这个远程文件系统“挂载”在WAR单元的一个路径中。这是在部署应用程序之后完成的

使应用程序启动如此缓慢的原因是,在8.5.5.17上,应用程序路径中存在的所有文件都会被遍历(因此它会尝试遍历远程文件系统中的1.200.000文件,这可能需要12分钟的时间…)

有人知道这是否有意将行为从WAS 6.1.x更改为WAS 8.5.5.x?
是否有任何解决方法来阻止此操作?

启动应用程序时,WebSphere Application Server会在应用程序中创建一个文件列表。创建列表时有点过分,因为它包含了在应用程序启动期间不需要查看的文件。对于大型应用程序,文件列表可能会消耗大量内存,并且需要很长时间才能生成。因为它是一个JavaEE应用服务器,所以在启动应用程序时,它应该只关注JavaEE定义位置中的文件。在应用程序运行时不使用该列表。因此,应用程序服务器应只查看以下目录:

   /
   META-INF/*
   WEB-INF
   WEB-INF/classes/*
   WEB-INF/lib/*
,包含在8.5.5.16和9.5.0.1中,提供了一种将文件列表限制在上述位置的方法。您可以在应用程序或应用程序服务器中指定设置。(如果您使用的是8.5.5.16或9.5.0.1之前的版本,您应该看看,这有点麻烦,但仍然有效。)

要在应用程序中启用该设置,请将以下内容添加到EAR或WAR的MANIFEST.MF中。(请记住,编辑MANIFEST.MF时,请遵守格式规则。MANIFEST.MF必须以空行结尾。)将设置添加到WAR将仅限制该WAR的文件列表。将设置添加到EAR会限制该EAR中所有WAR的文件列表

IBM-Enable-File-List-Include-Filter: true
您可以通过设置JVM自定义属性将该设置应用于服务器。 以下JVM自定义属性将该设置应用于服务器上的所有应用程序:

   Property:  org.eclipse.jst.j2ee.commonarchivecore.EnableFilesListIncludeFilter
    
   Value:  true
您还可以通过将以下行添加到/properties/amm.filter.properties文件,将该设置应用于配置文件中的所有服务器:

IBM-Enable-File-List-Include-Filter = true 
最后,要将该设置应用于所有配置文件,请将上述行添加到/properties/amm.filter.properties


你应该把它放在哪里?如果在应用程序中进行设置,则无论在何处部署应用程序,文件列表的范围都将受到限制。您不依赖于应用程序服务器中的任何设置。因此,对于任何大型应用程序,开发人员都应该在应用程序中包含该设置。管理员可能会考虑将设置应用到整个WebSphere应用服务器安装。

非常感谢。我可以确认问题和解决方案是jblye建议的。这是我第一次使用堆栈溢出,我将尝试了解如何将答案标记为解决方案。