Я получил эту ошибку mysql systemd [ 1]: [/usr/lib/systemd/system/mysqld.service:39] Не удалось проанализировать значение ресурса, игнорируется: 40000
на Centos 7 с mysql 5. 7, когда я устанавливаю ограничение LimitMEMLOCK
для MYSQL 5.7.
LimitMEMLOCK=40000
LimitMEMLOCK
? LimitMEMLOCK
? LimitMEMLOCK = бесконечность
? *
#cat /etc/*-release
CentOS Linux release 7.3.1611 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
CentOS Linux release 7.3.1611 (Core)
CentOS Linux release 7.3.1611 (Core)
*
service mysqld status
Redirecting to /bin/systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2016-12-19 23:21:24 UTC; 9s ago
Main PID: 11170 (mysqld)
CGroup: /system.slice/mysqld.service
└─11170 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
mysql systemd[1]: Starting MySQL Server...
mysql mysqld_pre_systemd[11143]: /usr/sbin/restorecon: Warning no default label for /mnt/data/mysql
mysql systemd[1]: Started MySQL Server.
mysql systemd[1]: [/usr/lib/systemd/system/mysqld.service:39] Failed to parse resource value, ignoring: 40000
Я не вижу это сообщение об ошибке в другой версии Centos 7 ( CentOS Выпуск Linux 7.2.1511 (Core)
), когда mysqld.service
настроен с LimitMEMLOCK = 40000
.
cat /etc/*-release
CentOS Linux release 7.2.1511 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
CentOS Linux release 7.2.1511 (Core)
CentOS Linux release 7.2.1511 (Core)
Начнем с документации systemd :
LimitCPU =, LimitFSIZE =, LimitDATA =, LimitSTACK =, LimitCORE =, LimitRSS =, LimitNOFILE =, LimitAS =, LimitNPROC =, LimitMEMLOCK =, LimitLOCKS =, LimitSIGPENDING =, LimitMSGQUEUE =, LimitNICE =, LimitRTPRIO =, LimitRTTIME =
Установите мягкие и жесткие ограничения на различные ресурсы для выполняемых процессов. См. setrlimit (2) для получения подробной информации о концепции ограничения ресурсов.
Для MEMLOCK эта страница руководства объясняет:
RLIMIT_MEMLOCK Максимальное количество байтов памяти, которое может быть заблокировано БАРАН. Фактически, этот предел округляется до ближайшего кратно системному размеру страницы. Этот предел влияет на mlock (2) и mlockall (2) и операция MAP_LOCKED mmap (2). поскольку Linux 2.6.9 это также влияет на операцию shmctl (2) SHM_LOCK, где он устанавливает максимум общего количества байтов в разделяемой памяти сегменты (см. shmget (2)), которые могут быть заблокированы реальным пользователем ID вызывающего процесса. Блокировки shmctl (2) SHM_LOCK являются учитывается отдельно от блокировок памяти для каждого процесса устанавливается mlock (2), mlockall (2) и mmap (2) MAP_LOCKED; процесс может блокировать байты до этого предела в каждом из этих двух категории. В ядрах Linux до 2.6.9 этот предел контролировал объем памяти, который может быть заблокирован привилегированным процессом. Начиная с Linux 2.6.9, нет ограничений на количество память, которую может заблокировать привилегированный процесс, и этот предел вместо этого управляет объемом памяти, который непривилегированный процесс может заблокироваться.
Блокировка памяти в ОЗУ не позволяет ядру выгружать ее. Это делается не часто, но для некоторых вещей, критичных к производительности, это очень полезно. Базы данных - одна из тех вещей, которые могут это эффективно использовать.
Установка этого значения на 40000 не имеет смысла. Даже если бы вы могли это сделать, это привело бы к повреждению базы данных и, вероятно, к ее сбою. MySQL блокирует память, когда поддержка больших страниц включена, а в документации указано, что memlock должно быть неограниченным ( бесконечность
в вашем модуле systemd).