没有请求时,我可以让Tomcat离线吗?

我一直在使用Ubuntu服务器上的Tomcat 7的一个小网站。 但是还有其他的进程在服务器上运行,我认为Tomcat在CPU和内存上都有很高的负载。 因此,我很好奇,如果我可以把Tomcat服务器的睡眠模式,而没有响应。 有没有办法做到这一点在服务器上自动或有其他的servlet容器,我们可以做到这一点?

我很抱歉,这可能是你所期望的,但是:

当Tomcat没有收到请求时,就没有任何要求了,于是就不消耗CPU周期。 如果在没有收到任何请求时观察到与Tomcat相关的高CPU使用率,则会出现错误。

而且,当Tomcat长时间没有提供请求时,如果你的Ubuntu系统需要内存,它会自动将Tomcat使用的内存放在磁盘上:这种机制被称为交换 。 使用以下命令切换您的Ubuntu盒子上有多less交换空间

$ free total used free shared buffers cached Mem: 7858068 7391512 466556 0 114304 2853220 -/+ buffers/cache: 4423988 3434080 Swap: 2101244 219372 1881872 

如果你没有交换分区,我强烈build议你创build一个。 因为系统需要内存时将睡眠应用程序的内存放到磁盘上的这种系统默认是默认的,并且适用于任何长时间没有做任何事情的应用程序。

恐怕它不是一个tomcat,但加载CPU和内存的战争:)

Tomcat本身是一个小程序,非常快速和轻量级。 你可以下载tomcat,并检查它的影响,如果你想看到确切的数字。 另一方面(我不得不提一提,尽pipe你可能知道),war文件和应用程序是由tomcat处理的,所以它们不会产生额外的进程,换句话说,所有的战争和tomcat本身都在运行相同的JVM。

所以正确的解决scheme是理解你的战争为什么加载服务器。 从技术上讲,如果tomcat不处理请求,它应该只是在这场战争中定义的某种后台作业,也许是一些asynchronous任务,等等,我想你已经有了一个想法。 然后重新分解战争文件。

你提出的build议不是一个普遍的做法,技术上也不是这样。

希望这可以帮助

如果你不需要,你应该停止服务。