MYSQL CPU部分單核佔滿會影響建立資料庫連線效率?
問題描述:
cpu 瞬間爆滿,前臺應用程式報出 too many connection錯誤,mysql ERROR日誌報出[Warning] Too many connections,作業系統日誌報出: kernel: TCP: time wait bucket table overflow。
主機的資源情況如下:
1.CPU 總體資源不高,但出現單核使用率100% 情況
2.CPU 系統中斷和上下文切換指標同時突然上漲。
3.資料庫所在磁碟IO幾乎打滿。
資料庫情況:
1.監控採集程式連不上資料庫,無法採集到資料庫指標, 說明資料庫連線在短時間內突然激增,無逐漸上升趨勢。
2.故障期間無慢日誌。
3.抓取BINLOG,故障剛開始後無新事務產生。
4.日常連線數基本在500以下,故障時達到閾值3000,連線數達到閾值是個結果,問題是找出為什麼會有連線不釋放。
5.登上資料庫時有發現大量會話是unauthenticated user狀態
業務情況:
1.正屬業務高峰期,但並無明顯的業務突然上漲情況
2.業務應用採用jdbc連線池,連線異常時會不斷重試連線
思路:
故障時有同事執行了16並行的pigz 操作,這也是以上主機cpu及IO資源異常問題,懷疑此異常即影響了資料庫的連線。而主要是CPU 的請求異常影響了不斷湧進來的資料庫連線請求。
我的判斷依據:
1.連線數瞬間爆滿是個結果,原因是因為前面大部分的連線HANG住。
2.那麼連線可能hang在那個階段呢:
1)沒有慢查詢,說明不是慢sql 問題
2)binlog沒有大量超長事務,甚至故障期間沒有事務產生。說明非長事務問題
3)sleep的連線沒有釋放?首先程式並未做過任何變動,連線無法斷開可能是資料庫本地異常,但如果是這樣,我認為連線開始就不能正常連線了。因此連線應該能夠正常斷開
4)因此我想連線hang在了連線階段了。加上之前看到大量會話會在unauthenticated user 狀態,這階段應該是實在客戶端與資料庫建立了tcp連線,然後進行認證,分配執行緒的階段,如果此時資料庫獲取CPU資源有問題是不是意味著連線被放慢了,甚至HANG住。
我做了個實驗,在CPU使用率持續100% 的情況下發起大量的連線在資料庫連線期間對CPU的需求還是比較大
此時也是能看到較多的unauthenticated user 會話!
目前仍無法肯定根因:
因為,CPU 只是一部分滿而已,這需要進一步瞭解LINUX CPU 排程的工作原理。
系統中斷和上下文切換是否可以說明就是大量的系統呼叫請求異常。
現在只是說說思路,希望有緣人看了能分享下您的見解!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29863023/viewspace-2684890/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 連線資料庫-mysql資料庫MySql
- 用Navicat連線資料庫-資料庫連線(MySQL演示)資料庫MySql
- SQLAlchemy - 資料庫的連線、建立會話與模型SQL資料庫會話模型
- Python連線MySQL資料庫PythonMySql資料庫
- django | 連線mysql資料庫DjangoMySql資料庫
- pycharm連線MySQL資料庫PyCharmMySql資料庫
- 如何連線MySQL資料庫MySql資料庫
- KIDataGrip連線Mysql並建立資料庫的方法實現ztpMySql資料庫
- python資料插入連線MySQL資料庫PythonMySql資料庫
- 使用cmd連線mysql資料庫MySql資料庫
- mysql資料庫怎麼連線MySql資料庫
- Django 2連線MySQL資料庫DjangoMySql資料庫
- 使用PETAPOCO連線MYSQL資料庫MySql資料庫
- 遠端連線mysql資料庫MySql資料庫
- Spring JPA資料庫連線MySQLSpring資料庫MySql
- 怎麼建立網站連線資料庫網站資料庫
- 連線別人的MySql資料庫MySql資料庫
- SpringBoot專案連線MySQL資料庫Spring BootMySql資料庫
- python連線mysql資料庫步驟PythonMySql資料庫
- Django使用pymysql連線MySQL資料庫DjangoMySql資料庫
- python操作MySQL資料庫連線(pymysql)PythonMySql資料庫
- Pycharm 怎麼連線 MySQL 資料庫PyCharmMySql資料庫
- 精PHP與MYSQL資料庫連線PHPMySql資料庫
- mysql資料庫連線池配置教程MySql資料庫
- MySql資料庫連線池專題MySql資料庫
- python+selenium 連線MySQL資料庫PythonMySql資料庫
- PHP連線、查詢MySQL資料庫PHPMySql資料庫
- R語言連線資料庫(MySQL)R語言資料庫MySql
- Mysql建立資料庫MySql資料庫
- 【MySQL】自定義資料庫連線池和開源資料庫連線池的使用MySql資料庫
- 使用RMySQL包來連線MySQL資料庫MySql資料庫
- DBSync如何連線並同步MySQL資料庫MySql資料庫
- Python 連線mysql資料庫進行操作PythonMySql資料庫
- (詳細)ubuntu18.04建立mysql資料庫並本地database遠端連線UbuntuMySql資料庫Database
- 哪些方面會影響伺服器資料庫效能伺服器資料庫
- 資料庫的統計(select)確實會影響資料庫的更新(update)的資料庫
- 06 建立MySQL連線MySql
- 建立資料mysql庫流程MySql