我是一名java开发人员。当150个并发用户点击我们的应用程序(app部署在weblogic服务器中)时,我必须提高生产盒中的性能。
我们的生产系统配置了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请求,没有任何延迟。
答案 0 :(得分: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会更明智。有些事情不能仅靠软件来完成。