包含mysql服務器wait的詞條

本文目錄一覽:

MySQL中的配置參數interactive_timeout和wait_timeout設置

1)interactive_timeout:

參數含義:服務器關閉交互式連接前等待活動的秒數。交互式客戶端定義為在mysql_real_connect()中使用CLIENT_INTERACTIVE選項的客戶端。

參數默認值:28800秒(8小時)

(2)wait_timeout:

參數含義:服務器關閉非交互連接之前等待活動的秒數。

在線程啟動時,根據全局wait_timeout值或全局interactive_timeout值初始化會話wait_timeout值,取決於客戶端類型(由mysql_real_connect()的連接選項CLIENT_INTERACTIVE定義)。

參數默認值:28800秒(8小時)

MySQL服務器所支持的最大連接數是有上限的,因為每個連接的建立都會消耗內存,因此我們希望客戶端在連接到My SQL Server 處理完相應的操作後,應該斷開連接並釋放佔用的內存。如果你的MySQL Server有大量的閑置連接,他們不僅會白白消耗內存,而且如果連接一直在累加而不斷開,最終肯定會達到MySQL Server的連接上限數,這會報’too many connections’的錯誤。對於wait_timeout的值設定,應該根據系統的運行情況來判斷。在系統運行一段時間後,可以通過show processlist命令查看當前系統的連接狀態,如果發現有大量的sleep狀態的連接進程,則說明該參數設置的過大,可以進行適當的調整小些。

問題:

如果在配置文件my.cnf中只設置參數wait_timeout=100,則重啟服務器後進入,執行:

Mysql show variables like 「%timeout%」;

會發現參數設置並未生效,仍然為28800(即默認的8個小時)。

查詢資料後,要同時設置interactive_timeout和wait_timeout才會生效。

【mysqld】

wait_timeout=100

interactive_timeout=100

重啟MySQL Server進入後,查看設置已經生效。

怎麼設置mysql的wait

怎麼設置mysql的wait

現需要設置mysql5 的wait_timeout屬性。

我的方法:

1. show variables; 查看 wait_timeout 的值為28800

2. set wait_timeout=200;

3. commit;

4.show variables; 再次查看,wait_timeout 的值為200。

可是,退出(quit)後(甚至不用重啟服務器)重新登陸。

mysql數據庫響應超時怎麼辦

MYSQL_OPT_READ_TIMEOUT 是 MySQL c api 客戶端中用來設置讀取超時時間的參數。在 MySQL 的官方文檔中,該參數的描述是這樣的:

MYSQL_OPT_READ_TIMEOUT (argument type: unsigned int *)The timeout in seconds for each attempt to read from the server. There are retries if necessary, so the total effective timeout value is three times the option value. You can set the value so that a lost connection can be detected earlier than the TCP/IPClose_Wait_Timeout value of 10 minutes.

也就是說在需要的時候,實際的超時時間會是設定值的 3 倍。但是實際測試後發現實際的超時時間和設置的超時時間一致。

而具體什麼時候發生三倍超時,在文檔中沒有找到。所以對 MySQL 5.7.20 的源碼進行了一些分析。

使用 GDB 調試代碼找了實際與 mysql server 通信的代碼,如下:

請點擊輸入圖片描述

其中 vio_read() 函數中,使用 recv 和 poll 來讀取報文和做讀取超時。net_should_retry() 函數只有在發生 EINTR 時才會返回 true。從這段代碼來看是符合測試結果的,並沒有對讀取進行三次重試。只有在讀取操作被系統中斷打斷時才會重試,但是這個重試並沒有次數限制。

從上面代碼的分析可以看出,代碼的邏輯和文檔的描述不符。於是在一頓搜索後,找到了一個 MySQL 的 BUG(Bug #31163)。該 BUG 報告了在 MySQL 5.0 中,MySQL c api 讀取的實際超時時間是設置的三倍,與現有文檔描述相符。於是對 MySQL 5.0.96 的代碼又進行分析。

同樣使用 GDB 找到了通信部分的代碼。這次找到了重試三次的代碼,如下:

請點擊輸入圖片描述

這個版本的 MySQL api 的讀寫超時是直接使用的 setsockopt 設置的。第一次循環,在 A 點發生了第一次超時(雖然注釋寫的非阻塞,但是客戶端的連接始終是阻塞模式的)。然後在 B 點將該 socket 設置為阻塞模式,C 點這裡重置 retry 次數。由於設置了 alarm 第二次以後的循環會直接進入 D 點的這個分支,並且判斷循環次數。作為客戶端時net-retry_count 始終是 1,所以重試了兩次,共計進行了 3 次 vioread 後從 E 點退出函數。

由上面的分析可知,MySQL 文檔對於該參數的描述已經過時,現在的 MYSQL_OPT_READ_TIMEOUT 並不會出現三倍超時的問題。而 Bug #31163 中的處理結果也是將文檔中該參數的描述更新為實際讀取超時時間是設定時間的三倍。也許是 MySQL 的維護者們在後續版本更新時忘記更新文檔吧。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/257495.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:45
下一篇 2024-12-15 12:45

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • 服務器安裝Python的完整指南

    本文將為您提供服務器安裝Python的完整指南。無論您是一位新手還是經驗豐富的開發者,您都可以通過本文輕鬆地完成Python的安裝過程。以下是本文的具體內容: 一、下載Python…

    編程 2025-04-29
  • STUN 服務器

    STUN 服務器是一個網絡服務器,可以協助網絡設備(例如 VoIP 設備)解決 NAT 穿透、防火牆等問題,使得設備可以正常地進行數據傳輸。本文將從多個方面對 STUN 服務器做詳…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • 解決docker-compose 容器時間和服務器時間不同步問題

    docker-compose是一種工具,能夠讓您使用YAML文件來定義和運行多個容器。然而,有時候容器的時間與服務器時間不同步,導致一些不必要的錯誤和麻煩。以下是解決方法的詳細介紹…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • 如何選擇MySQL服務器文件權限

    MySQL是一種流行的關係型數據庫管理系統。在安裝MySQL時,選擇正確的文件權限是保證安全和性能的重要步驟。以下是一些指導您選擇正確權限的建議。 一、權限選擇 MySQL服務器需…

    編程 2025-04-27
  • CentOS 7在線安裝MySQL 8

    在本文中,我們將介紹如何在CentOS 7操作系統中在線安裝MySQL 8。我們會從安裝環境的準備開始,到安裝MySQL 8的過程進行詳細的闡述。 一、環境準備 在進行MySQL …

    編程 2025-04-27

發表回復

登錄後才能評論