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

带有阻塞应用程序的Tomcat NIO连接器

殷轶
2023-03-14

在阅读了Tomcat NIO连接器之后,我仍然不明白一件事:如果应用程序代码阻塞,即它阻塞从数据库读取、读取文件系统和调用外部web服务,那么NIO连接器是否有益?

例如,您有一个类似REST的API,它接收一个请求,从数据库中读取一些内容,并返回一个响应。它不使用Servlet3异步,它只是写入响应。

我没有找到NIO连接器使用的线程池的完整描述,但我认为它有一个处理请求的线程池,因此每个请求最终都在它自己的线程中,它可以阻塞线程。

如果是这样的话,NIO的好处还在,还是阻塞代码削弱了NIO的好处(就资源利用率而言)?

共有1个答案

姬俊远
2023-03-14

如果应用程序代码阻塞,那么nio连接器是否有益?

是的,NIO连接器是在假设应用程序将在某个地方阻塞的情况下构建的。NIO连接器基本上有几个套接字占位符,并响应新传入的请求,直到信息开始被写回。

我没有找到NIO连接器使用的线程池的完整描述

轮询代码的阻塞时间永远不会超过序列化信息包所需的时间,因此它可以自由地处理新的请求。唯一真正的限制是Tomcat可用的内存量。虽然存在线程池,但实际使用的线程数远低于应用程序可以处理的连接数(引用)。

虽然Tomcat连接器(引用)之间存在性能差异,但当servlet本身阻塞时,原始请求/响应时间的差异非常小。但是,当您使用非阻塞I/O时,Tomcat可以处理的同时请求数量的差异是非常大的。

 类似资料:
  • 我试图使用neo4j中的命令从CSV文件中导入大约500,000行数据。 下面是我正在使用的代码: 期望的行为:第一次出现以另一个艺术家为特征的人会创建关系,并且应该将关系的属性设置为1。对于随后的每一次事件,强度属性将增加1。因此,经常以艺术家B为特色的艺术家A应该具有类似的关系 关系是方向性的,在这种情况下,方向性很重要(A以B为特征不同于B以A为特征)。 在确定问题时,是否有其他有用的信息?

  • 问题内容: 我想创建一个非阻塞连接。像这样: 为此,我使用了另一个线程,无限循环和Linux epoll。像这样(伪代码): 如果我先运行服务器,然后运行客户端,那么一切正常。如果我先运行客户端,请稍等一会儿,再运行服务器,然后客户端将无法连接。 我究竟做错了什么?也许可以做不同的事情? 问题答案: 您应该使用以下步骤进行异步连接: 用创建套接字 开始与 如果返回值既不是也不是,则中止并返回错误

  • 我有一个由组成的应用程序,它在网络连接更改时被调用(基本上,我只想在连接到某个SSID时调用某些URL)。 我在挂起OkHttp请求时遇到了一个奇怪的问题。有时请求立即得到处理,有时需要10或20秒。我已经尝试为使用的OkHttpClient设置连接、读写超时,但没有成功。请求是在电话连接到网络之后发出的。我也尝试在延迟2秒的seperate线程中激发请求,但这并没有改变任何事情。 货单中的接收者

  • 我完全混淆了,,。 哪个是阻塞,哪个不是? 我的意思是如果我使用父进程是否等待子进程返回/才继续执行。 如何影响这些调用?

  • 我正在使用Phonegap-CLI(V5.4.0)和Phonegap-developer-app(Android和iOS,都是最新的)创建一个简单的跨平台应用程序。在我的应用程序中,我试图调用我实现的一个REST接口,我使用jQuery AJAX来实现这一点。不幸的是,这些电话似乎不起作用,我没有看到任何来电在我的控制台。(REST接口在我的机器上本地运行。)但是,我知道我的REST接口工作得很好