簡體   English   中英

MySQL客戶端/服務器:帶有ACK標志但沒有PSH的TCP響應數據包

[英]MySQL client/server: TCP response packet with ACK flag but without PSH

我有這個Linux二進制應用程序,它與本地MySQL服務器建立2個持久連接(使用127.0.0.1作為主機名)。

這樣的應用程序每15分鍾必須執行2000次單行insert (請不要質疑數據庫設計),但是發生的情況是,在發送第n個insert后,連接B在某個點“掛起”了將近20秒對MySQL的聲明; 看着wireshark的tcp轉儲,事實證明,在這種情況下,MySQL以簡單的ACK數據包響應,沒有任何MySQL協議特定部分,但實際上沒有PSH標志,因此它不被識別為正確的MySQL“響應OK”消息。

誰能說明為什么MySQL服務器使用不帶PSH標志的簡單ACK TCP數據包響應請求查詢數據包的原因?

TCP ack位於TCP級別,而不是應用程序(mysql協議)級別。

TCP堆棧ACK是您發送的數據。 這意味着它已經成功接收了數據,並有可能將數據交給了用戶(在您的情況下是mysql服務器)。

因此,MySQL服務器正在忙於執行查詢,並且在執行完查詢后將返回應用程序響應(您要查找的MySQL“響應OK”消息)(在您的情況下,由於某種原因或其他原因,它需要20秒)-可能存在I / O爭用,也許其他長時間運行的查詢持有鎖定,或者由於查詢而需要完成其他繁重的工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM