我一直在生产环境中使用apache-tomcat-6.0.35。我们的应用程序使用Small Instance托管在Amazon EC2上。我们面临的问题是apache tomcat正在使用100%的CPU。我们通过运行htop验证了它,它显示了运行tomcat的多个线程。
应用程序已在Grails 2.0.1中开发。
我们很困惑,为什么会这样?任何机构都可以提出任何解决方案吗?
由于
答案 0 :(得分:6)
最有可能的原因是最近的Leap Second及其对相当一些未知/未准备的IT系统的影响,包括Linux,MySQL,Java和Tomcat的部分 - 请参阅有关{{3的有线文章整个故事:
[...],说它经历了跳跃bug问题 用于提供其站点的Java-happy Tomcat Web服务器。 “我们的网站 运行tomcat的服务器接近零响应(我们能够 处理一些请求),“阅读网站发言人发来的电子邮件。 “我们曾经 能够连接到服务器以重置它们。 仅重启 服务器解决了这个问题。“ [强调我的]
因此,该解决方案通常归结为将其关闭然后重新打开,即重新启动相关服务器,尽管您可以通过简单地设置日期来避免这种情况,例如建议的在以下情况下:
Linux / Tomcat,请参阅‘Leap Second’ Bug Wreaks Havoc Across Web:
显然,只需强制重置日期即可解决问题 问题:
date -s "`date`"
MySQL,请参阅July 1 2012 Linux problems? High CPU/Load? Probably caused by the Leap Second!(也可以从wwwhizz的评论中找到MySQL and the Leap Second, High CPU and the Fix的答案,根据您的操作系统,您可以在其中找到两种具体的变体:< / p>
修复非常简单 - 只需设置日期即可。或者,你可以 重启机器,这也有效。重启MySQL(或Java,或 无论如何都不能解决问题。
请注意,虽然潜在的问题非常棘手,但原则上几乎不为人知,因此有明显的帖子/用户警告并解释这一点并提出原则上如何处理它的建议,特别是:
答案 1 :(得分:0)
我们无法肯定地提供所提供的信息。对于性能问题,我建议使用分析器(尤其是JProfiler)来调查此问题的原因。通过这种方式,您将能够找到问题所在。
这个程序有试用许可证,我认为这足以快速查看。
更新:仔细阅读问题后,我发现你有很多运行网站的tomcat实例?这意味着以前的tomcat实例无法停止;他们仍然跑步并占用了所有的资源。这个有可能。在尝试启动新的tomcat进程之前,必须先杀死所有旧的tomcat进程。
如果你在Linux上,你可以通过“kill -9”手动终止进程,然后再尝试启动服务器。