我正在Elastic Beanstek
的Worker层
上的Tomcat 8
上运行Spring MVC
应用程序。对于那些不熟悉Elastic Beanstek
的人,每当发生SQS事件时,Amazon都会自动向我的WorkerSpring MVC
应用程序执行POST
请求。我的应用程序然后处理请求并返回200(除非明显出错)。
我想在处理单个POST
请求时使用并发。例如,假设我需要执行10种不同的昂贵计算。我希望使用ExecutorService
让10个线程同时执行这项工作,而不是串行执行。
这确实是多个问题,但根本是在使用Tomcat实现的队列工作器中使用ExecutorService是否有意义。
这是坏习惯吗?如果没有,以这种方式启动新线程是否存在性能危险?
这很好,但您需要确保将Tomcat配置为正确关闭executor服务。
线程的分配实际上是如何工作的(例如,它们是从Tomcat的线程池还是其他什么地方偷来的)?
ExecutorService将创建自己的线程池。Tomcat线程不能用于您自己的目的。拥有这个独立的游泳池没有什么错。
是否应该有一个可供所有Tomcat线程访问的共享线程池?如果是,它应该有多大?
在所有Tomcat线程中共享一个池是有意义的。大小最好由您的特定用例决定,但ExecutorService为您提供了许多选项来创建高效的池。
将工作分解成更多的SQS事件,并将子任务本质上分配给Tomcat线程,而不是在单个Tomcat线程中完成,这样做更好吗?
这确实是一个重要的问题。如果你有不相关的独立任务,把它们分解成独立的SQS消息可能是有意义的。但是,如果您有单独的任务,这些任务实际上是更大任务的一部分,可以简单地并行执行,将其作为单个SQS消息保留,但使用ExecutorService通过并行处理部分来提高性能可能是最好的。
好奇地发现我的应用程序部署在tomcat上可以满足的并发请求的最大数量。 我知道: 在tomcat配置中,有一些参数可以帮助我,比如: > MaxConnections——服务器在任何给定时间接受和处理的最大连接数。当达到这个数字时,服务器将接受但不处理另一个连接。 我想知道的是: > 以上参数是否足以知道我的应用程序可以处理的最大“并发”请求数? 假设最大连接数为200,那么这意味着如果有200
还有,我应该什么时候关闭executor服务? 我是新的纺纱线程这种方式,有人能帮助我了解它是如何工作的吗?
问题内容: 你好,我们已经在java 1.6,tomcat 6,oracle 11g上迁移了Java Web应用程序,但是现在一段时间站点关闭后我们遇到了问题:我们正在使Java堆内存不足错误并且许多线程处于等待状态。tomcat被绞死,我们的网站被压倒 信息:为地址为空且端口为80的连接器创建的最大线程数(200),2013年2月21日,这里是线程日志: 日志 结束 请指导。 谢谢阿鲁 问题答案
我的Spring Boot应用程序在本地安装的Tomcat服务器上运行良好。但是当我将相同的WAR部署到弹性豆茎并单击给定的URL时,我得到的只是404。在我的Spring Boot应用程序中没有指定的路由在这里工作。可能的原因是什么? server.port=5000
我在log4j v1中面临内存泄漏的问题。如何解决这个内存泄漏问题。此方法是定期检查log4j.properties文件在我的类中的更新。 PropertyConfigutaror.ConfigureandWatch(time_ms); 但是在关机期间,tomcat内存泄漏问题就来了。日志如下: 提前致谢
我的工作与Javawebapp与Apache Tomcat一起运行。Tomcat线程池的最大线程数为800,minSpareThread为25。当它运行时,它通常在给定时间运行大约400个线程。 比方说,我有一个计算成本很高的非阻塞任务,我必须在我的Tomcat应用程序中完成,在这个应用程序中,ForkJoinPool。commonPool用于更有效地解决任务。 因为我的ApacheTomcat应