Out of resources when opening file

Ошибка MySQL  Error: Out of resources when opening file './example/parser.MYD' (Errcode: 24) может возникать из-за того, что сервер баз данных использует все доступные файловые дескрипторы.

 

Увидеть ее можно в логе веб-севрера Apache:

[Thu Aug 31 07:01:35 2017] [warn] [client 91.226.82.241] mod_fcgid: stderr: \xd0\x91\xd0\xb0\xd0\xb7\xd0\xb0 \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85 WordPress \xd0\xb2\xd0\xbe\xd0\xb7\xd0\xb2\xd1\x80\xd0
\xb0\xd1\x82\xd0\xb8\xd0\xbb\xd0\xb0 \xd0\xbe\xd1\x88\xd0\xb8\xd0\xb1\xd0\xba\xd1\x83 Out of resources when opening file '/tmp/#sql_977_0.MAD' (Errcode: 24) \xd0\xb2 \xd0\xbe\xd1\x82\xd0\xb2\xd0\xb5\xd1\x82 \xd0\
xbd\xd0\xb0 \xd0\xb7\xd0\xb0\xd0\xbf\xd1\x80\xd0\xbe\xd1\x81 SELECT t.*, tt.* FROM rp_terms AS t INNER JOIN rp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN rp_term_relationships AS tr ON tr.term_tax
onomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (9993) ORDER BY t.name ASC , \xd0\xb2\xd1\x8b\xd0\xbf\xd0\xbe\xd0\xbb\xd0\xbd\xd0\xb5\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), include('/themes/roomplan/single.php'), get_previous_post_link, get_adjacent_post_link, get_permalink, get_the_category, get_the_terms, wp_get_object_terms, get_terms, WP_Term_Query->query, WP_Term_Query->get_terms, referer: https://www.yandex.ru/

 

 

Как исправить ошибку Out of resources when opening file

 

Авторизуемся в консоли MySQL

mysql -u root -p

 

Просматриваем значение переменной, задающей максимальное возможное количество открытых файлов

SHOW VARIABLES LIKE 'open_files_limit'

 

Variable_name       Value

open_files_limit    1024

 

 

Ошибка возникает из-за того, что файлов создается больше, чем указано в данной директиве — значение нужно увеличить, это делается в конфигурационном файле сервера баз данных

 

mcedit  /etc/my.cnf

[mysqld]
open_files_limit = 4096

 

Перезапускаем MySQL

/etc/init.d/mysql restart

 

Если перезапускать MySQL нельзя (например, он обслуживает банковскую или охранную систему доступность которой критична) выполняем в консоли MySQL — от имени root

SET GLOBAL open_files_limit=4096;

 

Также значение возможных дескрипторов задается в настройках безопасности системы:

 

mcedit /etc/security/limits.d/mysql.conf

 

Дописываем строку

mysql  —  nofile  4096

 

 

Посмотреть системные ограничения можно из консоли

ulimit -a

 

Также как и задать новое значение используя флаг -n

ulimit -n 4096