2 回答
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 是否在同一台物理(或虚拟)机器上?
TA贡献1841条经验 获得超3个赞
服务器通常对请求进行排队,直到有线程可用于处理它。如果队列中有很多请求,但只有几个线程,单个线程处理请求的速度可能很快,但如果加上时间,请求排队,消费者看到的时间会更长。
请参阅:How to increase number of threads in tomcat thread pool?
看看您是否可以增加线程数或减少 accept_count,但请记住,其他资源(如数据库连接)的数量可能也需要增加。还要记住,更多的线程可能意味着更多的资源竞争。
尝试为此更改参数可能是值得的。通常访问日志还应该显示消息排队和处理的时间,但我不确定。
添加回答
举报