我在远程 Solaris 机器上将 Java Web 应用程序 (WAR) 部署到 Tomcat,该机器抛出 IOExceptions 声称“空间不足”。在花了几天痛苦地研究这个问题之后,我发现我的代码中有一些进程分叉,需要 Solaris 将父/子进程都放在系统交换空间中,并且时不时地没有足够的交换空间来包含这两个过程。这是一篇文章,它比我更雄辩/聪明地解释了正在发生的事情。但它绝对是罪魁祸首。
所以我需要向我们的系统管理员提交一张票以增加交换空间,但我一直试图弄清楚我需要多少空间。我可以使用 JConsole 来分析服务器上的内存使用情况,但在VM Summary
选项卡上,使用的交换空间/可用信息似乎只有在 JConsole 启动并且不刷新时才会被读取。这使我无法在重现此分叉/内存问题时使用 JConsole 查看实时交换使用情况。
我可以访问的唯一服务器监视器是一个叫做prstat
(我习惯top
和nmon
)的东西。
我需要给系统一个特定的数字(即,请将 myserver.net 的交换空间增加 250M等)。我怎样才能获得这个号码?服务器在 Java 1.6u25 上运行,所以可能有一些我不知道的 Java 工具,或者我可能可以使用一些 Solaris 分析器/监视器。