Ubuntu 16.04 सर्वर MySql open_file_limit 65536 से अधिक नहीं जाएगा


16

मैं XenServer पर Ubuntu 16.04 सर्वर चला रहा हूं और मैं MySql की खुली फाइल सीमा के साथ एक समस्या में चल रहा हूं।

यहाँ मैंने अभी तक क्या किया है:

सुडो नैनो /etc/security/limits.conf (संदर्भ)

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

सुडो नैनो /etc/init/mysql.conf (संदर्भ)

limit nofile 1024000 1024000
limit nproc 102400 102400

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf (संदर्भ)

[mysqld_safe]
open_files_limit = 1024000


[mysqld]
open_files_limit = 1024000

जब ऊपर काम नहीं किया, तो मैं निम्नलिखित पर गया:

सुडो नैनो /etc/sysctl.conf

fs.file-max = 1024000

सुडो नैनो /etc/pam.d/common-session

session required pam_limits.so

सुडो नैनो /etc/pam.d/common-session-noninteractive

session required pam_limits.so

सुडो नैनो / एलिब / सिस्टेमड / सिस्टेम / मिस्केल.स्वाइस

LimitNOFILE=infinity
LimitMEMLOCK=infinity

जब मैं अपने उपयोगकर्ता खाते में प्रवेश करता हूं तो सब कुछ ठीक लगता है:

ulimit -Hn
1024000
ulimit -Sn
1024000

अगर मैं mysql के रूप में लॉगिन करता हूं तो यह बहुत अच्छा लगता है:

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 में देखता हूं:

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

लॉग से (/var/log/mysql/error.log):

२०१६-० 2016-२५ टी ०५: ४४: ३५.४५३६६ [जेड ० [चेतावनी] अधिकतम ६५३६ से अधिक नहीं बढ़ा सके।

मैं यहां विचारों से पूरी तरह बाहर हूं। शुरुआत में मैंने 1024 में open_files_limit के साथ शुरुआत की थी, और उपरोक्त में से एक ने इसे बदल दिया होगा, लेकिन मुझे इसे उच्चतर करने की आवश्यकता है। मैं इस सीमा को पहले से ही मार रहा हूं क्योंकि मेरे पास बहुत सारे डेटाबेस और टेबल हैं जिनमें कभी-कभी बहुत सारे विभाजन होते हैं।

मैंने 1024,000 से कम आक्रामक संख्याओं की कोशिश की है, बिना किसी भाग्य के।

किसी भी विचार वहाँ?

जवाबों:


24

इसने मेरे लिए Ubuntu Xenial 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 पर सेट करना प्रतीत होता है।

आप MySQL को शुरू करने के बाद उपरोक्त को मान्य कर सकते हैं:

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

1
जब से मैं यहाँ पहली बार आया था, लेकिन कुछ सिस्टम फ़ाइल को समायोजित करने से थोड़ा नाखुश महसूस किया, मुझे एक और धागा मिल गया जिसमें बताया गया कि w / o को कैसे ठीक किया जाए सर्विस फ़ाइल को अगले अपग्रेड पर राइट किया गया: stackoverflow.com/questions/27849331/…
थॉमस अर्बन

साभार @cepharum मैंने जवाब अपडेट किया। दरअसल हमने पहले ही अपने सर्वर पर समस्याओं का अनुभव किया है क्योंकि हमने रेपो फाइल को अपडेट किया है /lib/systemd/system/mysql.service। इसलिए हम पहले से ही आपके द्वारा संदर्भित विधि पर चले गए। मैं यहाँ अपना उत्तर अपडेट करना भूल गया। अनुस्मारक के लिए फिर से धन्यवाद।
जेरोइन वर्म्यूलेन - मेगेहोस्ट

यह आदेश काम नहीं करता है: बिल्ली / proc / $ (pgrep mysql) / सीमाएँ | grep फ़ाइलें
तुलसी एक

1
@BasilA यह कमांड केवल तब काम करता है जब MySQL चल रहा हो। बस इसे Ubuntu 16.04 पर परीक्षण किया गया।
जेरोइन वर्म्यूलेन - मेगेहोस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.