java - Tomcat:在不冒 OutOfMemoryError 风险的情况下增加 maxThreads

标签 java multithreading jsp tomcat out-of-memory

我在 dailyRazor 上租了一个小 tomcat 服务器,通过 jsp 为 android 应用程序提供 http-get 服务。最大 Java 堆是“最大内存:92.81 MB”。

maxThreads 的默认 tomcat 设置为 25。随着使用我的服务的用户数量的增加,我在黄金时段收到大量拒绝连接/服务器超时(我认为这是因为线程池太小)。这就是为什么我将 maxThreads 增加到 250。在这个晚上,服务器崩溃显示多个 java.lang.OutOfMemoryError s。 250 对于小堆来说似乎有点重 :p 我暂时将 maxThreads 减少到 50,这似乎没问题,因为我没有再收到任何错误。

由于我对tomcat了解不多,我想请教一个找到正确的maxThreads数量的好方法。我想看看一个线程的最大内存使用量。然后 maxThreads = (maxMemory/memoryOfOneThread)。有更好的解决方案吗?

谢谢 大牛

最佳答案

每个线程使用的内存量取决于您在线程中执行的操作。所以这取决于您的软件。

这不是那么容易计算的。

但是对于 tomcat 来说 92MB,这是非常紧张的。我会寻找一种方法来解决这个问题。

关于java - Tomcat:在不冒 OutOfMemoryError 风险的情况下增加 maxThreads,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17401688/

相关文章:

c# - 多个后台线程

java - 单击 html 普通按钮调用 spring MVC Controller ?

java - Struts 2 - 填充 s :select from server based on first s:select

java - 自定义对象的 hashCode 和 equals 的实现,用作 HashMap 中的键

java - jcmd - 命令 ManagementAgent.start 的用途是什么?

java - 将当前正在运行的线程实例保留在映射中?

java - 如何在不使用复选框或单选按钮的情况下将表格中选择的数据发送到 Struts2 中?

java - apache-commons-csv println 方法不会在输出中打印换行符

java - 通过绑定(bind) ServerSocket 防止启动 java 应用程序的多个实例

c - 在我实现 Lamport 的面包店算法时,线程 1 和 2 具有很高的优先级