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

Tomcat API:当客户端在每次请求后关闭连接时,如何提高性能?

缑泓
2023-03-14

我有一个简单的Tomcat API,我的目标是管理更多的请求 /sec.

我的问题如下:

场景1:当客户端使用一些持久连接时,我使用API的单个实例设法达到20000个请求/秒左右。服务器已加载,服务器的CPU几乎被充分利用。

场景2:当客户端在每次请求后关闭连接时,API只管理600个请求/秒,服务器资源根本没有使用。所以我想无论是全局连接数还是服务器每秒能够管理的连接数都存在瓶颈。

我想知道的是,在场景2中,是否有一个配置(在tomcat或服务器上)可以更改以提高性能。如果没有,哪种资源受到限制?我可以通过部署多个1 CPU服务器来解决这个问题吗?

我目前期待的是:

>

  • Tomcat配置中的线程和连接数量:我已经将这些数量从默认值调整为200个线程和2000个连接,在场景2中我看不到任何影响。

    Ulimit设置为无限

    JVM配置如下:JAVA_OPTS:-Xmx8g

  • 共有1个答案

    宗政颖逸
    2023-03-14

    如果您提供更多关于部署的信息会更好,但通常有一些工作可以帮助您实现更好的性能。
    首先,您应该衡量每个请求的成本并尽可能地优化它。例如,如果您的API对每个请求执行一个本地数据库查询,并且此查询消耗了大量CPU使用率,您应该优化您的查询。通过这样做,您的服务器可以在其cpu变为100%之前容忍更多请求。
    请注意,JProbe等一些工具可以帮助您优化API。
    其次,在测试期间监控您的资源,并找到其中哪一个已完全使用。您应该在测试期间检查网络连接、磁盘、内存和CPU负载,并确定资源的弱点。跟踪线程块和死锁,因为它们对性能很重要。您可以根据这些信息扩展您的服务器资源,或者决定实施分布式架构,或者在您的解决方案中添加负载均衡器,或者为您的项目添加缓存策略。
    在您的Tomcat配置中,有一些设置可以提高您的性能,例如:
    配置连接器
    将maxThread设置为足够高的值
    将接受计数设置为足够高的值
    配置缓存
    将cacheMaxSize属性设置为适当的值。
    配置内容压缩
    打开内容压缩并使用GZIP压缩

     类似资料:
    • socket.io 0.9 node.js 0.10.15 速递3.3.4 即:调用 --服务器端 --客户端

    • 问题内容: 如何关闭客户端的套接字连接? 我在用: socket.io 0.9 node.js 0.10.15 express3.3.4 即:呼叫 -服务器端 - 客户端 如果加载测试页,则需要来自服务器的一些值(getInitData)。 在第一页上,我获取一次数据,在重新加载或第二遍上,我获取两次数据,依此类推。 重新加载页面以及离开页面后,服务器端的连接将自动关闭。 但是在客户端,连接仍然打

    • 我刚刚开始使用hazelcast[3.3.1]。根据hazelcast应用程序和客户端教程,我创建了一个hazelcast应用程序实例和一个客户端(使用eclipse IDE)。 从客户端,我能够将对象添加到地图并成功获取它们。但是,我在实例的控制台上看到以下警告,它们似乎警告客户端断开连接。这是每个客户端get/put的正常行为吗? 在退出客户端程序之前,是否有适当的方法断开客户端与实例的连接?

    • 故事是这样的,我有一个远程服务器和一个防火墙后面的客户端。客户端由netty实现,它将建立一个与远程服务器的保活连接。如果200秒内通道中没有消息传输,防火墙将重置连接到远程服务器端的连接,但客户端没有收到任何tcp数据包(例如RST包),因此客户端认为此连接是活的,而事实并非如此。那么如何在防火墙错误处理此保活连接之前强制关闭不寻常的连接呢?顺便说一句:我无法配置防火墙

    • 这是原样代码。 我用假客户机修改了代码。像这样。 从功能上来说,没有问题。 有人帮忙吗,拜托。谢谢!

    • 我需要保持nginx和上游Nodejs之间的连接。 刚刚编译并安装了nginx 1.2.0