বড় সাইটের জন্য মেমরি-সেভ ক্যাশে-ক্লিয়ারিং কৌশলগুলি?


30

আমার ড্রুপাল 7 টি সাইটের একটিতে হাজার হাজার ক্ষেত্র, সামগ্রীর ধরণের একটি গুচ্ছ, 25 টিরও বেশি ভিউ এবং শত শত (শীঘ্রই হাজার হাজার) প্রোফাইল ধরণের রয়েছে। এর কারণে, আমি একটি মূল প্যাচ ব্যবহার করছি যা সত্তা ক্ষেত্রের তথ্যকে আরও ভাল করে তোলে (http://drupal.org/node/1040790), এবং ভিডিয়ো-এর দেবদেব সংস্করণ যা প্রদর্শন করে ভালভাবে ক্যাশে করে (একটি বিশাল সংখ্যার পরিবর্তে) এতে সমস্ত দর্শন ডেটা সহ ক্যাশে সারি দেখায়)।

এটি সাইটের বেশিরভাগ পৃষ্ঠাগুলিকে 160-30 এমবি + র পরিবর্তে 20-30 এমবি র‌্যাম ব্যবহারের সাহায্যে লোড করতে সহায়তা করেছে (10 এমবি + ছিল এমন ক্ষেত্র এবং দর্শনগুলির জন্য ক্যাশে_ * টেবিল সারিগুলি টানানোর পরিবর্তে, প্যাচগুলি ক্যাশে_ * ডেটা আরও কার্যকর রাখতে সহায়তা করে)।

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

কম ট্রাফিক চক্র চলাকালীন, এটি কোনও বড় বিষয় নয়; একশত বা তাই ব্যবহারকারীদের কেবল পৃষ্ঠা লোড হওয়ার এক মিনিট অপেক্ষা করতে হবে। তবে উচ্চ ট্র্যাফিক চক্রের সময়, অ্যাপাচি সার্ভারটি 40+ সিপিইউ লোড সহ পাগল হতে শুরু করে এবং মেমরিটি দ্রুত ভরে যায় কারণ সমস্ত কর্মী থ্রেড অপেক্ষা করে বসে থাকে এবং তাদের মেমরি সর্বাধিক সরিয়ে দেয়, যার ফলে অদলবদল হয়। এটি একধরণের মৃত্যুর সর্পিল। Httpd এর পুনঃসূচনাটি জিনিসগুলি পরিষ্কার করে দেবে, তবে জিনিসগুলি স্বাভাবিক অবস্থায় ফিরে আসতে 5-10 মিনিট সময় নেয়।

আমার লক্ষ্য এটিকে করা যাতে ক্যাশে ক্লিয়ারগুলি সাইটটিকে তার হাঁটুর কাছে না নিয়ে আসে। একটির জন্য, যদি আমি অ্যাডমিন_মেনুর স্বতন্ত্র ক্যাশে ক্লিয়ারিং ফাংশন (যেমন "সিএসএস এবং জেএস", তারপরে "মেনু", তারপরে "থিম রেজিস্ট্রি" ইত্যাদি) ব্যবহার করি, আমি "পৃষ্ঠা এবং অন্য" বিকল্পটি না লাগা পর্যন্ত জিনিসগুলি সহজেই চলে। যখন ভিউ'স ক্যাশেটি পুনরায় সেট করা হয় (ক্যাশে হওয়া দরকার এমন সংখ্যার সাথে একটি খুব সিপিইউ এবং ডাটাবেস-তীব্র ক্রিয়াকলাপ) এবং যখন ক্ষেত্রের তথ্য ক্যাশে পুনরায় সেট করা হয় (যা এই সাইটে সিপিইউ এবং ডাটাবেস-তীব্রও হয়)।

সুতরাং ... আমার প্রশ্ন / ধারণা:

  • ড্রাশ এবং / বা অন্যান্য শেল স্ক্রিপ্টিং ব্যবহার করে, "আমার সমস্ত ক্যাশে একবারে বিস্ফোরণ করা এবং পরিষ্কার পুনর্নির্মাণের আশা" করা ছাড়া কি আমার পক্ষে আরও বুদ্ধিমান পদ্ধতিতে ক্যাচগুলি সাফ করা সম্ভব?
  • ক্যাশে ক্লিয়ারিংয়ের সময় আমি কী এইচপি-র অনুরোধগুলি অবরুদ্ধ করতে পারি যাতে আপাচি ক্যাশে-স্ট্যাম্পিডিংয়ের অনুরোধগুলির একটি গুচ্ছ দিয়ে আটকে না যায়?
  • যদি আমি দ্রুপাল / সাধারণ httpd অনুরোধের বাইরে ক্যাশেগুলি সাফ করতে পারি তবে আমি সম্ভবত ক্যাশে ক্লিয়ার অপারেশনের জন্য উচ্চতর পিএইচপি মেমরি_লিট সেট করতে পারি এবং আমার সর্বজনীন মেমরি_লিট (এখনই 256MB সেট করে রেখেছি, যদি কোনও পৃথক httpd থ্রেড ক্যাশে সাফ করার প্রয়োজন হয়) ...)।

মূলত: ইউআই-এর বোতামটি ক্লিক করে বা ব্যবহার করার পাশাপাশি দ্রুপালের সাথে সমস্ত ক্যাশেগুলি পরিষ্কার করার কোনও বুদ্ধিমান এবং করুণাময় উপায় আছে drush cc all?

[ স্পষ্টতার জন্য সম্পাদনা করুন : আমার প্রধান সমস্যাটি হ'ল ক্যাশে পুনর্নির্মাণগুলি , যা (ক) কিছুক্ষণ সময় নেয় এবং (খ) পুনর্নির্মাণগুলি সম্পূর্ণ না হওয়া অবধি অন্যান্য সমস্ত অনুরোধগুলি অবরুদ্ধ করে। আমি এটির জন্য একটি উপায় খুঁজতে চাই যাতে উচ্চ ট্র্যাফিকের সময়গুলিতে পুনর্নির্মাণগুলি এতটা মারাত্মক না হয়]]


2
আকর্ষণীয় প্রশ্ন। আপনি যদি ক্যাচিং অক্ষম করেন, আপনার সাইটের পারফরম্যান্স কি পর্যাপ্ত? আইওডাব্লু, আপনি কি অ্যাপাচি / পিএইচপি / মাইএসকিউএল চালানোর পাশাপাশি অনুকূল / ডাব্লু / ক্যাচিং সক্ষম করতে পারবেন? স্পষ্টতই, আমি আপনার সিস্টেমটি দেখিনি, তবে apc.stat = 0 নির্ধারণ করে এবং এপিসির জন্য আপনার পর্যাপ্ত মেমরি রয়েছে তা নিশ্চিত করে ডিস্কের ব্যবহার হ্রাস করতে সহায়তা করবে। মাইএসকিএলটিউনার.পিএল ব্যবহার করা আপনাকে মাইএসকিউএল বাধা কিনা তাও একটি ইঙ্গিত দেয়। তারপরে আপনি ক্যাচিং চালু করতে পারেন এবং টুইট করতে পারেন (এটি কিছু ডিবি ব্যবহার বাড়িয়ে তুলবে, সুতরাং আপনাকে মাইএসকিউএল প্যারামিটারগুলি সামঞ্জস্য করতে হতে পারে)।
এমপিডোনাদিও

আমি ভিডিশনের ক্যাশে টেবিলগুলিকে স্মৃতিতে রাখতে রেডিস (মেমক্যাশের অনুরূপ) ব্যবহার করি। এটি লোডের সময়কে তীব্রভাবে উন্নত করেছে। একটি স্থিতিশীল প্রকাশে "প্রদর্শনের মাধ্যমে ভিউ ক্যাশে" বৈশিষ্ট্যটি প্রত্যাশিত, এটি অনেক অর্থবোধ করে।
uwe

@ এমপিডি - ক্যাচিং অক্ষম করা দ্রুত পুরো সাইটটিকে মেরে ফেলবে; সাধারণত 100-500 প্রমাণীকৃত ব্যবহারকারী এবং সাইটের কিছু বিভাগ বেশ ভারী। আমার জন্য সবচেয়ে বড় সমস্যাটি ক্যাশে পাঠ নয় (আমি এর জন্য মেমক্যাচড, রেডিস এবং এপিসি ব্যবহারকারী ক্যাশে পরীক্ষা করেছি), তবে ক্যাশে পুনর্নির্মাণের সাথে, যা খুব সিপিইউ-নিবিড়।
geerlingguy

নতুন ক্যাশে পুনর্নির্মাণের সময় আপনি পুরানো ক্যাশে ডেটা ব্যবহার করতে চান। এটা কি সঠিক?
মাইকাইটাউন 2

@ মাইকাইটাউন 2 - সঠিক - এটি আদর্শ হবে।
geerlingguy

উত্তর:


9

কেবলমাত্র ইউআই-তে বোতামটি ক্লিক করে, বা সমস্ত ড্রশ সিসি ব্যবহার করার পাশাপাশি দ্রুপালের সাথে সমস্ত ক্যাশে মুছে ফেলার কোনও বুদ্ধিমান এবং করুণাময় উপায় আছে?

ক্যাশে ক্রিয়া মডিউল যে আছে। এটি নিয়মের উপর নির্ভর করে। পরীক্ষার জন্য, "x" টাইপের নোড যুক্ত করা বা আপডেট করা হলে আপনি একটি নির্দিষ্ট ভিউ সাফ করার জন্য একটি নিয়ম সেটআপ করতে পারেন। আরও বিশদ জানতে ডক্স চেকআউট করুন।

এছাড়াও কটাক্ষপাত করা ক্যাশে সুতনু মডিউল - এখনো কিন্তু সৌন্দর্য আকর্ষণীয় এটি চেষ্টা করেন নি।


আমি ইতিমধ্যে drush cc [type]নির্দিষ্ট ক্যাশে ক্লিয়ারিংয়ের জন্য ব্যবহার করছি (ক্যাশে ক্রিয়াগুলির অনুরূপ), তবে আমি আরও কৃপণভাবে ক্যাশে সাফ করার উপায়গুলি খুঁজে পেতে আগ্রহী এবং অন্যান্য httpd থ্রেডগুলি অ্যাপাচি সার্ভারটিকে হত্যা করছে না তা নিশ্চিত করে তুলতে।
geerlingguy

1
ড্রশ সিসির মতো দেখতে সমস্ত দর্শন ক্যাশে সাফ করবে। ক্যাশে ক্রিয়া সহ আপনি কেবল একটি নির্দিষ্ট দর্শন বা প্রদর্শন সাফ করতে পারেন clear ভিউ ডেভ সংস্করণে সম্ভবত একটি বাগ রয়েছে, অন্যথায় ক্যাশেগুলি পুনর্নির্মাণ করতে এক বা দুই মিনিট সময় লাগবে না। 7.x-3.5 দেখলে আপনার কি একই সমস্যা রয়েছে? এছাড়াও কটাক্ষপাত করা drupal.org/project/cache_graceful - এখনো চেষ্টা করিনি কিন্তু আকর্ষণীয় দেখায়
Uwe

ক্যাশ পড়ার পারফরম্যান্সে সহায়তা করতে দর্শন দর্শনগুলি তাদের নিজস্ব ক্যাশে সারিগুলিতে দর্শন প্রদর্শনগুলি ছিন্ন করে। এর অর্থ হল ভিউগুলি ক্যাশে তৈরি করতে সম্ভবত 5x আরও বেশি সময় ব্যয় করে (তবে এটি ক্যাশে পড়ার সময় মেমরির ব্যবহার হ্রাস করতে সহায়তা করে!)।
geerlingguy

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

ঠিক আছে. আমি ক্যাশে_গ্রাহী সঙ্গে আপনার অভিজ্ঞতা সম্পর্কে শুনতে আগ্রহী হবে। কোন অংশ ঠিক হয়নি?
uwe

2

মূল সমস্যাটি হ'ল আপনি মাইএসকিউএল ক্যাশে ডেটা সঞ্চয় করার জন্য ব্যবহার করছেন - উচ্চ-লোড সাইটের জন্য এটি খুব অকার্যকর সমাধান।

পরিবর্তে মেমক্যাচ ব্যবহার করার পরামর্শ দিই । এটি নাটকীয়ভাবে ক্যাশে সিস্টেমের কর্মক্ষমতা বৃদ্ধি করবে এবং আপনাকে 2 দুর্দান্ত সুবিধা দেবে:

  1. মাইক্রাচালনা পড়া এবং লেখার ক্রিয়াকলাপগুলির জন্য আরও দ্রুত যা মাইএসকিউএল - আপনার সমস্ত ক্যাশে অপারেশন (এবং সম্পূর্ণ ক্যাশে পুনর্নির্মাণ) দ্রুত কাজ করবে।
  2. কারণ ক্যাশে ডেটা আর ডিবিতে সংরক্ষণ করা হয়নি - ক্লিয়ারিং ক্যাশে অন্য কোনও মাইএসকিউএল কোয়েরিকে ব্লক করবে না।

ড্রুপাল 7 এর জন্য মেমক্যাচ কনফিগারেশনের উদাহরণ এখানে ।


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

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

সাইটে প্রায় 100% অনুমোদিত ট্র্যাফিক রয়েছে, অন্যথায় আমি বার্নিশ ব্যবহার করা বিবেচনা করব। আমি এই মুহুর্তে ক্যাশে গ্রেসফুল মডিউলটি সন্ধান করতে পারি।
geerlingguy

0

ড্রাশ এবং / বা অন্যান্য শেল স্ক্রিপ্টিং ব্যবহার করে, "আমার সমস্ত ক্যাশে একবারে বিস্ফোরণ করা এবং পরিষ্কার পুনর্নির্মাণের আশা" করা ছাড়া কি আমার পক্ষে আরও বুদ্ধিমান পদ্ধতিতে ক্যাচগুলি সাফ করা সম্ভব?

আপনি যদি সমস্ত ক্যাশে বিস্ফোরিত করতে না চান drush cc type_of_cacheতবে নির্দিষ্ট : সাফ করার জন্য ব্যবহার করুন বা নিজের নিজস্ব সংজ্ঞা দিন।

বিকল্পভাবে সমস্ত ক্যাশে-জাতীয় টেবিলগুলি ম্যানুয়ালি সাফ করুন, যেমন

echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v 

আপনি যদি মেমকেচেড (ব্যাশ সিনট্যাক্স) ব্যবহার করেন তবে চেষ্টা করুন:

pgrep memcached && echo flush_all > /dev/tcp/127.0.0.1/11211

ক্যাশে ক্লিয়ারিংয়ের সময় আমি কী এইচপি-র অনুরোধগুলি অবরুদ্ধ করতে পারি যাতে আপাচি ক্যাশে-স্ট্যাম্পিডিংয়ের অনুরোধগুলির একটি গুচ্ছ দিয়ে আটকে না যায়?

drush -y vset maintenance_mode 1লোকেরা সাইটে অ্যাক্সেস রোধ করতে রক্ষণাবেক্ষণ মোড ( ) সক্ষম করুন । বা অন্য কোথাও পুনর্নির্দেশের জন্য ফ্রন্ট-এন্ডটি কনফিগার করুন (যেমন ওয়ার্নিশে, অ্যাপাচে পুনর্নির্দেশ করা বা পরিবর্তন করা .htaccess)।

যদি আমি দ্রুপাল / সাধারণ httpd অনুরোধের বাইরে ক্যাশেগুলি সাফ করতে পারি তবে আমি সম্ভবত memory_limitক্যাশে ক্লিয়ার অপারেশনের জন্য একটি উচ্চতর পিএইচপি সেট করতে পারি এবং আমার সর্বজনীন memory_limit(এখনই 256MB সেট করে রেখেছি , যদি কোনও পৃথক httpd থ্রেড ক্যাশে সাফ করার প্রয়োজন হয় তবে .. ।)।

ক্যাশে সাফ করতে আরও মেমরি লাগে না, তবে সাফের পরে ক্যাশে পুনর্নির্মাণে আরও বেশি সময় লাগবে। ক্রোন চালিয়ে বা কোনও পৃষ্ঠা খোলার মাধ্যমে আপনি সর্বদা ক্যাচগুলিকে উষ্ণ করতে পারেন eg

time php -n -d memory_limit=-1 time $(which drush) cc registry
PHP_OPTIONS='-d memory_limit="2G"' drush cron
php -d memory_limit=1G ./scripts/drupal.sh http://localhost/

প্রক্রিয়াকরণ -nউপেক্ষা করার জন্য নির্দিষ্ট করুন php.iniযা অতিরিক্তভাবে ক্যাশে সাফ করার প্রক্রিয়াটি গতি বাড়িয়ে তুলতে পারে।


-1

সম্ভাব্যভাবে কোনও আর্থিক ব্যয় জড়িত রয়েছে তবে আপনি বার্নিশের মতো ক্যাচিং সার্ভার সেটআপ ব্যবহার করতে পারেন। বিপরীতটি হ'ল বার্নিশ আপনার সাইটটি পরিবেশন করবে যখন আপনার ক্যাশে প্রযোজনা সার্ভারে পরিষ্কার করা হচ্ছে, ব্যবহারকারীটি বুদ্ধিমান না হয়ে।

নেতিবাচকতা: আপনার ভিসিএল টাইমআউট সেটিংস বনাম প্রোডাকশন সার্ভারের ডাউনটাইম কত সেকেন্ড / মিনিটের উপর নির্ভর করে, বার্নিশ সেই সময়ে আপডেট হতে পারে এবং আপনি কোনও বার্নিশ 503 ত্রুটি পর্দা দেখতে পাবেন।

তবে রেডিস বা মেমক্যাচের সাথে এই পদ্ধতির সাহায্য করতে পারে।


এই প্রশ্নটি কেবলমাত্র অভ্যন্তরীণ ড্রুপাল ক্যাশে সম্পর্কিত; দ্রুপালের ক্যাশে পুনর্নির্মাণ চিরকাল নিয়ে গিয়েছিল এবং দ্রুপালের বাইরে / বাইরে ক্যাশিংয়ের অতিরিক্ত স্তরগুলি প্রকৃত ক্যাশে ডেটা পুনর্নির্মাণে সহায়তা করতে খুব বেশি কিছু করতে পারে না (কিছু ট্র্যাফিক অফলোড করার পাশাপাশি যে ওয়েবসারকে অন্যথায় ক্যাশে কিছুটা সময় ধরে রাখতে হবে) পুনর্নির্মাণ করা হয়)।
geerlingguy

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