Ubuntu 15 में MySQL अधिकतम कनेक्शन के लिए max_open_files को बढ़ा नहीं सकता है




performance (3)

मैं MySQL के इस संस्करण को चला रहा हूँ

Ver 14.14 Distrib 5.6.24, for debian-linux-gnu (x86_64)

उबंटू के इस संस्करण पर

Distributor ID: Ubuntu
Description:    Ubuntu 15.04
Release:    15.04
Codename:   vivid

यह कॉन्फ़िगर है जिसे मैंने MySQL के लिए सेट किया है:

key_buffer_size     = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8
innodb_buffer_pool_size=20G
innodb_log_buffer_size=16M
tmp_table_size = 32M
max_heap_table_size = 32M
open-files-limit=4510
max_connections=500
myisam-recover         = BACKUP
query_cache_type=1
query_cache_limit   = 32M
query_cache_size        = 32M

MySQL शुरू करते समय ये चेतावनियां होती रहती हैं:

2015-06-17 17:28:53 26720 [Warning] Buffered warning: Could not increase number 
of max_open_files to more than 1024 (request: 4510)

2015-06-17 17:28:53 26720 [Warning] Buffered warning: Changed limits: max_connections: 
214 (requested 500)

2015-06-17 17:28:53 26720 [Warning] Buffered warning: Changed limits: table_open_cache: 
400 (requested 2000)

मैंने पहले से ही इन चरणों का प्रयास किया है:

1) इसे /etc/security/limits.conf जोड़ना

mysql           soft    nofile          65535
mysql           hard    no file          65535

2) इसे /etc/pam.d/common-auth और /etc/pam.d/commom-session

session required pam_limits.so

3) इसे /etc/mysql/mysql.conf.d/mysqld.cnf जोड़ें

open-files-limit=4510 or open_files_limit=4510

इनमें से कोई भी काम नहीं किया है और मैं अभी भी 500 के लिए MySQL अधिकतम कनेक्शन बढ़ाने में सक्षम नहीं हूं।

मैं वास्तव में इस बिंदु पर कुछ मदद की सराहना करता हूं।

आपका अग्रिम रूप से बोहोत धन्यवाद।


Answer #1

MySQL 5.7.7 के रूप में, यह दस्तावेज Red Hat Enterprise Linux 7, ओरेकल लिनक्स 7, सेंटोस 7, एसयूएसई लिनक्स एंटरप्राइज़ सर्वर 12, फेडोरा 24 और 25 के लिए अनुशंसा करता है:

https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html

उबंटू 16.04 पर सेवा को MySQL कहा जाता है, न कि mysqld, इसलिए मैंने यही किया:

sudo mkdir /etc/systemd/system/mysql.service.d
sudo vi /etc/systemd/system/mysql.service.d/override.conf

इसे नई फ़ाइल override.conf में जोड़ा गया:

[Service]
LimitNOFILE=5000

फिर सेवा को पुनरारंभ किया:

sudo systemctl daemon-reload
sudo systemctl restart mysql

Answer #2

उबंटू संस्करण 15.04 में अपस्टार्ट से सिस्टमड में स्थानांतरित हो गया है और अब सिस्टम सेवाओं के लिए /etc/security/limits.conf में सीमाओं का सम्मान नहीं करता है। ये सीमाएं केवल उपयोगकर्ता सत्रों पर लागू होती हैं।

MySQL सेवा के लिए सीमाएं सिस्टम कॉन्फ़िगरेशन फ़ाइल में परिभाषित की गई हैं, जिन्हें आपको अपने डिफ़ॉल्ट स्थान से / etc / systemd में कॉपी करना चाहिए और फिर प्रतिलिपि संपादित करना चाहिए।

sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
sudo vim /etc/systemd/system/mysql.service # or your editor of choice

फ़ाइल के नीचे निम्न पंक्तियां जोड़ें:

LimitNOFILE=infinity
LimitMEMLOCK=infinity

आप एक संख्यात्मक सीमा भी सेट कर सकते हैं, उदाहरण के लिए LimitNOFILE=4510

अब सिस्टम कॉन्फ़िगरेशन को पुनः लोड करें:

sudo systemctl daemon-reload

MySQL को पुनरारंभ करें और इसे अब अधिकतम_कनेक्शन निर्देशों का पालन करना चाहिए।

मुझे 15.04 को अपग्रेड करने के बाद साफ-सफाई MySQL को रोकने में भी समस्याएं थीं। यदि यह आपको प्रभावित करता है (आपको पता चलेगा क्योंकि जब आप service mysql stop या service mysql restart तो इसमें 300 सेकंड लगेंगे) फिर निम्न पंक्ति को उसी /etc/systemd/system/mysql.service फ़ाइल में जोड़कर इसे ठीक किया जाएगा मेरे लिए:

ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown

यह बाद की समस्या 16.04 तक तय की गई है और इस लाइन की अब आवश्यकता नहीं है, इसलिए वितरण वितरण करने से पहले आप MySQL को रोकना और कॉन्फ़िगरेशन फ़ाइल से ExecStop लाइन को हटाना चाहते हैं।


Answer #3

मेरा सुझाव है कि आप मौजूदा mysql.service फ़ाइल को सुझाए गए अनुसार कॉपी न करें, केवल उस फ़ाइल के साथ फ़ाइल बनाएं जिसके बारे में आप परवाह है। ऐसा:

mkdir /lib/systemd/system/mysql.service.d
vim /etc/systemd/system/mysql.service.d/limits.conf

और limit.conf की सामग्री बस है:

[Service]
LimitNOFILE=10000
LimitMEMLOCK=10000

या जो भी सीमा आप पसंद करते हैं।





ubuntu