java - Tomcat 8 的速度会随着时间的推移而降低
问题描述
我正在使用Tomcat 8.5来托管用于 java REST 服务的 WAR。
在我的休息服务中,我创建一个连接并从用户那里获取一个多部分表单数据文件,使用扫描引擎对其进行扫描并返回结果。一开始,tomcat 运行良好,速度接近 57-58 Mbps,但随着时间的推移会下降(在 5-8 分钟内下降到近一半)
我的setenv.bat
文件看起来像这样。
"set "JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx5120m -XX:MaxMetaspaceSize=512m -Xincgc -server""
JVM
用于ParNewGC
垃圾收集。
我的server.xml
文件看起来像这样
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="100" minSpareThreads="8" maxSpareThreads="10" acceptorThreadCount="16" acceptCount="500"/>
<!--acceptCount :The maximum queue length for incoming connection requests when all possible request processing threads are in use. Any requests received when the queue is full will be refused. The default value is 100.
A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
-->
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" socket.rxBufSize="10000000" socket.txBufSize="3000000" socket.directBuffer="true" />
<!-- A "Connector" using the shared thread pool-->
因为我的反应是完全动态的。我没有使用任何类型的缓存。请帮我解决这个问题。
解决方案
这可能是由于大量打开的 tcp/ip 连接而导致的错误。请尝试与服务器连接一次,并在看到性能下降时发送数据检查套接字。
在 Windows 中,您可以使用netstat-an
来检查打开的套接字。
推荐阅读
- javascript - Joi语言配置
- python-3.x - 使用 python 屏蔽 mxn 数组
- python - Kivy 与 asyncio。在 .kv 文件中更改屏幕时出错
- advanced-custom-fields - 在条目中显示与帖子关联的自定义帖子类型
- ruby-on-rails - 拦截登录并提示接受更新的服务条款
- javascript - 用于条件路由渲染的 Jest 单元测试用例
- ios - CIFilter 不回答自定义过滤器的 kCIAttributeDescription
- python - 基于通用句子编码器的迁移学习模型无法保存到 TensorFlow 服务的 tf 模型
- python - 查找键失败 - 使用 elided_page 实现分页
- powershell - 为存储为字符串的 PS 脚本提供参数