MySQL資料庫的句柄數過多 「too many open files」

2020-12-21 linux運維菜

在Linux上,單個進程打開的文件句柄的個數是有限制的。如果達到限制就會報」too many open files「。會在系統日誌裡面記錄。

如果是MySQL進程,mysql會報錯:[ERROR] Error in accept: Two many open files ,這時候就要排查是否是程序異常導致打開的文件句柄過多,如果是正常的業務增長就需要修改文件句柄的限制。

查看用戶句柄限制:

ulimit -n

進程使用的文件句柄查看:

lsof -n | grep [pid]

也可以直接查看進程的limits文件

cat /proc/[pid]/limits

修改文件句柄

ulimit -n 65535

這個修改只對當前的session生效,終端退出就恢復成原來的樣子。因此可以將這個命令添加到profile文件裡面,在啟動終端的時候加載。

在CentOS系統上可以修改對應的limits.conf文件永久生效:

在/etc/security/limits.conf文件末尾添加下面內容。

* soft core 102400* hard core 102400* hard nofile 10000* soft nofile 10000* hard nproc 10000* soft nproc 10000

*代表domain,就是全局的意思,可以改成具體的用戶名來限制某個用戶。soft / hard:這個當中的硬限制是實際的限制,而軟限制,是warnning限制,只會做出warning。nofile 代表max number of opened file,10000:代表最大打開句柄數

mysql配置中一般是open_table_cache,max_connections, open_files_limit 三個參數會影響到文件句柄。

open_table_cache是限制mysql 開啟 table 的 cache file 數,一般 mysql 開一個 table就會開啟 *.frm 和 *.ibd等文件,因此,這個至少要表數量的2倍以上。

max_connections: 最高連接,連接也是會佔用文件句柄的。

open_files_limit: 限制打開文件句柄的個數,但是如果系統限制了,這個參數設置比系統限制更大也不會生效的。

相關焦點

  • Weve let too many poros in什麼意思 報錯原因及解決方法
    英雄聯盟手遊We've let too many poros in怎麼辦?這是登陸lol手遊時經常會遇到的一個錯誤提示,部分玩家可能會把它翻譯為「我們讓太多的土豆進來了」,其實這個問題表達的意思是【伺服器訪問人數過多】,下面就讓我們一起來看看具體的處理方法吧!
  • 常用的三種修改mysql最大連接數的方法
    MYSQL資料庫安裝完成後,默認最大連接數是100,一般流量稍微大一點的論壇或網站這個連接數是遠遠不夠的,增加默認MYSQL連接數的方法有兩個方法一:進入MYSQL安裝目錄 打開MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100   修改為 max_connections
  • 英語短語辨析too much,much too和too many的區別比較
    too much,much too和too many是初中和高中的重點短語,我們必須要掌握它們的用法。much too,too muchtoo much意思是「太多」,修飾不可數名詞,置於名詞前;too much也可修飾動詞,放在動詞後。
  • 英語中too many、too much、much too的用法有啥區別?一招搞定
    一、too是啥意思?有啥用法?在跟大家講too many、too much、much too的用法之前,有必要先講下too這一單詞的內涵。too的意思是"太;也;非常"。例:There are too many people in the shopping centre.購物中心有太多的人。二、many、much有何區別呀?
  • 新手入門MYSQL資料庫命令大全
    一、命令行連接資料庫Windows作業系統進入CMD命令行,進入mysql.exe所在目錄,運行命令mysql.exe -h主機名 -u用戶名 -p密碼注意:參數名與值之間沒有空格 , 如:-h127.0.0.1
  • 資料庫設計說明書:Mysql資料庫如何快速生成表結構到word文檔
    前言參與過大型項目開發的同學應該都知道,一個項目從需求到設計,再到開發、測試和驗收,而過程文檔不免要完成需求規格說明書、資料庫設計說明書、接口設計說明書等,理論上講,應該是先有了資料庫設計說明書再有資料庫表結構的設計,但是實際在開發中,肯定有些情況下是先設計出了資料庫表一邊開發著一邊再來補充資料庫設計說明書
  • mysql-proxy資料庫中間件架構 | 架構師之路
    一、mysql-proxy簡介mysql-proxy是mysql官方提供的mysql中間件服務
  • 【資料庫】MySQL常見SQL語句
    databasename - 資料庫名,tablename-表名,如果要授予該用戶對所有資料庫和表的相應操作權限則可用表示, 如.(對所有資料庫所有表相應權限),datebasename.(對指定資料庫所有表相應權限)。
  • python如何操作MySQL資料庫
    Python操作MySQL資料庫,首先要先安裝pymysql。方法如下:pymysql安裝方法>sudo pip3 install pymysql在pymysql安裝完成後,就要學習一下pymysql使用流程。
  • DTCC:MySQl核心代碼開發經驗揭示
    【IT168資訊】由IT168(ITPUB、IXPUB、ChinaUnix)主辦的2012中國資料庫技術大會(DTCC)於(以下簡稱大會)2012年4月13日~15日在北京永泰福朋喜來登大酒店隆重召開。大會將針對大數據架構設計、資料庫安全、分布式資料庫、商業智能、NoSQL、Hadoop等多個重點話題進行深入探討。
  • Prometheus 監控MySQL資料庫
    Prometheus 監控mysql容器Prometheus這裡我們演示中,prometheus以及mysqld_exporter都使用容器進行運行。mysqld_exporter支持的版本為MySQL> = 5.6MariaDB> = 10.1為了方便管理,這裡mysqld_exporter就是用docker進行運行,如果是使用二進位安裝參數基本上相同這裡先到mysql
  • MySQL基於MHA的FailOver過程
    ,mha就不再工作了,也會自動宕機當mha出現時,我們可以使用send_report以郵件報警的方式來獲得錯誤信息數據,方便了解資料庫狀態。/bin/bash echo "你好,先生,資料庫宕機了" | mail -s "資料庫宕機了,請登錄系統查看mha狀態" 1915530614@qq.com添加執行權限chmod +x send_report然後修改配置文件
  • 「one too many」是「一個太多」嗎?one的別樣用法!
    來看看關於one的一些習慣用語:-one and only opportunity 唯一的機會-one too many 喝多了酒,多喝了幾杯
  • MySQL怎麼刪除#sql開頭的臨時表
    /* 直接刪除,表名前加#mysql50*/root@testdb 01:42:57> DROP TABLE `#mysql50##sql-ib87-856498050`;註: #mysql50#前綴是MySQL 5. 1 中引入的文件名安全編碼。另外,表名因不符合命名規範,想要執行該腳本需要將表名用反引號括起來。
  • SpringBoot + MyBatis + MySQL讀寫分離實踐!
    引言讀寫分離要做的事情就是對於一條SQL該選擇哪個資料庫去執行,至於誰來做選擇資料庫這件事兒,無非兩個,要麼中間件幫我們做,要麼程序自己做。因此,一般來講,讀寫分離有兩種實現方式。第一種是依靠中間件(比如:MyCat),也就是說應用程式連接到中間件,中間件幫我們做SQL分離;第二種是應用程式自己去做分離。
  • 測試人員如何高效進行資料庫備份?
    在資料庫操作時,測試人員最害怕的就是資料庫中的數據因為「手滑」導致數據丟失。如果丟失,嚴重的話,會給公司造成損失;即使不嚴重,也會讓公司對個人印象產生「不細心」的差評。如果不能徹底解決資料庫數據丟失的問題,相信測試人員在進行資料庫操作的時候,肯定是「畏首畏尾」,帶著這種心態如何能搞好工作呢?
  • 歐洲最大MySQL用戶Booking.com資料庫構架探秘!
    具有超過10年MySQL的工作經驗,曾經在瑞典擔任資料庫顧問,解決不同公司的MySQL問題。Booking.com使用MySQL做為主要的資料庫解決方案,目前是歐洲最大的MySQL用戶之一。本文主要會分享Booking.com的資料庫構架?如何實現資料庫的高可用性,如何自動化維護和管理大數量級的伺服器, 以及如何實現測試環境每日更新億萬數量級的在線數據。
  • 主庫n -> 從庫s - MySQL5.7多主一從(多源複製)同步配置 - 計算機...
    多主一從,也稱為多源複製,數據流向:主庫1 -> 從庫s主庫2 -> 從庫s主庫n -> 從庫s應用場景數據匯總,可將多個主資料庫同步匯總到一個從資料庫中,方便數據統計分析。讀寫分離,從庫只用於查詢,提高資料庫整體性能。部署環境註:使用docker部署mysql實例,方便快速搭建演示環境。
  • MySQL 工作、底層原理,看這一篇就夠了!
    它根據MySql AB公司提供的文件訪問層的一個抽象接口來定製一種文件訪問機制(這種訪問機制就叫存儲引擎)SQL 語句執行過程資料庫通常不會被直接使用,而是由其他程式語言通過SQL語句調用mysql,由mysql處理並返回執行結果。那麼Mysql接受到SQL語句後,又是如何處理?