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,但請記住,其他資源(如數據庫連接)的數量可能也需要增加。還要記住,更多的線程可能意味著更多的資源競爭。
嘗試為此更改參數可能是值得的。通常訪問日志還應該顯示消息排隊和處理的時間,但我不確定。
添加回答
舉報