-------------------------------------------------------------------------------------------------短文---------------------------------------------------------------------------------------------------------------
長話短說~
現象:
error log中批量刷錯誤日志, 形如:?[ERROR] /usr/sbin/mysqld: Can't open file: './*******/*********.frm' (errno: 24)
PS: 用*代替某些不可描述內容_(:з」∠)_
查了一下errno, ?代表的信息是:?OS error code ?24: ?Too many open files
實際上解決起來也很簡單, 修改下系統的openfiles和mysql的open_files_limit就好了,
出問題的虛擬機上面,?open_files_limit的值設置成了300, 只需要改高一些, 比如65535, 應該就解決了;
更進一步:
雖說能解決問題, 但是有一個現象還是比較奇怪的, 一般來說, 如果是Too many open files的問題, 出問題的文件應該沒什么規律;
但是這個環境上面, 刷了一大票的錯誤信息, 都是同一個表的, 這個就比較奇怪了, 為什么全部是那一張表?
好奇心:
所以就登進去看看那張表的情況, 發現是一個MyISAM的表, 而且有600+G, 但是文件的大小應該不會對open files有什么影響才對;
于是再看一眼表結構: 分區表, 還是500+的分區數量??
搜索:
印象里面innodb在操作分區表的時候只會單獨操作一個文件的, 但是MyISAM就不太了解了;
查閱文檔以后發現如下內容:

大致意思如下:
根據MyISAM引擎的設計, 基于MyISAM的分區表在操作的時候, 會打開表中所有的分區;
所以需要提供足夠多的文件描述符;
考慮到出問題的那張表正好是一個MyISAM的分區表, 且包含了500+的分區, 所以把修改參數的方案和分區表的問題一起反饋給了業務方;
PS: MyISAM是個坑啊, 別用了行不行....._(:з」∠)_
長話短說~
現象:
error log中批量刷錯誤日志, 形如:?[ERROR] /usr/sbin/mysqld: Can't open file: './*******/*********.frm' (errno: 24)
PS: 用*代替某些不可描述內容_(:з」∠)_
查了一下errno, ?代表的信息是:?OS error code ?24: ?Too many open files
實際上解決起來也很簡單, 修改下系統的openfiles和mysql的open_files_limit就好了,
出問題的虛擬機上面,?open_files_limit的值設置成了300, 只需要改高一些, 比如65535, 應該就解決了;
更進一步:
雖說能解決問題, 但是有一個現象還是比較奇怪的, 一般來說, 如果是Too many open files的問題, 出問題的文件應該沒什么規律;
但是這個環境上面, 刷了一大票的錯誤信息, 都是同一個表的, 這個就比較奇怪了, 為什么全部是那一張表?
好奇心:
所以就登進去看看那張表的情況, 發現是一個MyISAM的表, 而且有600+G, 但是文件的大小應該不會對open files有什么影響才對;
于是再看一眼表結構: 分區表, 還是500+的分區數量??
搜索:
印象里面innodb在操作分區表的時候只會單獨操作一個文件的, 但是MyISAM就不太了解了;
查閱文檔以后發現如下內容:

大致意思如下:
根據MyISAM引擎的設計, 基于MyISAM的分區表在操作的時候, 會打開表中所有的分區;
所以需要提供足夠多的文件描述符;
考慮到出問題的那張表正好是一個MyISAM的分區表, 且包含了500+的分區, 所以把修改參數的方案和分區表的問題一起反饋給了業務方;
PS: MyISAM是個坑啊, 別用了行不行....._(:з」∠)_