当 WEB-INF 中有大量文件时,Webapp 启动缓慢 Tomcat
Slow Tomcat Webapp start when lots of files in WEB-INF
我有一个Webapp,在WEB-INF文件夹下有很多文件(1000s)。当它启动或重新启动时,即使关闭 Jar 和 TLD 扫描,也需要很长时间 > 10s。
我什至创建了一个自定义的 JarScanner class,它什么都不做,没有任何区别。
Tomcat 中的其他内容会在上下文启动时扫描该文件夹,我可以对此做些什么吗?
如果您将这些文件直接放在 WEB-INF 文件夹中(或只放在一个文件夹中),OS 可能需要时间来理解该文件夹。许多操作系统不能很好地处理单个文件夹中的 1000 个文件。因此它可能不会扫描任何东西,而只是打开目录。
你在OS什么?您可能还想尝试保留压缩的 WAR 文件而不是 "exploding" 整个 webapplication 目录?如果我没记错的话,这可以通过设置 server.xml 中 <Host>
元素的 unpackWARs 属性来完成:
<Host name="localhost" unpackWARs="false" ...>
此外,尝试将文件分成许多不同的文件夹,或者更好的是,放在 webapplication 目录之外。特别是如果它们只是数据文件,让它们远离 tomcat 可能更容易。
最后,作为对您评论的回复,这可能会告诉您您已经成功地用启动时间换取了易于维护(因为您说文件更易于维护)
另一种选择是在 webapp 中添加一个名为 DATA 之类的旧版本,并在 web.xml 中为其添加安全约束,例如:
<security-constraint>
<web-resource-collection>
<web-resource-name>secure</web-resource-name>
<url-pattern>/DATA/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>data</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>data</role-name>
</security-role>
请注意,应在 tomcat-users.xml 或用户数据库(如果已设置)中设置适当的用户和角色。
这样文件夹就不会被扫描,也不会受到标准访问的影响。
我有一个Webapp,在WEB-INF文件夹下有很多文件(1000s)。当它启动或重新启动时,即使关闭 Jar 和 TLD 扫描,也需要很长时间 > 10s。 我什至创建了一个自定义的 JarScanner class,它什么都不做,没有任何区别。
Tomcat 中的其他内容会在上下文启动时扫描该文件夹,我可以对此做些什么吗?
如果您将这些文件直接放在 WEB-INF 文件夹中(或只放在一个文件夹中),OS 可能需要时间来理解该文件夹。许多操作系统不能很好地处理单个文件夹中的 1000 个文件。因此它可能不会扫描任何东西,而只是打开目录。
你在OS什么?您可能还想尝试保留压缩的 WAR 文件而不是 "exploding" 整个 webapplication 目录?如果我没记错的话,这可以通过设置 server.xml 中 <Host>
元素的 unpackWARs 属性来完成:
<Host name="localhost" unpackWARs="false" ...>
此外,尝试将文件分成许多不同的文件夹,或者更好的是,放在 webapplication 目录之外。特别是如果它们只是数据文件,让它们远离 tomcat 可能更容易。
最后,作为对您评论的回复,这可能会告诉您您已经成功地用启动时间换取了易于维护(因为您说文件更易于维护)
另一种选择是在 webapp 中添加一个名为 DATA 之类的旧版本,并在 web.xml 中为其添加安全约束,例如:
<security-constraint>
<web-resource-collection>
<web-resource-name>secure</web-resource-name>
<url-pattern>/DATA/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>data</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>data</role-name>
</security-role>
请注意,应在 tomcat-users.xml 或用户数据库(如果已设置)中设置适当的用户和角色。
这样文件夹就不会被扫描,也不会受到标准访问的影响。