2014-10-11 19 views
0

我是一名java开发人员。当150个并发用户访问我们的应用程序(应用程序部署在weblogic服务器中)时,我不得不提高生产框中的性能。我可以在有12个处理器的生产箱中配置多少个线程

我们的生产系统配置了4个JVM,2个clustors。我发现每个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请求没有任何滞后。

回答

1

线程数的限制取决于您的主机而不是您的JVM。您可以使用这篇文章中的cat /proc/sys/kernel/threads-max来检查您的主机可以处理的限制。 Maximum number of threads per process in Linux?

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

工作管理员不会为您提供最大数量的线程。他们限制了可能的最大值。这适用于具有较长线程寿命并在开始卡住线程时消耗更多资源的应用程序。从理论上讲,你有无限多的线程。我的建议是增加config.xml中提到的值,并找到你的最佳位置。如果您无法使用4个JVM实现它,请求更多2个JVM会更加明智。有些事情不能单靠软件来完成。

+0

谢谢。我们使用的是weblogic 10.3.x.它不提供设置线程数的方法。 – user1346316 2014-10-14 08:17:43

相关问题