Linux下MySQL開啟檔案數錯誤問題的解決

來源:互聯網
上載者:User

錯誤資訊如下:
  .....
  070813 13:10:17 [ERROR] /usr/local/mysql/bin/mysqld: Can't open file: './yejr/access.frm' (errno: 24)
  070813 13:10:17 [ERROR] /usr/local/mysql/bin/mysqld: Can't open file: './yejr/accesslog.frm' (errno: 24)
  ......
  070813 13:10:17 [ERROR] Error in accept: Too many open files
  ....

  注意到, 系統錯誤代號是 24, 用 perror 來查看一下具體的錯誤資訊是什麼:

  [root@yejr]# /usr/bin/perror 24
  OS error code 24: Too many open files

  原來是開啟檔案太多了, 好辦.用sysctl來調整一下就好了:
  [root@yejr]# sysctl -w fs.file-max=43621
  [root@yejr]# sysctl -a | grep fs.file-max
  fs.file-max = 43621

  FreeBSD 下也用sysctl來調整:
  [root@yejr]# sysctl -w kern.maxfiles=123280
  [root@yejr]# sysctl -a | grep kern.maxfiles
  kern.maxfiles = 123280

  最後, 還有最重要的一點是, 修改 mysqld 的設定檔 my.cnf, 增加如下一行:

  open_files_limit = 4096
  #根據自己的情況適當調整,系統預設值是
  # max_connections*5 或 max_connections + table_cache*2

  然後, 以root身份重新啟動 mysqld. 在這裡, 儘管 my.cnf 中指定的運行使用者不是root, 一樣可以以root身份來啟動mysqld, 否則 open_files_limit 選項無法生效, 因為核心限制了普通使用者的最多開啟檔案數.

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.