উবুন্টু 16.04 সার্ভার মাইএসকিউএল open_file_limit 65536 এর বেশি হবে না


16

আমি জেন ​​সার্ভারে উবুন্টু 16.04 সার্ভার চালাচ্ছি এবং আমি মাইএসকিএল-এর খোলা ফাইল সীমা নিয়ে একটি সমস্যা নিয়ে চলেছি।

আমি এখন পর্যন্ত যা করেছি তা এখানে:

সুডো ন্যানো / ইত্যাদি / সুরক্ষা / লিমিটস কনফ (রেফারেন্স)

* soft nofile 1024000
* hard nofile 1024000
* soft nproc 102400
* hard nproc 102400
mysql soft nofile 1024000
mysql hard nofile 1024000

sudo ন্যানো /etc/init/mysql.conf (রেফারেন্স)

limit nofile 1024000 1024000
limit nproc 102400 102400

sudo ন্যানো /etc/mysql/mysql.conf.d/mysqld.cnf (রেফারেন্স)

[mysqld_safe]
open_files_limit = 1024000


[mysqld]
open_files_limit = 1024000

যখন উপরেরগুলি কাজ করে না, আমি নিম্নলিখিতগুলিতে চলে যাই:

sudo ন্যানো /etc/sysctl.conf

fs.file-max = 1024000

sudo Nano /etc/pam.d/common-session

session required pam_limits.so

sudo ন্যানো /etc/pam.d/common-session-noninteractive

session required pam_limits.so

sudo ন্যানো / লিব / সিস্টেমেড / সিস্টেমে / মাইএসকিএল। সার্ভিস

LimitNOFILE=infinity
LimitMEMLOCK=infinity

আমি যখন আমার ব্যবহারকারীর অ্যাকাউন্টে লগইন করি তখন সবকিছু ঠিকঠাক মনে হয়:

ulimit -Hn
1024000
ulimit -Sn
1024000

আমি যদি মাইএসকিএল হিসাবে লগইন করি তবে এটি খুব ভাল দেখাচ্ছে:

mysql@server:~$ ulimit -Hn
1024000
mysql@server:~$ ulimit -Sn
1024000

যাইহোক, আমি যখন প্রোক তাকান:

ps -ef | grep mysql
cat /proc/1023/limits | grep open
Max open files  65536 65536 files   

বা যখন আমি মাইএসকিউএলে এটি দেখি:

mysql> show global variables like 'open%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| open_files_limit | 65536 |
+------------------+-------+

লগগুলি (/var/log/mysql/error.log) থেকে:

2016-07-25T05: 44: 35.453668Z 0 [সতর্কতা] সর্বোচ্চ_পেন_ফাইলেসের সংখ্যা 65536 এর বেশি বাড়ানো যায় নি (অনুরোধ: 1024000)

আমি এখানে সম্পূর্ণ ধারণা থেকে দূরে আছি। শুরুতে আমি 1024 এ ওপেন_ফাইলস_লিমিট দিয়ে শুরু করেছি এবং উপরের একটি অবশ্যই এটি পরিবর্তন করেছে, তবে আমার এটি আরও উপরে যেতে হবে। আমি ইতিমধ্যে এই সীমাটিকে আঘাত করছি যেহেতু আমার কাছে প্রচুর ডাটাবেস এবং টেবিল রয়েছে যা মাঝে মধ্যে প্রচুর পার্টিশন থাকে।

আমি এমনকি ভাগ্য ছাড়াই 1024000 এর চেয়ে কম আক্রমণাত্মক সংখ্যা চেষ্টা করেছি।

সেখানে কোন ধারণা আছে?

উত্তর:


24

এটি আমার জন্য উবুন্টু জেনিয়াল 16.04 এ কাজ করেছিল:

দির তৈরি করুন /etc/systemd/system/mysql.service.d

রাখুন /etc/systemd/system/mysql.service.d/override.conf:

[Service]
LimitNOFILE=1024000

এখন এক্সিকিউট করুন

systemctl daemon-reload
systemctl restart mysql.service

হ্যাঁ, LimitNOFILE=infinityপ্রকৃতপক্ষে 65536 এ সেট করা আছে বলে মনে হচ্ছে।

আপনি মাইএসকিউএল শুরু করার পরে উপরেরটি যাচাই করতে পারেন:

cat /proc/$(pgrep mysql)/limits | grep files

1
যেহেতু আমি এখানে প্রথম এসেছি তবে কিছু সিস্টেম ফাইল সামঞ্জস্য করে কিছুটা অসন্তুষ্ট বোধ করেছি আমি একটি নতুন থ্রেড পেয়েছিলাম যাতে ডাব্লু / ও রিস্কিং সার্ভিস ফাইলটি কীভাবে ঠিক করা যায় তা পরবর্তী আপগ্রেডের উপরে ওভাররাইট করা হবে: স্ট্যাকওভারফ্লো
থমাস আরবান

ধন্যবাদ @ আইসফারাম। আমি উত্তর আপডেট। প্রকৃতপক্ষে আমরা আমাদের সার্ভারগুলিতে ইতিমধ্যে সমস্যার সম্মুখীন হয়েছি কারণ আমরা রেপো ফাইল আপডেট করেছি /lib/systemd/system/mysql.service। সুতরাং আমরা ইতিমধ্যে আপনি যে পদ্ধতিতে প্রতিক্রিয়া দেখিয়েছেন তা ইতিমধ্যে সরানো হয়েছে। আমি আমার উত্তরটি এখানে আপডেট করতে ভুলে গেছি। পুনরায় মনে করিয়ে দেওয়ার জন্য ধন্যবাদ।
জেরোইন ভার্মুলেন - ম্যাগহোস্ট

এই আদেশটি কাজ করে না: cat / proc / $ (pgrep mysql) / সীমা | গ্রেপ ফাইলগুলি
তুলসী এ

1
@ বাসিলএ এই কমান্ডটি কেবলমাত্র মাইএসকিউএল চালু হওয়ার পরে কাজ করে। এটি কেবল উবুন্টু 16.04-এ পরীক্ষা করা হয়েছে।
জেরোইন ভার্মুলেন - ম্যাগহোস্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.