不提供足够详细的细节。需要更多信息 :(
使用htop或top查找每个进程和每个线程的内存和CPU使用情况。
CPU
4核系统中持续的25% CPU使用率可能表明单核应用程序/线程在其唯一能够使用的核心上运行100% CPU。
哪个应用程序正在占用CPU?
内存
20%的内存约为1.6GB。这比我期望的一个仅运行tomcat + mysql的空闲服务器要多一些。
-Xms1024
告诉tomcat预先分配1GB内存,这就解释了它。
更改tomcat设置为
-Xms512
和
-Xmx2048
。在向其抛出一些用户时观察tomcat内存使用情况。如果它不断增长直到达到2GB ...然后冻结,那可能表明有内存泄漏。
磁盘
使用
df -h
检查磁盘使用情况。完整的分区可能会导致您遇到的问题。
Filesystem Size Used Avail Usage% Mounted on
/cygdrive/c 149G 149G 414M 100% /
如果你在这个例子中发现我的笔记本电脑空间不足,那么你做对了 :D
日志
日志很棒。但是它们有一个坏习惯,就是占满磁盘。检查日志磁盘使用情况。当新用户连接时,是否适当地编写/删除/轮换日志?擦除日志是否可以解决问题?(在擦除之前将其复制到其他位置以进行将来的分析)
如果没有。日志仍然很棒。它们具有帮助您跟踪错误的好习惯。检查tomcat日志。您可能需要将日志记录级别设置为调试。网站崩溃时会发生什么?是否有有用的错误消息?是否仍然接收并接受Tomcat的用户连接?
应用程序
我假设25%的CPU时间用于tomcat(而不是mysql)。Tomcat本身不会失败。运行在其上的应用程序必须失败。尝试从tomcat中移除应用程序(最终可以放置一个hello world)。没有应用程序的情况下,tomcat能否在过夜的情况下继续工作?很可能可以,如果是这样,则故障在应用程序上。
在应用程序中启用完整的调试日志并尝试跟踪问题。在调试模式下直接从eclipse运行它,并将用户投放到其中。它是否以相同的方式一致地失败?
如果是,则在eclipse调试器中点击“暂停”并检查应用程序正在执行的内容。查看每个线程当前正在运行的代码片段及其调用堆栈。重复几次。如果出现死锁、无限循环或类似情况,可以通过这种方式找到它。
如果你幸运的话,现在已经找到了问题。如果没有,那么你不幸,并且这是一个可能深藏在应用程序内部的棘手bug。这会变得棘手而难以跟踪。毅力会带来成功。祝你好运 =)