如何使 WebLogic 使用多处理器计算机上的所有处理器

发布于 2024-08-02 18:32:06 字数 241 浏览 1 评论 0原文

昨天,我们注意到我们的一台多处理器服务器上的 Java/Web Logic 出现了奇怪的行为,因此想了解您的想法。

由于某种原因,Web Logic/Java 仅使用可用的两个处理器中的一个处理器。当我们运行一些重负载时,我可以看到一个处理器的 CPU 几乎达到 100%,而另一个处理器完全空闲。如果这是虚拟机,这有关系吗(..但这不是虚拟机)

有趣的是,任何其他操作系统活动都表明两者上的处理器活动。

问候, _UB

We noticed a peculiar behavior with Java/Web Logic on one of our multi-processor servers, yesterday, so wanted to get your thoughts on it.

For some reason, Web Logic/Java use only one processor of the available two processors. When we ran some heavy load, I could see the CPU on one reaching almost 100% and the other processor is completely idle. Does it matter if this is a virtual machine (..but this is not a virtual machine)

Interesting thing is that any other OS-activities indicate processor activity on both.

Regards,
_UB

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

沦落红尘 2024-08-09 18:32:06

在常见情况下,WebLogic(以及 Java)应该能够使用运行它的服务器中的所有可用处理器。 WebLogic 有一个请求处理线程池,当请求同时到达时,它们会被并发处理。如果服务器有多个处理器,那么这些处理器应该由 Java 线程使用。

如果在 WebLogic 中运行的 Java Web 应用程序使用 SingleThreadModel< /a> 在其 servlet 中,没有两个线程可以同时执行该 servlet,因此您只能看到一个 CPU 在那里工作。这个型号不推荐,估计用的也很少。

我听到一些人抱怨说,在运行虚拟机操作系统(例如 VMWare)时,他们无法让 Java 应用程序服务器使用超过 1 个 CPU,即使他们为 VM 提供了多个专用 CPU。我不知道当时这种奇怪行为的原因是什么。

也许您应该尝试使用并发请求访问一些非常简单的 JSP 页面,并查看是否使用了超过 1 个 CPU。如果这有效,则问题出在您的应用程序中。

In common scenarios, WebLogic (and thus Java) should be able to use all the available processors in the server where it's running. WebLogic has a pool of request processing threads and when requests are arriving concurrently, they are handled concurrently. If the server has multiple processors those should be then used by Java threads.

If the Java web application running in WebLogic is using SingleThreadModel in its servlet(s), no two threads can execute the servlet concurrently and thus you could see only one CPU at work there. This model is not recommended and I guess not much used anyway.

I've heard some people complaining that they cannot get their Java app servers to use more than 1 CPU when running a virtual machine OS, like VMWare, even when they have dedicated more than one CPU for the VM. I have no idea what was the reason for this strange behavior then.

Maybe you should try to hit some very simple JSP page with concurrent requests and see if more than 1 CPU is being used. If this works, the problem is in your application.

溺渁∝ 2024-08-09 18:32:06

WebLogic 文档提供了有关如何配置多处理器机器。您最终会得到一个集群环境。

The WebLogic docs give advice on how to configure for multi-processor machines. You'd end up with a clustered environment.

吲‖鸣 2024-08-09 18:32:06

运行此 Java 程序来测试 Java 是否利用所有可用的 CPU(在我的例子中为 8 个):

public class MultiThreadCPUEater implements Runnable {
    public static void main(String[] args) {
        for (int i = 0; i < 8; i++) {
            MultiThreadCPUEater multiThreadCPUEater = new MultiThreadCPUEater();
            Thread thread = new Thread(multiThreadCPUEater);
            thread.start();
        }
    }

    @Override
    public void run() {
        for (;;) {
        }
    }
}

Run this Java program to test if Java takes advantage of all available CPUs (8 in my case):

public class MultiThreadCPUEater implements Runnable {
    public static void main(String[] args) {
        for (int i = 0; i < 8; i++) {
            MultiThreadCPUEater multiThreadCPUEater = new MultiThreadCPUEater();
            Thread thread = new Thread(multiThreadCPUEater);
            thread.start();
        }
    }

    @Override
    public void run() {
        for (;;) {
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文