为了账号安全,请及时绑定邮箱和手机立即绑定

Tomcat 处理时间很小但 nginx 显示它很大

Tomcat 处理时间很小但 nginx 显示它很大

噜噜哒 2023-03-17 16:36:43
我在 nginx 后面有五个 tomcat 实例。有时nginxupstream_response_time很大,超过1秒,而tomcat本地访问日志显示进程时间只有50ms(我用来%D记录进程时间)。可能的原因是什么以及如何解决?网络似乎并不慢,因为其他应用程序运行速度很快。更新:似乎是 nginx upstream_response_time= %D+ 1 sec。
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

我对您的观察的假设是数据包丢失。这对我来说似乎是最有可能的问题,因为您说的是当他们有很多请求时会发生这种情况。tcpdump要对此进行测试,您可以使用或 来监控流量iftop。如果你在 Ubuntu 下,你可以安装并启动后者

sudo apt-get install iftop
sudo iftop

Linux 中还有许多其他网络监控解决方案,令人惊叹的Wireshark适用于所有操作系统。

ifconfig [interface]包丢失的原因之一可能是碰撞,如果您在 Linux 下,您可以使用 a 检查:

me@mymahine:~$ ifconfig eth1

eth1      Link encap:Ethernet  HWaddrf f:41:8d:ef:41:8d  

          BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 <-------------------------- check here ---

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Tomcat 和 Nginx 是否在同一台物理(或虚拟)机器上?


查看完整回答
反对 回复 2023-03-17
?
偶然的你

TA贡献1841条经验 获得超3个赞

服务器通常对请求进行排队,直到有线程可用于处理它。如果队列中有很多请求,但只有几个线程,单个线程处理请求的速度可能很快,但如果加上时间,请求排队,消费者看到的时间会更长。

请参阅:How to increase number of threads in tomcat thread pool?

测量tomcat的排队请求数

看看您是否可以增加线程数或减少 accept_count,但请记住,其他资源(如数据库连接)的数量可能也需要增加。还要记住,更多的线程可能意味着更多的资源竞争。

尝试为此更改参数可能是值得的。通常访问日志还应该显示消息排队处理的时间,但我不确定。


查看完整回答
反对 回复 2023-03-17
  • 2 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信