mysql啟動錯誤排查-無法申請足夠內存

一般情況下mysql的啟動錯誤還是很容易排查的,但是今天我們就來說一下不一般的情況。拿到一臺服務器,安裝完mysql后進行啟動,啟動錯誤如下:

有同學會說,哥們兒你是不是buffer pool設置太大了,設置了96G內存。這明顯提示無法分配內存嘛。如果真是這樣也就不在這里進行分享了,哈哈。

我的服務器內存是128G。如下圖:

服務器內存使用情況:

那么問題來了,既然還剩如此多的內存,為什么提示無法分配內存??。各位童鞋怎么看?

1. 首先想到會不會是有幾條內存壞了?于是運維的同學進行了檢查,給我的反饋是硬件一切正常。

2. 把mysql配置參數又檢查了一遍,沒有發現什么問題,線上一直就是使用這些參數。

3. 又把文件拷貝到另外一臺機器,,另外一臺服務器可以正常啟動(2臺機器硬件配置一致)。

那么如果排除硬件問題,mysql配置問題,那么剩下的就只有操作系統的內核參數配置了。于是把兩臺服務器進行了對比,最終發現了一個內核參數不一致。

vm.overcommit_memory 

mysql啟動正常的服務器改參數的值是0,而mysql啟動錯誤的這臺服務器該值是2。

那么問題來了,這個參數到底是什么鬼?竟然會讓mysql分配內存失敗,最后導致無法啟動。經過查詢資料知道了vm.overcommit_memory是什么鬼。

vm.overcommit_memory

默認值為:0
從內核文檔里得知,該參數有三個值,分別是:
0:當用戶空間請求更多的的內存時,內核嘗試估算出剩余可用的內存。
1:當設這個參數值為1時,內核允許超量使用內存直到用完為止,主要用于科學計算.
2:當設這個參數值為2時,內核會使用一個決不過量使用內存的算法,即系統整個內存地址空間不能超過swap+50%的RAM值,50%參數的設定是在overcommit_ratio中設定。


vm.overcommit_ratio
默認值為:50


這個參數值只有在vm.overcommit_memory=2的情況下,這個參數才會生效。

那么我們來看一下總的內存地址不能超過多少。其實是可以直接查看的。

[root@yayundeng 3306]# cat /proc/meminfo |grep -i commit
CommitLimit:    70144396 kB
Committed_AS:     135196 kB
[root@yayundeng 3306]# 

通過查看可以得知在70G的樣子。那么這個是如何計算的呢?這個就是上面提到的一個公式。swap+50%的RAM值,50%參數的設定是在overcommit_ratio中設定。

總虛擬內存 = 可用物理內存 × 百分比 + 交換分區

[root@yayundeng 3306]# cat /proc/meminfo | grep MemTotal
MemTotal:       132096808 kB
[root@yayundeng 3306]# 
[root@yayundeng 3306]# free -ktotal       used       free     shared    buffers     cached
Mem:     132096808    1583944  130512864          0      10240     133220
-/+ buffers/cache:    1440484  130656324
Swap:      4095992          0    4095992
[root@yayundeng 3306]# cat /proc/sys/vm/overcommit_ratio 
50
[root@yayundeng 3306]# 

總虛擬內存=132096808 * 50% + 4095992= 70144396 kB

那么最后的結果就是buffer pool不能超過70144396 kB -?135196?kB=70009200 KB=66G。實際上經過測試,buffer pool只能設置57G。

最后在看看總虛擬內存情況:

CommitLimit:最大可用虛擬內存

Committed_AS:已使用虛擬內存

[root@yayundeng 3306]# cat /proc/meminfo |grep -i commit
CommitLimit:    70144396 kB
Committed_AS:   65539208 kB

那么如果把內核參數vm.overcommit_memory恢復為默認值0,那么將不會受到約束。

echo 0 > /proc/sys/vm/overcommit_memory

?

參考資料:

http://serverfault.com/questions/606185/how-does-vm-overcommit-memory-work
http://linuxperf.com/?p=102?

?

總結:

說了這么多,那么為什么要修改內核參數vm.overcommit_memory的值呢?這個是因為這臺服務器之前跑過GreenPlum數據庫,拿到我手上的時候沒有進行重裝系統,那么還是建議如果拿到的機器之前跑過其他的業務,那么保險的方法還是重裝一下系統,然后再部署自己的業務,不然真的會出現莫名其妙的問題。

?

?

?

?

出處:Atlas的博客?http://www.cnblogs.com/gomysql

您的支持是對博主最大的鼓勵,感謝您的認真閱讀。本文版權歸作者所有,歡迎轉載,但請保留該聲明。

轉載于:https://www.cnblogs.com/cyt1153/p/6581958.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372627.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372627.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372627.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring vs Guice:重要的一個關鍵區別

根據彈簧對象的名稱識別它們 不管使用XML還是Java配置都沒有關系&#xff0c;Spring范圍大致類似于Map <String&#xff0c;Object>結構。 這意味著您不能有兩個名稱相同的對象 。 為什么這是一件壞事&#xff1f; 如果您的大型應用程序包含許多Configuration類或XML文件…

php 批量更新死鎖,php – 在嘗試獲取鎖定時,哪個查詢導致死鎖;嘗試重新啟動事務...

我無法弄清楚哪個Query在嘗試獲取鎖定時導致死鎖;嘗試重新啟動事務.我的mysql包裝器有以下幾行if (mysql_errno($this->conn) 1213) {$this->bug_log(0,"Deadlock. SQL:".$this->sql);}bug_log寫入文件的位置.錯誤日志文件沒有死鎖錯誤,但/var/log/mysqld.…

Task和BackTask

一、總結性知識點&#xff1a; 1、Android應用運行時會創建任務Task&#xff0c;用于存放主窗口2、每一個任務包含一個堆棧數據結構&#xff0c;用于保存當前應用已創建的窗口對象&#xff0c;這個堆棧即回退棧BackStack3&#xff64; 位于回退棧頂的窗口會處于焦點狀態4&#…

Java面試題二

1、public、private、protected、Friendly的區別與作用域 public,protected,friendly,private的訪問權限如下&#xff1a; 關鍵字 當前類 包內 子孫類 包外 public √ √ √ √ protected…

使用Spring Roo進行快速云開發–第1部分:Google App Engine(GAE)

Spring Roo是在Java平臺上提供快速應用程序開發的工具。 我已經解釋了何時使用它&#xff1a; http : //www.kai-waehner.de/blog/2011/04/05/when-to-use-spring-roo 。 Spring Roo目前支持兩種針對云計算的解決方案&#xff1a;Google App Engine&#xff08;GAE&#xff09;…

mysql 重裝,Windows系統中完全卸載MySQL數據庫實現重裝mysql

一、在控制面板&#xff0c;卸載MySQL的所有組件控制面板——》所有控制面板項——》程序和功能&#xff0c;卸載所有和MySQL有關的程序二、找到你的MysQL安裝路徑&#xff0c;看還有沒有和MySQL有關的文件夾&#xff0c;全刪如果安裝在C盤&#xff0c;檢查一下C:\Program File…

loadrunner 關聯

1、記住關聯的位置&#xff08;之前&#xff09;&#xff0c;因為登錄之前需要token&#xff0c;才能驗證登錄是否成功&#xff0c;所以&#xff0c;放在登錄之前 轉載于:https://www.cnblogs.com/zyp1/p/5692343.html

網頁上線后音頻不能自動播放

一、問題描述 開發環境谷歌瀏覽器本地測試通過&#xff0c;網站上線后的音樂不播放&#xff0c;而是自動下載&#xff1f; 開發環境safari瀏覽器中&#xff0c;音頻不播放。 二、問題分析 用audio或者embed標簽都有問題&#xff0c;為了節省用戶的流量&#xff0c;安卓和ios都默…

Akka STM –與STM Ref和Agent進行乒乓球比賽

乒乓是一個經典示例&#xff0c;其中2個玩家&#xff08;或線程&#xff09;訪問共享資源–乒乓球桌并在彼此之間傳遞Ball&#xff08;狀態變量&#xff09;。 使用任何共享資源&#xff0c;除非我們同步訪問&#xff0c;否則線程可能會遇到潛在的死鎖情況。 PingPong算法非常簡…

c mysql二進制,MySQL運用connector C/C+讀取二進制字段

MySQL使用connector C/C讀取二進制字段MySQL使用connector C/C讀取二進制字段&#xff0c;兩種方法&#xff1a;用getStringvector vec;while (pResultSet->next()){string str pResultSet->getString("data");vec.insert(vec.end(), str.begin(), str.end())…

在下一個項目中不使用JavaDoc的5大原因

JavaDoc對于框架和庫的開發是絕對必要的&#xff0c;這些框架和庫為其他框架&#xff08;例如Spring Framework&#xff0c;JDK&#xff09;提供了公共接口。 對于內部企業軟件和/或產品開發&#xff0c;我有以下原因會在將來忽略“ 100&#xff05;JavaDoc策略”。 1&#xff…

NPOI操作Excel輔助類

/// <summary> /// NPOI操作excel輔助類 /// </summary> public static class NPOIHelper {#region 定義與初始化public static HSSFWorkbook workbook;[Flags]public enum LinkType{網址,檔案,郵件,內容};private static void InitializeWorkbook(){if (workbook …

JSP九大內置對象,七大動作,三大指令

JSP之九大內置對象 隱藏對象入門探索 Servlet 和JSP中輸出數據都需要使用out對象。Servlet 中的out對象是通過getWriter()方法獲取的。而JSP中沒有定義out對象卻可以直接使用。這是因為out是JSO的內置隱藏對象。JSP中的常見的9個內置隱藏對象如下 out輸出流對象 隱藏對象out是…

matlab變步長的梯形公式,用變步長梯形法計算積分∫sinx/x*x的近似值(二分二次即可)...

共回答了20個問題采納率&#xff1a;90%題目沒寫全吧?現假定積分區間為[0,1],教材《數值分析》(華中科技大學出版)第87頁,例題4.2就有詳細的解答.貌似題目也有錯?確定分母是【x^2】?現在附上該例題(分母是x)的全部解答過程&#xff1a;先對整個區間[0,1]使用梯形公式.對于函…

使用Cloud SQL的Google App Engine全文搜索

許多Google AppEngine開發人員一直在等待全文搜索功能&#xff0c;特別是來自網絡上最大的搜索引擎Google。 很高興看到Google團隊正在努力&#xff0c;您可以在Google I / O 2011大會上簽到&#xff1a; Bo Majewski和Ged Ellis進行的全文本搜索 。 據我所知&#xff0c;非常有…

php 數組值sum,php sum數組值(如果特定列的值重復)

我有一個陣列。我要檢查是否有重復的費用,如果有,我要用相同的費用列匯總所有值。[12] > Array([type] > Other Miscellaneous Fees[fee] > 158[amount] > -22.56[code] > COL_AUDIO[feedesc] > COLLEGE AUDIO VISUAL FEE)[13] > Array([type] > Other…

hdu-5734 Acperience(數學)

題目鏈接&#xff1a; Acperience Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem DescriptionDeep neural networks (DNN) have shown significant improvements in several application domains including computer vision and…

Ninject依賴注入(一)

Ninject學習筆記&#xff08;一&#xff09; Ninject學習筆記&#xff08;一&#xff09;理解依賴注入DI概念什么是DI&#xff1f;DI是如何工作的&#xff1f;什么是DI容器使用Ninject如何使用NinjectNinject對象生命周期暫時范圍單例范圍線程范圍請求范圍自定義范圍Ninject模塊…

我如何向團隊解釋依賴注入

最近&#xff0c;我們公司開始開發基于Java的新Web應用程序&#xff0c;經過一些評估過程&#xff0c;我們決定使用Spring。 但是許多團隊成員并不了解Spring和Dependency Injection的原理。 因此&#xff0c;我被要求給出一個速成班&#xff0c;介紹什么是Spring上的依賴注入和…

可以添加自定義的Select控件

1.控件dom <select name"WebSiteTarget" id"WebSiteTarget" class"w1" onchange"editable2(this);"><option value"-1">請選擇城市</option><option>福州</option><option>廈門</op…