我有一个分类网站。
我使用PHP,MySql和SOLR。
Solr使用一个Servlet容器,在我的情况下是Java应用程序JETTY。
我只是注意到我的网站上出现了很大的错误。 我打开terminal,进入“顶部”命令,注意到JAVA是所有的CPU和MEM。
现在我想“好吧,也许我需要更多的内存和CPU”所以我增加了它。 但随着增加的Java应用程序开始吃更多。
这从来没有发生过,这是一个错误,或者某种types的黑客。
无论如何,我现在需要解决这个问题,所以我想知道我该怎么做?
我可以以某种方式准确地确定何时内存使用开始从一些错误日志上升?
如何解决这个问题?
我如何防止它? 如果它们在时间轴内,是否有可能防止太多的请求?
谢谢
你使用多less内存? SOLR有一个与FieldCache有关的已知问题,这可能导致它在执行分类search时吃掉大量的内存。
编辑:
好的,尝试在你的三大进程(httpd / php,MySQL,Jetty)上使用pmap -d ,看看是否有一些子库正在耗尽你所有的内存。
你的java进程总是和-Xmx值一样多。 当它达到这个值,它开始回收它的内存。
如果您想要更低的内存使用率,并且您的应用程序可以正常工作,则只需调整JVM Xmx参数即可。
我曾经在一个由一个java程序调用的C库中发生了内存泄漏,这使得进程的内存使用量不断增长,而Java堆是稳定的。 但是这是不太可能的。
有很多工具来监视你的java堆,但是你应该开始logging一些java.lang.Runtime.totalMemory …
我相信您的服务器上可能会有一些病毒或间谍攻击。 用一些最好的防病毒软件和间谍软件扫描你的服务器。