মাইএসকিউএল 1024 এর বেশি ম্যাক্স_ফেন_ফাইল করে


11

মারিয়াডিবি শুরু করার সময় আমি পেয়েছি [সতর্কতা] ম্যাক্স_পেন_ফাইলেসের সংখ্যা 1024 এর বেশি বাড়ানো যায় নি (অনুরোধ: 4607)

$ sudo systemctl status mysqld
● mysqld.service - MariaDB database server
  Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled)
  Active: activating (start-post) since Tue 2014-08-26 14:12:01 EST; 2s ago
Main PID: 8790 (mysqld);         : 8791 (mysqld-post)
  CGroup: /system.slice/mysqld.service
      ├─8790 /usr/bin/mysqld --pid-file=/run/mysqld/mysqld.pid
      └─control
    ├─8791 /bin/sh /usr/bin/mysqld-post
    └─8841 sleep 1

Aug 26 14:12:01 acpfg mysqld[8790]: 140826 14:12:01 [Warning] Could not increase number of max_open_files to more than 1024 (request: 4607)

আমি এই ফাইলটির অভ্যন্তরে সর্বোচ্চ_পেন_ফাইলে সমস্যাটি সমাধান করতে ব্যর্থ চেষ্টা করেছি:

$ sudo nano /etc/security/limits.conf 
mysql           hard    nofile          8192
mysql           soft    nofile          1200

এমনকি আমি আবার কম্পিউটার পুনরায় চালু করেছি, কিন্তু আমি একই সমস্যা পেয়েছি।

/Etc/mysql/my.cnf দেখে মনে হচ্ছে:

[mysql]

# CLIENT #
port                           = 3306
socket                         = /home/u/tmp/mysql/mysql.sock

[mysqld]

# GENERAL #
user                           = mysql
default-storage-engine         = InnoDB
socket                         = /home/u/tmp/mysql/mysql.sock
pid-file                       = /home/u/tmp/mysql/mysql.pid

# MyISAM #
key-buffer-size                = 32M
myisam-recover                 = FORCE,BACKUP

# SAFETY #
max-allowed-packet             = 16M
max-connect-errors             = 1000000
skip-name-resolve
sql-mode                       = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY
sysdate-is-now                 = 1
innodb                         = FORCE
innodb-strict-mode             = 1

# DATA STORAGE #
datadir                        = /home/u/tmp/mysql/

# BINARY LOGGING #
log-bin                        = /home/u/tmp/mysql/mysql-bin
expire-logs-days               = 14
sync-binlog                    = 1

# CACHES AND LIMITS #
tmp-table-size                 = 32M
max-heap-table-size            = 32M
query-cache-type               = 0
query-cache-size               = 0
max-connections                = 500
thread-cache-size              = 50
open-files-limit               = 65535
table-definition-cache         = 1024
table-open-cache               = 2048

# INNODB #
innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 2
innodb-log-file-size           = 128M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table          = 1
innodb-buffer-pool-size        = 2G

# LOGGING #
log-error                      = /home/u/tmp/mysql/mysql-error.log
log-queries-not-using-indexes  = 1
slow-query-log                 = 1
slow-query-log-file            = /home/u/tmp/mysql/mysql-slow.log

ম্যাক্স_পেন_ফাইলে সমস্যা সমাধান করা কীভাবে সম্ভব?


সীমা পরিবর্তন করার পরে আপনি কি MySQL পুনরায় চালু করেছেন? এই বিষয়গুলি সাধারণত কোনও ফাইল পরিবর্তন থেকে প্রস্তাব দেওয়া হয় না, সাধারণত পরিবর্তনটি বেছে নেওয়ার জন্য প্রক্রিয়াটি আবার শুরু করতে হয়। এছাড়াও আপনি ulimit কমান্ড ব্যবহার করে সীমাটি যাচাই করতে পারেন। আপনি কি পরিবর্তনের পরে পুনরায় বুট করেছেন?
এমডিপিসি

আমি পরে কম্পিউটারটি পুনরায় চালু করেছি, আমি সীমাটি পরিবর্তন করেছি। উলিমিট আউটপুটটি দেখে আমার পরিবর্তনগুলি কার্যকর হয়নি: $ ulimit আনলিমিটেড $ ulimit -Sa | grep "ওপেন ফাইলগুলি" ফাইল খুলুন (-n) 1024 lim ulimit -Ha | গ্রেপ "ফাইল খুলুন" ফাইল খুলুন (-n) 4096. কী ভুল হতে পারে?
ব্যবহারকারী977828

উত্তর:


17

সম্পাদনা করুন /etc/security/limits.confএবং নিম্নলিখিত লাইন যুক্ত করুন

mysql soft nofile 65535
mysql hard nofile 65535

তারপরে পুনরায় বুট করুন।

তারপর সম্পাদনা /usr/lib/systemd/system/mysqld.serviceবা /usr/lib/systemd/system/mariadb.serviceএবং অ্যাড

LimitNOFILE=infinity
LimitMEMLOCK=infinity

তারপরে ডিবি পরিষেবাটি পুনরায় চালু করুন:

systemctl reload mariadb.service

1
দয়া করে নোট করুন যে কমপক্ষে সিস্টেমড সংস্করণ 209 এ অনন্ত অর্থ 65535। আপনি যদি এর চেয়ে আরও কিছু চান তবে কেবল সংখ্যাটি ইস্যু করুন, অনন্ত নয়।
সিভান

3
আরএইচইএল in-তে মারিয়্যাডবি 5.5 এর জন্য, কমপক্ষে, সেই ফাইলটিতে মন্তব্যগুলি (/usr/lib/systemd/system/mariadb.service) আপনাকে সে ফাইলটি সম্পাদনা না করার জন্য সতর্ক করেছে, বরং একটি ফাইল যুক্ত একটি সার্ভিস.ড ডিরেক্টরি তৈরি করতে আপনাকে সতর্ক করে দিয়েছে rather লাইক: /etc/systemd/system/mariadb.service.d/foo.conf। এই দুটি সীমাবদ্ধ রেখার আগে সেই ফাইলের শীর্ষে "[পরিষেবা]" যোগ করার জন্য নিশ্চিত হন। এটি কোনও পরিবর্তনের পরে "systemctl - সিস্টেমে ডেমন-রিলোড" পরামর্শ দেয় ises এই বিশদগুলি আমাকে চুল টানার অতিরিক্ত ঘন্টা ধরে বাদাম চালিয়েছে!
IcarusNM

এটি মাইএসকিউএল 5.7 সহ উবুন্টু 14.04 এ কাজ করে না। পরিষেবা ফাইলগুলি বিদ্যমান নেই এবং সিস্টেমেটেল প্যাকেজ ইনস্টল করা নেই।
টাই

চেক /etc/systemd/system/mysql.service.d/limits.confবা /etc/systemd/system/mariadb.service.d/limits.conf এটি আমার পক্ষে নির্দোষভাবে কাজ করেছে
লুকা

2

আর একটি কারণ হ'ল:
আপনার অবশ্যই মনোযোগ দিতে হবেtable_open_cach

mysql কোড ইন mysqld.cc

wanted_files= 10 + max_connections + table_cache_size * 2;

কম table_open_cachমান দিয়ে চেষ্টা করুন


1

আপনি mariadb.service ফাইলে সরকারী নির্দেশনা দেখতে পারেন;

[root@mariadb5.5 /]# cat /usr/lib/systemd/system/mariadb.service | grep exam -A 5
# For example, if you want to increase mariadb's open-files-limit to 10000,
# you need to increase systemd's LimitNOFILE setting, so create a file named
# "/etc/systemd/system/mariadb.service.d/limits.conf" containing:
#       [Service]
#       LimitNOFILE=10000

এটি আপনার ওএস পুনরায় বুট করা প্রয়োজন। যদিও আমি মনে করি এটি সরকারী ম্যানুয়ালটিতে লেখা উচিত ...


1
ফেডোরা ২৮-এ আমার পুনরায় বুট systemctl daemon-reloadকরার দরকার নেই Mar মারিয়াডিবি পুনরায় চালু করার সময় আমাকে কেবল চালনা করতে বলেছিল ।
ড্যানমন

0

আমি একই সমস্যা ছিল উবুন্টু 15,10 এবং মাইএসকিউএল এবং কিছু ছোটখাট পার্থক্য পূর্ববর্তী উত্তর সঙ্গে এটি সংশোধন করা হয়েছে।

আমি প্রথম পরিবর্তন /etc/security/limits.conf হিসাবে উপরে ।

আমি যোগ করেছি (আরও কিছু নয়)

LimitNOFILE=infinity

থেকে /lib/systemd/system/mysql.service(সামান্য অবস্থান পার্থক্য)

এবং তারপর করেছে

systemctl daemon-reload
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.