ক্লায়েন্টের সময় শেষ, যখন মাইএসকিউএল কোয়েরি চলমান থাকবে?


9

আমরা একটি সমস্যার মুখোমুখি হয়েছি যেখানে মাইএসকিউএল ওয়ার্কব্যাঞ্চের মাধ্যমে চালিত কেবল পঠনযোগ্য ক্যোয়ারী, কোনও ব্যবহারকারীর ইউআই দৃষ্টিকোণ থেকে সময়সীমা বেঁধে চলেছে এবং সার্ভারে চলতে থাকে (এবং স্পষ্টতই আরও বেশি সংস্থান গ্রহণ করা হয়) যতক্ষণ না আমাদের বিস্তৃতি ঘটে।

প্রশ্নাবলি

  • মাইএসকিউএলে এই ধরণের সমস্যাটি মোকাবেলার জন্য কি কোনও স্ট্যান্ডার্ড উপায় আছে?
  • আমাদের এমন কোন মৌলিক কারণ এড়ানো উচিত?

উত্তর:


11

টাইমআউটগুলির জন্য আপনার ডিফল্ট মানগুলি কী তা দেখতে হবে:

mysql> show variables like '%timeout';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| connect_timeout            | 10    |
| delayed_insert_timeout     | 300   |
| innodb_lock_wait_timeout   | 50    |
| innodb_rollback_on_timeout | OFF   |
| interactive_timeout        | 60    |
| net_read_timeout           | 30    |
| net_write_timeout          | 60    |
| slave_net_timeout          | 3600  |
| table_lock_wait_timeout    | 50    |
| wait_timeout               | 60    |
+----------------------------+-------+
10 rows in set (0.00 sec)

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

মাইএসকিউএল ডকুমেন্টেশন এই সেটিংসগুলির একটি বলে Here

  • ওয়েটটাইমআউটআউট (ডিফল্ট ২৮৮০০ [৮ ঘন্টা]): সার্ভারটি এটি বন্ধ করার আগে একটি নন-ইন্টারেক্টিভ সংযোগে ক্রিয়াকলাপের জন্য অপেক্ষা করা কত সেকেন্ড। এই সময়সীমাটি কেবলমাত্র টিসিপি / আইপি এবং ইউনিক্স সকেট ফাইল সংযোগগুলিতে প্রযোজ্য, নামযুক্ত পাইপ বা ভাগ করা মেমরির সাহায্যে তৈরি সংযোগগুলিতে নয়। থ্রেড স্টার্টআপে, ক্লায়েন্টের ধরণের উপর নির্ভর করে (mysql_real_connect () এর CLIENT_INTERACTIVE সংযোগ বিকল্প দ্বারা সংজ্ঞায়িত) হিসাবে বৈশ্বিক ওয়েট_টাইমআউটআউট মান বা গ্লোবাল ইন্টারেক্টিভ_টাইমআউট মান থেকে সেশন ওয়েটটাইমআউট মানটি আরম্ভ করা হয়। ইন্টারেক্টিভ_টাইমআউটও দেখুন।
  • ইন্টারেক্টিভ_টাইমআউট (ডিফল্ট ২৮৮০০ [৮ ঘন্টা]): সার্ভারটি বন্ধ করার আগে ইন্টারেক্টিভ সংযোগে ক্রিয়াকলাপের জন্য অপেক্ষা করা কত সেকেন্ড। একটি ইন্টারেক্টিভ ক্লায়েন্টকে ক্লায়েন্ট হিসাবে সংজ্ঞায়িত করা হয় যা মাইএসকিএল_আরএল_কনেক্ট () এর জন্য CLIENT_INTERACTIVE বিকল্পটি ব্যবহার করে। ওয়েট_টাইমআউটও দেখুন।
  • নেট_আড_টাইমআউট (ডিফল্ট 30): সেকেন্ডের সংখ্যাটি পড়তে ছাড়তে যাওয়ার আগে কোনও সংযোগ থেকে আরও ডেটার জন্য অপেক্ষা করতে হবে। সার্ভারটি যখন ক্লায়েন্টের কাছ থেকে পড়ছে তখন নেট_ড্রেডটাইমআউটটি হ'ল টাইমআউট মান কখন বাতিল করতে হবে। যখন সার্ভার ক্লায়েন্টকে লিখছে তখন নেট_রাইট_টাইমআউটটি হ'ল সময় বাতিল হওয়া মানটি যখন বাতিল করতে হয়। স্লেভ_নেট_আউটআউটও দেখুন।
  • নেট_উইট_টাইমআউট (ডিফল্ট 60): রেকর্ড বাতিল করার আগে কোনও সংযোগে কোনও ব্লকের লিখিত হওয়ার জন্য অপেক্ষা করা সেকেন্ডের সংখ্যা। নেট_ড্রেড_আউটআউটও দেখুন।

দয়া করে নিশ্চিত করুন যে এই টাইমআউটগুলি দীর্ঘ সময়ের জন্য চলতে পারে এমন প্রশ্নের সমাধানের জন্য পর্যাপ্ত পরিমাণে সেট করা আছে, যার মধ্যে অন্তর্ভুক্ত থাকতে পারে:

  • ভর UPDATEs
  • ভর DELETEs
  • ENABLE KEYS একটি বড় মাইআইএসএএম-তে

এর সাথে যোগাযোগ হারিয়ে যাওয়ার পরে চলতে থাকা প্রশ্নের মোকাবেলা করার জন্য আপনাকে দীর্ঘকাল চলমান ক্যোয়ারির প্রসেস আইডির বিপরীতে কেআইএলএল চালাতে হবে । এমনকি কেআইএলএল কমান্ডের সাহায্যেও আপনাকে ডিস্ক-নিবিড় পদক্ষেপগুলির মাঝামাঝি যে কোনও কোয়েরীর জন্য অপেক্ষা করতে হবে বা অভ্যন্তরীণ মিউটেক্সগুলি প্রগতিতে রয়েছে।


দীর্ঘদিন ধরে চলমান প্রক্রিয়াগুলির বিরুদ্ধে কেআইএলএল চালানোর জন্য কি একটি আদর্শ, শক্তিশালী উপায় আছে, বা এটি সাধারণত ব্যাশ স্ক্রিপ্ট / ক্রোন জবের মাধ্যমে করা হয়?
অ্যাথ্যাসার

আমি আসলে ২০১১ সালের মে মাসে ফিরে একটি পোস্ট লিখেছিলাম কীভাবে তথ্য_সেমিমা
RolandoMySQLDBA

"দয়া করে নিশ্চিত করুন যে এই টাইমআউটগুলি খুব দীর্ঘ সময়ের জন্য চলতে পারে এমন প্রশ্নের সমাধানের জন্য যথেষ্ট উচ্চ স্থিত রয়েছে, যার মধ্যে অন্তর্ভুক্ত থাকতে পারে: গণ আপডেটসমূহ ..." উদাহরণস্বরূপ: পিএইচপি + মাইএসকিএল আমাকে একটি টেবিল কলাম থেকে প্রতিটি রেকর্ড নির্বাচন করতে হবে, তাই আনুন সারি এবং তারপরে কিছু করুন ... তারপরে নতুন মান সহ অন্য রেকর্ডটি আপডেট করুন। এই স্ক্রিপ্টটি প্রায় 5+ মিনিটের জন্য প্রয়োজন এমন কেসটি রাখুন। একটি শুরুতে একটি নির্বাচন করুন এবং শেষ পর্যন্ত একটি আপডেট করুন, সারিগুলি আনুন এবং করুন ... মাঝখানে। এই পরিস্থিতিটির সাথে ওয়েটটাইমআউটটি কী করতে হবে তা আপনি ব্যাখ্যা করতে পারেন? সত্যিই এটি আমার কাছে পরিষ্কার নয় ... বিনামূল্যে সংস্থান মুক্ত করার জন্য অপেক্ষা_টাইমআউট এর নিরাপদ মূল্য কী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.