মাইএসকিউএল InnoDB পৃষ্ঠা_ক্লেয়ার সেটিংস অনুকূল নাও হতে পারে


17

Mysqld.log এ এই নোটটি দেখছেন:

[Note] InnoDB: page_cleaner: 1000ms intended loop took 15888ms. The settings might not be optimal. (flushed=200 and evicted=0, during the time.)

এখানে এখানে এরকম কিছু উল্লেখ রয়েছে বলে মনে হচ্ছে: মাইএসকিউএল ইনস্ট্যান্সটি "এসআইএনসি সূচী করছেন" স্টল করছে

আমার প্রশ্ন: লগগুলিতে এই নোটটি দেখা গেলে, কোন পদক্ষেপ নেওয়া উচিত?

মাইএসকিউএল এবং ওএস সংস্করণ: মাইএসকিএল
-সম্প্রদায়- সার্ভার- 5.7.9 -1.el7.x86_64 সেন্টো
-রিলিজ -7-1.1503.el7.centos.2.8.x86_64

চলমান চলমান শো চলমান পছন্দ 'ইন্নাডব%'; প্রস্তাবিত শো হিসাবে:

innodb_page_cleaners | 1

উত্তর:


11

ইনোডাব_পেজ_ক্লানার্সের ডিফল্ট মানটি মাইএসকিউএল ৫.7.৮ এ 1 থেকে 4 এ পরিবর্তন করা হয়েছিল। পৃষ্ঠা ক্লিনার থ্রেডগুলির সংখ্যা যদি বাফার পুলের সংখ্যার সংখ্যা ছাড়িয়ে যায় তবে ইনোডাব_পেজ_ক্লেয়ার্স স্বয়ংক্রিয়ভাবে ইনোডাব_বফার_পুল_সামান্য হিসাবে একই মানতে সেট করা থাকে

এর সাথে ইনডোডবি_বাফলার_পুল_সামান্য পরীক্ষা করুন:

mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_instances'

আপনি কেবল innodb_page_cleanersহিসাবে উচ্চ সেট করতে পারেন innodb_buffer_pool_instances। আপনি যদি চান innodb_page_cleaners=4তবে আপনারও দরকার innodb_buffer_pool_instances=4


2
ভাল আমার কাছে ইনডোডবি_বাফলার_পুল_সামগ্রী এবং ইনানোডব_পৃষ্ঠা_ক্লেয়ার্স 8 রয়েছে এবং আমি মাঝে মধ্যে সতর্কতাটি দেখতে পাচ্ছি। ভারী আই / ও ওএস এর সময় এটি স্ট্রাইপড ডেস্কটপ ক্লাস স্পিনিং ডিস্কগুলির কেবলমাত্র একগুচ্ছ যেমন টেবিলটি অপ্টিমাইজ করে তোলে এবং অনুরূপ, আমার ধারণা এটির মাইএসকিএল এর সূক্ষ্ম
উপায়টি

5

আমরা বিভিন্ন ক্লায়েন্ট জুড়ে একই সমস্যাটি দেখতে পেয়েছি এবং আবিষ্কার করেছি যে সমস্যাটি ইনডোডবি_লরু_স্ক্যান_ডেথের মান 1024 এর ডিফল্ট থেকে 128 এর চেয়ে কম হিসাবে নির্ধারণের কারণে হয়েছিল Although যদিও মানটি কমিয়ে বিশেষত আবদ্ধ কাজের চাপ লিখতে কোনও লেনদেন প্রক্রিয়া করার জন্য নেওয়া সময় হ্রাস করে আমি বিশ্বাস করি যে খুব কম মান সেট করা বাফার পুলটিকে তার কিছু বাফার এবং বাফার পুলের নোংরা পৃষ্ঠাগুলি সাফ করতে অক্ষম করে তুলবে।

আমাদের ক্ষেত্রে আমরা 128 থেকে 256 পর্যন্ত মান বাড়িয়ে এক তীব্র উন্নতি দেখেছি তবে সাধারণত সঠিক মানটি হার্ডওয়্যার এবং বোঝার ধরণের উপর নির্ভর করে। কৌতুক OLTP কর্মক্ষমতা বৃদ্ধি এবং লেট মাইএসকিউএল বাফার পুকুর পরিষ্কার যাতে না আছে রাখতে মধ্যে ডান মান খুঁজে পেতে page_cleaner , কাজ অনেক করতে প্রয়োজন উপরের হিসাবে বার্তা (বলেছেন "InnoDB: page_cleaner: 1000ms লুপ অভিপ্রেত 15888ms নিয়েছে ))।

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

SET GLOBAL innodb_lru_scan_depth=256;

1
আমি যদি মাইএসকিউএল পুনরায় চালু করি তবে ইনোডাব_লরু_স্ক্যান_ডেপথ 1024 এ ফিরে আসে তবে কীভাবে এটি স্থায়ীভাবে পরিবর্তন করা যায়?
করিম সমীর

@ করিমসমির innodb_lru_scan_depth = 256আপনার my.cnfলোডের পথে কোথাও যুক্ত করুন ।
কোয়ান্টিন স্কাউসেন

0

এই স্ট্যাকওভারফ্লো থ্রেডটি কার্যকর হতে পারে ...

/programming/41134785/how-to-solve-mysql-warning-innodb-page-cleaner-1000ms-intended-loop-took-xxx

মূলত এর অর্থ হ'ল, আপনার ডিবি অনেক বেশি লেখার জন্য বাফারপুলকে নোংরা মানগুলি পূরণ করতে বাধ্য করছে। এটি পেজক্লেইনারকে অশুভ পৃষ্ঠাগুলি কাজ করতে এবং পরিষ্কার করতে ট্রিগার করে । যেহেতু স্বাভাবিকের চেয়ে অনেক বেশি নোংরা পৃষ্ঠাগুলি ছিল, তাই পেজক্লেয়ার বাফারটি সাফ করতে আরও বেশি সময় নিয়েছিল ।

innodb_lru_scan_depthক্লিয়ারিংয়ের জন্য বাফার পুল স্ক্যানিংয়ের কতটা নিয়ন্ত্রণ করা উচিত তা নির্দিষ্ট পরিবর্তনশীল নিয়ন্ত্রণ করে। এটি হয় একটি বড় মূল্য হতে পারে বা সিস্টেমের থ্রুপুট লিখতে সত্যই উচ্চতর হয় যার ফলে প্রচুর নোংরা পৃষ্ঠাগুলি হয়।

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