目前為止我們討論的所有問題在mysql伺服器執行環境中都很重要。理想情況下,mysql應該執行在專有環境中,使用主機的所有物理資源。但是一些站點將mysql用在共享環境下。這包括共享的主機,許多例項執行在mysqld伺服器上,每個例項分別代表不同的客戶,系統同時執行mysqld以及客戶端應用程式和其他程序。
當對安裝在這種配置下的mysql進行調優時,需要額外檢查兩件事:其他程序在正常操作下使用多少資源,在關鍵時刻需要分配多少資源。
正常負載下,你可以猜到其他程式在預留給它們後還剩多少資源,適當設定mysql的選項。臨界負載通常是出乎意料的,會導致突如其來的mysql錯誤甚至崩潰。這種狀況下沒有通用的處理方法。記住,第三方軟體可以影響mysql安裝,並且分析潛在的負載,採取補救措施。
因此,如果你預料到某一時刻一些應用程式擁有臨界負載,評估當前負載下的資源使用情況並根據情況調整mysql伺服器選項。在這種環境中,使用作業系統級別的限制是合理的,或者使用虛擬化。對比前面的章節,我建議此處增加限制,而不是刪除它們。
最壞的情況是遇到了不可預知的高負載。你只有在碰到問題時才會意識到它的存在。因此,如果mysql開始出問題,而發現這個問題並不該發生,始終記住併發程序的影響,檢查作業系統日誌,檢視是否其他應用程式會影響mysql對資源的訪問。在mysql初始化時安裝監控軟體檢測所有程序的執行也是很重要的。
確定mysql伺服器是否受其他作業系統程序影響的乙個好方法是,在乙個隔離的環境中執行一條有問題的查詢。這也是在2.5節中推薦的方法。
[1] 6.9.1小節會進一步討論sysbench。
[2] 雖然使用專有的平台工具來設定作業系統的資源限制是正確方式,但值得一提的是內建的shell命令ulimit,它簡單易用並且適用於所有使用者。執行ulimit -a 可以顯示所有當前限制,或者為當前使用者設定軟限制。
AjaxPro排錯指南
之前有用過ajaxpro.dll,感覺前台呼叫後台的datatable時非常好用。結果昨天在專案中使用時怎麼都一直報未定義錯誤。上火啊,頭疼啊。翻遍了資料,還是沒有找到問題的良藥啊,最終只好無奈的選擇了jquery中呼叫後台webservice方法的方式。不過還是把ajaxpro.dll比較重要的步...
AjaxPro排錯指南
之前有用過ajaxpro.dll,感覺前台呼叫後台的datatable時非常好用。結果昨天在專案中使用時怎麼都一直報未定義錯誤。上火啊,頭疼啊。翻遍了資料,還是沒有找到問題的良藥啊,最終只好無奈的選擇了jquery中呼叫後台webservice方法的方式。不過還是把ajaxpro.dll比較重要的步...
MySQL排錯記錄
vim etc default grub possible cpus 8 grub2 mkconfig o boot grub2 grub.cfg 每條mysql語句都會記錄 set global general log on tail f var lib mysql localhost.log s...