我正在尝试检测我们服务器中的瓶颈,我很难决定从哪里开始。机器崩溃前的症状是连接断开(超时,这是当客户端看到响应时间过长时发生的情况,可能表明服务器端代码无法分配处理器,并且请求无法'不被处理)和内存不足的问题。后一个错误代码实际上是由 JVM 在错误日志中给出的,但我很难相信 RAM 和可用 CPU 的缺乏同时成为瓶颈。(在之前崩溃的日子里,它一直以上述方式崩溃。)我们有自己的内部服务器代码,我不会将它归类为类似于 Apache 或我见过的任何其他代码。
我想花一些时间在本地创建一个有点受控的测试。我正在运行服务器,并且正在创建一个程序,该程序将从本地服务器请求不同的东西。什么是监控 RAM/CPU 的好方法?我目前正在使用 Java 的 VisualVM,但是当我对它进行一些测试时,监视器停止响应。
任何想法都将不胜感激。就像我提到的那样,我正在尝试获取尽可能多的有用数据,以帮助我进一步排除故障。一般来说,当出现这样的瓶颈问题时,可以采取哪些一般策略?直播服务器均在 Windows Server 2008 上运行。Java 版本为 7.03。我的本地机器正在运行 Windows 7,以及 Java 7.03。我不想做太多假设,但我认为可以合理地假设 Server 2008 和 Windows 7 非常相似。(操作系统架构是相同的。)除此之外,我的本地机器与我们的服务器具有相同的硬件。