Jetty 服务器已在消耗 47g 磁盘的临时目录中创建内容 space
Jetty server has created content in temp directory that have consumed 47g disk space
我们的 Web 在生产中的 Jetty 服务器上运行。在其中一种情况下,我们的生产中断了,但已修复。停电确实发生了2-3次。
现在,一段时间后我们观察到 Jetty 服务器创建了 war 日志,消耗了 47g 磁盘 space 并且这只发生在其中一个虚拟机上。我们没有在我们的代码中这样做。请注意,我们部署了 2 war 个文件。附上截图,希望能有所帮助。
任何输入或建议 - 为什么 jetty 会创建 war 应用程序不需要或不需要的日志文件占用如此多的 space 将是一个很大的帮助!提前谢谢你
附加 war 文件的处理程序代码:
private HandlerCollection getWebAppHandlers() throws SQLException, NamingException{
// Setting service war
WebAppContext serviceWebapp = new WebAppContext();
serviceWebapp.setWar(API_WAR_FILE_PATH);
serviceWebapp.setContextPath(API_CONTEXT_PATH);
//setting the war and context path for the UI layer: oaxui
WebAppContext uiWebapp = new WebAppContext();
uiWebapp.setWar(UI_WAR_FILE_PATH);
uiWebapp.setContextPath(UI_CONTEXT_PATH);
uiWebapp.setAllowNullPathInfo(true);
uiWebapp.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "false");
//set error page handler for the UI context
uiWebapp.setErrorHandler(new CustomErrorHandler());
//handling the multiple war files using HandlerCollection.
HandlerCollection handlerCollection = new HandlerCollection();
handlerCollection.setHandlers(new Handler[]{serviceWebapp, uiWebapp});
return handlerCollection;
}
这些不是日志文件。
它们似乎是工作目录/临时目录路径。
可能在您的系统临时目录中。
使用语法 ...
String defaultWorkingDirectoryName =
"jetty-"
+ host + "-"
+ port + "-"
+ resourceBase + "-_"
+ context + "-"
+ virtualhost + "-"
+ randomdigits;
过去关于为 webapp 设置临时目录的答案。
Jetty: How to change startup temp directory
对于嵌入式 Jetty,执行此操作。
你的 uiWebapp
和 serviceWebapp
应该都有指定的临时目录,它们应该是唯一的。
// MYBASEDIR comes from your application config
// suggest that it be MYBASEDIR=/var/run/myapp
uiWebapp.setTempDirectory(new File(MYBASEDIR + "/uiWebapp-temp-dir"));
serviceWebapp.setTempDirectory(new File(MYBASEDIR + "/serviceWebapp-temp-dir"));
您可能还想根据需要设置 WebAppContext.setPersistTempDirectory(boolean)
。
这将删除重新启动之间的临时目录。 (在适当的 webapp 关闭和 webapp 启动时)。
还有...
因为这是一个 unix 环境,你应该有一个系统启动来清除旧文件的系统临时目录。
这可以通过执行临时目录定期扫描的各种内置工具来完成。
但要小心长 运行 应用程序,例如您的网络应用程序和 Jetty。
将主动使用过的目录从其下清除对稳定性来说是一件坏事。
在 Linux 上使用 Embedded Jetty 通常是一个好主意,以精确设置 Jetty 临时目录,而不是使用默认目录,并将该工作目录放在 /var/run/<app>
目录树中。
我们的 Web 在生产中的 Jetty 服务器上运行。在其中一种情况下,我们的生产中断了,但已修复。停电确实发生了2-3次。
现在,一段时间后我们观察到 Jetty 服务器创建了 war 日志,消耗了 47g 磁盘 space 并且这只发生在其中一个虚拟机上。我们没有在我们的代码中这样做。请注意,我们部署了 2 war 个文件。附上截图,希望能有所帮助。
任何输入或建议 - 为什么 jetty 会创建 war 应用程序不需要或不需要的日志文件占用如此多的 space 将是一个很大的帮助!提前谢谢你
附加 war 文件的处理程序代码:
private HandlerCollection getWebAppHandlers() throws SQLException, NamingException{
// Setting service war
WebAppContext serviceWebapp = new WebAppContext();
serviceWebapp.setWar(API_WAR_FILE_PATH);
serviceWebapp.setContextPath(API_CONTEXT_PATH);
//setting the war and context path for the UI layer: oaxui
WebAppContext uiWebapp = new WebAppContext();
uiWebapp.setWar(UI_WAR_FILE_PATH);
uiWebapp.setContextPath(UI_CONTEXT_PATH);
uiWebapp.setAllowNullPathInfo(true);
uiWebapp.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "false");
//set error page handler for the UI context
uiWebapp.setErrorHandler(new CustomErrorHandler());
//handling the multiple war files using HandlerCollection.
HandlerCollection handlerCollection = new HandlerCollection();
handlerCollection.setHandlers(new Handler[]{serviceWebapp, uiWebapp});
return handlerCollection;
}
这些不是日志文件。
它们似乎是工作目录/临时目录路径。 可能在您的系统临时目录中。
使用语法 ...
String defaultWorkingDirectoryName =
"jetty-"
+ host + "-"
+ port + "-"
+ resourceBase + "-_"
+ context + "-"
+ virtualhost + "-"
+ randomdigits;
过去关于为 webapp 设置临时目录的答案。
Jetty: How to change startup temp directory
对于嵌入式 Jetty,执行此操作。
你的 uiWebapp
和 serviceWebapp
应该都有指定的临时目录,它们应该是唯一的。
// MYBASEDIR comes from your application config
// suggest that it be MYBASEDIR=/var/run/myapp
uiWebapp.setTempDirectory(new File(MYBASEDIR + "/uiWebapp-temp-dir"));
serviceWebapp.setTempDirectory(new File(MYBASEDIR + "/serviceWebapp-temp-dir"));
您可能还想根据需要设置 WebAppContext.setPersistTempDirectory(boolean)
。
这将删除重新启动之间的临时目录。 (在适当的 webapp 关闭和 webapp 启动时)。
还有...
因为这是一个 unix 环境,你应该有一个系统启动来清除旧文件的系统临时目录。
这可以通过执行临时目录定期扫描的各种内置工具来完成。
但要小心长 运行 应用程序,例如您的网络应用程序和 Jetty。 将主动使用过的目录从其下清除对稳定性来说是一件坏事。
在 Linux 上使用 Embedded Jetty 通常是一个好主意,以精确设置 Jetty 临时目录,而不是使用默认目录,并将该工作目录放在 /var/run/<app>
目录树中。