当前位置: 首页 > 知识库问答 >
问题:

当我有accept-count=100000时,为什么我会得到SocketTimeoutException?

缑智敏
2023-03-14
server.tomcat.accept-count=100000
server.tomcat.max-threads=1000
public static void main(String[] args) {
    ApplicationContext context = SpringApplication.run(Application.class, args);
    ServerProperties serverProperties = context.getBean(org.springframework.boot.autoconfigure.web.ServerProperties.class);
    Tomcat tomcat = serverProperties.getTomcat();
    Logger.getLogger(Application.class.getName()).info("acceptCount = " + tomcat.getAcceptCount());
    Logger.getLogger(Application.class.getName()).info("maxConnections = " + tomcat.getMaxConnections());
    Logger.getLogger(Application.class.getName()).info("maxThreads = " + tomcat.getMaxThreads());
2019-10-24 20:22:31.174  INFO 57472 --- [  restartedMain] c.s.s.Application : acceptCount = 100000
2019-10-24 20:22:31.174  INFO 57472 --- [  restartedMain] c.s.s.Application : maxConnections = 10000
2019-10-24 20:22:31.175  INFO 57472 --- [  restartedMain] c.s.s.Application : maxThreads = 1000
    <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
      <boolProp name="LoopController.continue_forever">false</boolProp>
      <stringProp name="LoopController.loops">100</stringProp>
    </elementProp>
    <stringProp name="ThreadGroup.num_threads">10000</stringProp>
    <stringProp name="ThreadGroup.ramp_time">10</stringProp>
Response code: Non HTTP response code: java.net.SocketTimeoutException
Response message: Non HTTP response message: Read timed out

我还尝试了accept-count=10000max-connections=1000,JMeter获得了多达8000个示例,最大时间12000ms(HTTP请求超时30s),并给出了错误响应代码:非HTTP响应代码:org.apache.HTTP.conn.HTTPhostConnectException响应消息:非HTTP响应消息:连接到本地主机:8080[localhost/127.0.0.1,localhost/0:0:0:0:0:0:0:1]失败:连接拒绝:连接。在拒绝之前,它至少应该排队10,000个连接。

共有1个答案

乐正涵意
2023-03-14

根据Tomcat文档

MaxConnections

服务器在任何给定时间将接受和处理的最大连接数。当达到这个数字时,服务器将接受但不处理另一个连接。在处理的连接数低于maxConnections之前,将阻止此附加连接,此时服务器将再次开始接受和处理新连接。请注意,一旦达到限制,操作系统仍然可以根据acceptCount设置接受连接。默认值因连接器类型而异。对于NIO和NIO2,默认值是10000。对于apr/native,默认值为8192。

 类似资料:
  • 这是我的父类,有两个名为的方法。带有参数的那个在子类中使用。 这是我的子类,在子类的方法中,我使用父类的方法: 当我尝试显示子类的对象时,我得到以下错误: 线程“main”java.lang.StackOverflowError中出现异常

  • 问题内容: 我想从文件中读取数据,但是在调用method 时得到了。即使我正在使用该方法,但它不起作用。 txt文件的第一行是: 问题答案: 怪罪法国语言环境:它使用逗号作为小数点分隔符,因此无法解析。 替换为可修复问题(演示1)。如果您想解析,请使用代替(demo 2 )。 您的代码中的第二个问题是使用用作分隔符。您应该使用单个反斜杠,否则包含的单词将破坏您的解析逻辑。

  • 很抱歉,我对Java知之甚少。我得到了这个代码来接管。基本上,我在 当我运行代码时。 下面是解析XML的块 这是Improts,不确定是否需要这样做 这是XML文件

  • 问题内容: 我知道静态方法在类级别。因此,我知道我不需要创建实例来调用静态方法。但我也知道我可以将静态方法(如LIKE)称为实例方法。这是我感到困惑的地方,因为我期望从null对象调用静态方法(就像在调用实例方法中一样)。我真的很感谢一些解释,为什么我错了一个期望。 这是示例代码: 问题答案: 通过实例调用静态方法不需要实例存在。只要编译器能够确定变量的类型,它就可以在评估表达式并丢弃结果后静态进

  • 在我的流中,我有一条待处理的消息: 不可能(零),但仍然。。我读到了新消息: 新消息不是空的,但是如果我读消息-两者都是(nil) 为什么?

  • 问题内容: public class Category { 在正在生成。 问题答案: 当您执行时,您称呼孩子们的。这里没有问题,只不过您在这里调用了父对象。这将称呼孩子,等等。 不错的无限循环。 摆脱它的最好方法是将您的方法更改为: 这样,您将不打印parentCategory,而仅显示其名称,不显示无限循环,不显示StackOverflowError。 编辑: 正如博洛在下面说的那样,您将需要检