থ্রেড_ক্যাচি_ আকারের আমার কোন মান ব্যবহার করা উচিত?


25

আমি মাইএসকিউএল এর সাথে একসাথে এসপি নেট ব্যবহার করছি। । নেট সংযোগের স্ট্রিংয়ে, আমি সর্বোচ্চ পুলের আকারটি 150 এ সেট করেছি।

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

SHOW GLOBAL STATUS LIKE 'max_used_connections'; gives 66
SHOW GLOBAL STATUS LIKE 'Threads_created'; gives 66
SHOW GLOBAL STATUS LIKE 'connections'; gives 474

যা থ্রেডস_ক্রিয়েটেড / সংযোগগুলি = 0,1392 দেয়।

সুতরাং যে এটি থেকে আমার বৃদ্ধি প্রয়োজন মনে হয় thread_cache_size

তবে আমি যদি চালাই তবে SHOW PROCESSLISTআমি সর্বদা দেখতে পাই যে নেট। দ্বারা নির্মিত পুলটির কারণে আমার প্রচুর সংযোগ খোলা রয়েছে (তাদের বেশিরভাগ ঘুমাচ্ছে)। আমি এখনও thread_cache_sizeসংযোগ পুল থেকে সংযোগগুলি পুনরায় ব্যবহার করব বলে আমার কি এখনও সেট করা দরকার ? পুলের আকার যদি 150 হয় তবে আপনার কি মনে হয় যে ভাল মান thread_cache_size150+ সেট করা যাবে ? এটি কি সিপিইউ এবং মেমরিকে অনেক প্রভাব ফেলবে?

উত্তর:


43

মাইএসকিউএল ডকুমেন্টেশনের তথ্যের ভিত্তিতে আপনার নিম্নলিখিতটি করা উচিত: সংযোগ , থ্রেডস_ক্রিয়েটেড এবং ম্যাক্স_অজ_যুক্ত সংযোগগুলি ব্যবহার করে সর্বাধিক সংখ্যক এক সাথে সংযোগের মাইএসকিএলডিটি কী ছিল তা সন্ধান করুন ,

  • SHOW GLOBAL STATUS LIKE 'Connections';
  • SHOW GLOBAL STATUS LIKE 'Threads_created';
  • SHOW GLOBAL STATUS LIKE 'Max_used_connections';

নিম্নলিখিত গণনা করার চেষ্টা করুন

Threads_created / Connections: এটি যদি 0.01 এর বেশি হয় তবে বৃদ্ধি করুন thread_cache_size। খুব কমপক্ষে, এর thread_cache_sizeচেয়ে বড় হওয়া উচিত Max_used_connections


দুর্দান্ত মন্তব্যের জন্য ধন্যবাদ! আমি আমার প্রশ্নটি কিছুটা আপডেট করেছি।
মার্টিন

আমি মনে করি আপনি mysql> বিশ্বব্যাপী স্ট্যাটাসের মতো 'সংযোগগুলি' দেখান; (আপনি দু'বার সর্বাধিক ব্যবহার_সংযোগ লিখেছেন)
আলেক্ক

1
আমি কেবল যুক্ত করতে চাই এই dev.mysql.com/doc/refman/5.7/en/… উল্লেখ করে আপনার থ্রেড_ক্যাচি_সাইজ মান (100 ছাড়িয়েও নয়) এর জন্য 8 ম্যাক্স_অজড_সংযোগগুলি যুক্ত করা উচিত
সিএমই 64

1
প্রকৃতপক্ষে, ম্যানুয়ালটিতে ডিফল্ট (ম্যাক_উইজড_অ্যাকশনগুলির 1%) + 8 .... বা 100 ... যা কম হোক তা প্রস্তাব দেয়।
ক্রিস্টোফার ম্যাকগওয়ান

আমার জন্য # গুলি 264/103134 যা 0.0026 এ কাজ করে যা 0.01 এর চেয়ে কম তবে আমার ম্যাক্সউসডস কানেকশনগুলি 72, সুতরাং শেষ বাক্যটি ভয়াবহভাবে দ্বন্দ্বপূর্ণ
নৌকা কোডার

11

মাইএসকিউএল ডক্স অনুসারে, আপনার সেট করা উচিত thread_cache_sizeযাতে সর্বাধিক নতুন সংযোগগুলি নতুন তৈরি হওয়া থ্রেডের পরিবর্তে ক্যাশে থেকে থ্রেড ব্যবহার করে। এটি কিছু থ্রেড-তৈরি ওভারহেড সংরক্ষণ করে, যদিও সাধারণত একটি উল্লেখযোগ্য পারফরম্যান্স উন্নতি তৈরি করে না:

থ্রেডের জন্য অনুরোধগুলি সম্ভব হলে ক্যাশে থেকে নেওয়া থ্রেডগুলি পুনরায় ব্যবহার করে সন্তুষ্ট হয় এবং কেবল ক্যাশে খালি হলেই একটি নতুন থ্রেড তৈরি হয়। আপনার যদি প্রচুর নতুন সংযোগ থাকে তবে পারফরম্যান্স উন্নত করতে এই পরিবর্তনশীল বাড়ানো যেতে পারে। সাধারণত, যদি আপনার ভাল থ্রেড বাস্তবায়ন থাকে তবে এটি একটি উল্লেখযোগ্য কর্মক্ষমতা উন্নতি সরবরাহ করে না । তবে, যদি আপনার সার্ভারটি প্রতি সেকেন্ডে কয়েকশ সংযোগ দেখে তবে আপনার সাধারণত থ্রেড_ক্যাচি_সাইজ যথেষ্ট পরিমাণে সেট করা উচিত যাতে বেশিরভাগ নতুন সংযোগগুলি ক্যাশেড থ্রেড ব্যবহার করে(সূত্র)

এর অর্থ হ'ল আপনার নিজের সেট করা উচিত thread_cache_sizeযাতে Threads_created / Connections(সংযুক্তির%% যা নতুন থ্রেড তৈরির দিকে পরিচালিত করে) বরং কম হয়। আপনি যদি মাইএসকিউএল ডক্সকে আক্ষরিকভাবে ("সর্বাধিক") নেন তবে মানটি <50% হওয়া উচিত। রোল্যান্ডোমাইএসকিউএলডিবিএর উত্তর <1% বলে says সত্যের কাছাকাছি কে আমি জানি না।

আপনার চেয়ে বেশি স্থাপন করা উচিত নয় । RolandoMySQLDBA এর উত্তরে চূড়ান্ত বাক্য ( "অন্ততপক্ষে, thread_cache_size Max_used_connections থেকে বেশি হতে হবে") যুক্তিসম্মত বলে মনে হচ্ছে না, কারণ এটা বলছেন যে আপনি আপনার সার্ভারে চেয়ে ক্যাশের মধ্যে আরো থ্রেড রাখা উচিত কি কখনো ব্যবহার। মাইএসকিউএল কখনই ক্যাশে অনেকগুলি থ্রেড রাখে না - এটি প্রাক-স্বেচ্ছায় থ্রেডগুলি ক্যাশে রাখে না - ক্লায়েন্ট কোনও থ্রেড তৈরি করে এবং সংযোগ বিচ্ছিন্ন করার পরে এটি কেবল সেখানে রাখে । যদি আপনার একই সাথে X ক্লায়েন্ট কখনও সংযুক্ত না হয় তবে আপনার ক্যাশে কখনও এক্স থ্রেড থাকবে না:thread_cache_sizeMax_used_connections

যখন কোনও ক্লায়েন্ট সংযোগ বিচ্ছিন্ন করে, ক্লায়েন্টের থ্রেডগুলি থ্রেড_ক্যাচি_সাইড থ্রেডের চেয়ে কম থাকলে ক্যাশে রাখা হয়। (সূত্র)

মাইকের এই উত্তরটিও দেখুন :

থ্রেড_ক্যাচি_ সাইজটিকে সর্বোচ্চ_ সংযোগের চেয়ে বড় আকারে সেট করা অত্যন্ত মারাত্মকভাবে অস্বাস্থ্যকর পরামর্শ বলে মনে হচ্ছে ... ক্যাশে সম্ভবত সর্বোচ্চ_সংযোগের চেয়ে বড় হতে পারে না এবং সেই আকারের কাছাকাছি যে কোনও ক্যাশে কেবল তখনই বুঝতে পারে যদি আপনার থ্রেডগুলিতে প্রচুর পরিমাণে মন্থন থাকে sense ... যা, একটি ভাল আচরণের ক্ষেত্রে, এটি হবে না।

/dba//a/28701


আমি তাই মনে করি! আমি এই কনফিগারটি পরীক্ষা করার পরে, "থ্রেড_ক্যাচি_সাইজটি ম্যাক্স_স_যুক্ত_সংযোগের চেয়ে বড় হওয়া উচিত" সহায়ক নয়।
সি কে.গুয়েইন

-2

সাধারণ কার্যদিবসে, কোনও 'নতুন ভাড়া' সম্ভবত সংযোগের প্রয়োজন হবে? বেশিরভাগ যাদুকর জানেন না যে আগামী কয়েকদিনে কত লোক ভাড়া নেওয়া হতে পারে। মাইএসকিউএল এর ভি 8 ম্যাক্স_উইজড_সংযোগগুলি নির্বিশেষে ওভারলোড প্রতিরোধের জন্য 100 এ সিএপি থ্রেড_ক্যাচি_ সাইজের প্রস্তাব দেয়। আমার জন্য, 100 একটি ভাল সিএপি।

দয়া করে এই লিঙ্কটি দেখুন।

https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_thread_cache_size
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.