在一个有12个处理器的生产框中,我可以配置多少线程



我是一名java开发人员。当150个并发用户访问我们的应用程序(应用程序部署在weblogic服务器中)时,我很难在生产箱中提高性能。

我们的生产系统配置有4个JVM,2个集群。我发现每个JVM有12个处理器(我不确定,可能是每个盒子3个,总共12个处理器)。

目前,我们在使用默认线程池的weblogic中部署了JEE应用程序。Weblogic的版本是10.x。我知道,在8.1版本之后,我们不能更改默认线程池(工作管理器)的线程大小。我们遇到的问题是,当20个并发用户访问我们的服务器(4个JVM)时,我们的应用程序可以完美地工作。我看到为每个JVM创建了8个线程,并且我假设有24个线程为并发用户请求提供服务(总共4个框,因此是24个线程)。但我们需要支持每个JVM总共600个请求和150个请求(负载均衡器在这里帮助我们)。但问题是,我们没有在300毫秒的平均时间内处理所有请求,而是需要8000毫秒。这让我们很受伤

为了解决这个问题,我创建了一个有75个线程的工作管理器,并将其分配给我的应用程序,我发现性能得到了显著的提升。注意:在同一个weblogic中部署了20个应用程序。如果我的应用程序使用75个线程,它会对其他应用程序产生什么影响?

建议我处理150个请求,不要有任何延迟。

线程数量的限制取决于主机而不是JVM。您可以使用本文中的cat /proc/sys/kernel/threads-max检查您的主机可以处理的限制。Linux中每个进程的最大线程数?

现在,一旦您知道了自己的限制,就可以使用它来微调服务器,使其使用指定数量的线程。http://docs.oracle.com/cd/E13222_01/wls/docs81/perform/WLSTuning.html#1140013

工作管理器不会为您提供最大数量的线程。它们限制了可能的最大值。这适用于线程寿命长并且在开始出现线程阻塞时消耗更多资源的应用程序。理论上,你有无限数量的线程。我的建议是增加config.xml中提到的值,并找到您的最佳点。如果您不能用4个JVM来实现这一点,那么更明智的做法是再请求2个JVM。有些事情仅靠软件是做不到的。

相关内容

最新更新