我一直在生产环境中使用 apache-tomcat-6.0.35。我们的应用程序使用小型实例托管在 Amazon EC2 上。我们面临的问题是 apache tomcat 正在使用 100% CPU。我们已经通过运行 htop 进行了验证,它显示了正在运行的多个 tomcat 线程。
Out 应用程序已在 Grails 2.0.1 中开发。
我们很困惑,为什么会这样?任何机构都可以提出任何解决方案吗?
谢谢
我一直在生产环境中使用 apache-tomcat-6.0.35。我们的应用程序使用小型实例托管在 Amazon EC2 上。我们面临的问题是 apache tomcat 正在使用 100% CPU。我们已经通过运行 htop 进行了验证,它显示了正在运行的多个 tomcat 线程。
Out 应用程序已在 Grails 2.0.1 中开发。
我们很困惑,为什么会这样?任何机构都可以提出任何解决方案吗?
谢谢
这很可能是由于最近的闰秒及其对相当多的不了解/未准备好的 IT 系统的影响,包括 Linux、MySQL、Java 和确实 Tomcat 的部分 - 请参阅有关“闰秒”错误在 Web 上造成严重破坏的连线文章整个故事:
[...],说它遇到了使用 Java-happy Tomcat Web 服务器来服务其站点的跳跃错误问题。“<strong>我们运行 tomcat 的网络服务器的响应几乎为零(我们能够处理一些请求),”网站发言人在一封电子邮件中写道。“我们能够连接到服务器以重置它们。只有重新启动服务器才能解决问题。” [强调我的]
因此,解决方案通常归结为将其关闭并再次打开,即重新启动有问题的服务器,尽管您可以通过简单地设置日期来避免这种情况,例如在以下情况下建议:
Linux/Tomcat,请参阅2012 年 7 月 1 日 Linux 问题?高 CPU/负载?可能是闰秒引起的!:
显然,只需强制重置日期就足以解决问题:
date -s "`date`"
MySQL,请参阅MySQL 和闰秒,高 CPU 和修复(也链接自 wwwhizz 对MySQL 高 CPU 使用率的回答的评论,您将在其中找到两个具体的变体如何根据您的操作系统执行此操作):
修复非常简单——只需设置日期。或者,您可以重新启动机器,这也可以。重新启动 MySQL(或 Java,或其他)并不能解决问题。
请注意,虽然根本问题非常棘手,但原则上几乎是未知的,因此有突出的帖子/用户对此进行了警告和解释,并提供了原则上如何处理它的建议,特别是:
根据所提供的信息,我们不能肯定地说什么。对于性能问题,我会推荐一个分析器,尤其是JProfiler来调查这个问题的原因。通过这种方式,您将能够找到问题所在。
这个程序有一个试用许可证,我认为这足以快速浏览。
更新:仔细阅读您的问题后,我看到您有很多 tomcat 实例为网站运行?表示之前的tomcat实例未能停止;他们仍然运行并占用所有资源。这个有可能。您必须先杀死所有旧的 tomcat 进程,然后再尝试启动一个新进程。
如果您在 Linux 上,您可以通过“kill -9”手动终止进程,然后再尝试重新启动服务器。