একটি উচ্চ-লোড অ্যাপাচি সার্ভারের পারফরম্যান্স টিউন করা


12

আমি (আমাদের জন্য) ভারী লোড হওয়া ওয়েব সার্ভারের সাথে কয়েকটি সার্ভারের পারফরম্যান্স সমস্যাগুলি দেখতে পাচ্ছি। পরিবেশটি নিম্নরূপ:

  • ডেবিয়ান লেনি (সমস্ত স্থিতিশীল প্যাকেজগুলি + সুরক্ষা আপডেটে প্যাচ করা হয়েছে)
  • অ্যাপাচি ২.২.৯
  • পিএইচপি 5.2.6
  • অ্যামাজন ইসি 2 বড় উদাহরণ

আমরা যে আচরণটি দেখছি তা হ'ল ওয়েবটি সাধারণত প্রতিক্রিয়াশীল বোধ করে তবে একটি অনুরোধটি পরিচালনা করতে কিছুটা দেরি করে - কখনও কখনও আমাদের পিকের ব্যবহারের সময়গুলিতে সেকেন্ডের মাঝে মাঝে ২-৩ সেকেন্ড থাকে। সার্ভারে প্রকৃত লোডটি খুব বেশি হিসাবে রিপোর্ট করা হচ্ছে - প্রায়শই ১০.০ xxx বা 20.xx রিপোর্ট করেছেন top। তদ্ব্যতীত, এই সময়ে (এমনকি vi) এর সময় সার্ভারে অন্যান্য জিনিসগুলি চালানো খুব ধীর হয়, তাই অবশ্যই লোডটি অবশ্যই সেখানে। অদ্ভুতভাবে পর্যাপ্ত পরিমাণে অ্যাপাচি খুব প্রাথমিক পর্যায়ে থাকে than

আমরা প্রেফার্ক ব্যবহার করে নীচে নীচে অ্যাপাচি কনফিগার করেছি:

StartServers          5
MinSpareServers       5
MaxSpareServers      10
MaxClients          150
MaxRequestsPerChild   0

এবং কিপএলাইভ হিসাবে:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

সার্ভার-স্থিতি পৃষ্ঠার দিকে তাকানো, এমনকি ভারী বোঝার এই সময়ে আমরা খুব কমই ক্লায়েন্ট ক্যাপটি আঘাত করছি, সাধারণত 80-100 অনুরোধ এবং রক্ষণশীল অবস্থায় থাকা অনেকের মধ্যে পরিবেশন করি। এটি আমাকে "একজন হ্যান্ডলারের অপেক্ষায়" হিসাবে প্রাথমিক অনুরোধটি হতাশাকে অস্বীকার করতে বলে তবে আমি ভুল হতে পারি।

অ্যামাজনের ক্লাউডওয়াচ পর্যবেক্ষণ আমাকে বলেছে যে আমাদের ওএস> 15 এর একটি লোডের কথা জানালেও আমাদের দৃষ্টান্তের সিপিইউ ব্যবহার 75-80% এর মধ্যে।

উদাহরণ থেকে আউটপুট top:

top - 15:47:06 up 31 days,  1:38,  8 users,  load average: 11.46, 7.10, 6.56
Tasks: 221 total,  28 running, 193 sleeping,   0 stopped,   0 zombie
Cpu(s): 66.9%us, 22.1%sy,  0.0%ni,  2.6%id,  3.1%wa,  0.0%hi,  0.7%si,  4.5%st
Mem:   7871900k total,  7850624k used,    21276k free,    68728k buffers
Swap:        0k total,        0k used,        0k free,  3750664k cached

বেশিরভাগ প্রক্রিয়া দেখতে দেখতে:

24720 www-data  15   0  202m  26m 4412 S    9  0.3   0:02.97 apache2                                                                       
24530 www-data  15   0  212m  35m 4544 S    7  0.5   0:03.05 apache2                                                                       
24846 www-data  15   0  209m  33m 4420 S    7  0.4   0:01.03 apache2                                                                       
24083 www-data  15   0  211m  35m 4484 S    7  0.5   0:07.14 apache2                                                                       
24615 www-data  15   0  212m  35m 4404 S    7  0.5   0:02.89 apache2            

vmstatউপরের মত একই সময়ে আউটপুট উদাহরণ :

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 8  0      0 215084  68908 3774864    0    0   154   228    5    7 32 12 42  9
 6 21      0 198948  68936 3775740    0    0   676  2363 4022 1047 56 16  9 15
23  0      0 169460  68936 3776356    0    0   432  1372 3762  835 76 21  0  0
23  1      0 140412  68936 3776648    0    0   280     0 3157  827 70 25  0  0
20  1      0 115892  68936 3776792    0    0   188     8 2802  532 68 24  0  0
 6  1      0 133368  68936 3777780    0    0   752    71 3501  878 67 29  0  1
 0  1      0 146656  68944 3778064    0    0   308  2052 3312  850 38 17 19 24
 2  0      0 202104  68952 3778140    0    0    28    90 2617  700 44 13 33  5
 9  0      0 188960  68956 3778200    0    0     8     0 2226  475 59 17  6  2
 3  0      0 166364  68956 3778252    0    0     0    21 2288  386 65 19  1  0

এবং অবশেষে, আপাচে এর থেকে আউটপুট server-status:

Server uptime: 31 days 2 hours 18 minutes 31 seconds
Total accesses: 60102946 - Total Traffic: 974.5 GB
CPU Usage: u209.62 s75.19 cu0 cs0 - .0106% CPU load
22.4 requests/sec - 380.3 kB/second - 17.0 kB/request
107 requests currently being processed, 6 idle workers

C.KKKW..KWWKKWKW.KKKCKK..KKK.KKKK.KK._WK.K.K.KKKKK.K.R.KK..C.C.K
K.C.K..WK_K..KKW_CK.WK..W.KKKWKCKCKW.W_KKKKK.KKWKKKW._KKK.CKK...
KK_KWKKKWKCKCWKK.KKKCK..........................................
................................................................

আমার সীমিত অভিজ্ঞতা থেকে আমি নিম্নলিখিত উপসংহার / প্রশ্নগুলি আঁকছি:

  • আমরা অনেক বেশি KeepAliveঅনুরোধের অনুমতি দিচ্ছি

  • আমি ভিএমস্ট্যাট-এ আইও-র জন্য অপেক্ষা করতে কিছু সময় দেখতে পাচ্ছি যদিও ধারাবাহিকভাবে না এবং অনেকটা না (আমি মনে করি?) তাই আমি নিশ্চিত নই যে এটি একটি বড় উদ্বেগ কিনা বা না, আমি ভিএমস্ট্যাট নিয়ে কম অভিজ্ঞ

  • Vmstat এও, আমি কিছু পুনরাবৃত্তিতে দেখি যে পরিবেশন করার জন্য অপেক্ষা করা অনেকগুলি প্রক্রিয়া, যা আমি আমাদের ওয়েব সার্ভারে প্রাথমিক পৃষ্ঠা লোডের বিলম্বকে সম্ভবত ভুলভ্রান্তির সাথে চিহ্নিত করছি is

  • আমরা স্থির সামগ্রী (75% বা ততোধিক) এবং স্ক্রিপ্ট সামগ্রীর মিশ্রণ পরিবেশন করি এবং স্ক্রিপ্ট সামগ্রীটি প্রায়শই মোটামুটি প্রসেসর নিবিড় থাকে, সুতরাং উভয়ের মধ্যে সঠিক ভারসাম্য খুঁজে পাওয়া গুরুত্বপূর্ণ; দীর্ঘমেয়াদী আমরা উভয় সার্ভারকেই অনুকূল করতে স্ট্যাটিকস অন্যত্র সরিয়ে নিতে চাই তবে আমাদের সফ্টওয়্যার আজকের জন্য এটি প্রস্তুত নয়

কারও কারও ধারনা থাকলে অতিরিক্ত তথ্য সরবরাহ করতে পেরে আমি খুশি, অন্য নোটটি এটি একটি উচ্চ-প্রাপ্যতা উত্পাদন ইনস্টলেশন এটি তাই আমি টুইটের পরে ত্বক তৈরির বিষয়ে সতর্ক থাকি এবং কেন আমি KeepAliveনিজের মূল্য হিসাবে এই জিনিস নিয়ে খেলিনি is এখনো.


+1 রক্তাক্ত দুর্দান্ত প্রশ্ন, ভাল শব্দ এবং চিন্তা করে। আশা করি আপনার উত্তরটি প্রাপ্য!
ডেভ রিক্স

উত্তর:


7

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

আমরা অনেক বেশি KeepAlive অনুরোধগুলি মঞ্জুরি দিচ্ছি

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

আপনি যদি ইতিমধ্যে ওয়েব সার্ভারে মোড_ডিফলেট ইনস্টল না করে থাকেন - তবে আমি আপনাকে এটি করার পরামর্শ দিচ্ছি - এবং আপনার পিএইচপি স্ক্রিপ্টগুলিতে ob_gzhandler () যুক্ত করুন। আপনি এটি একটি স্ব-প্রিপেন্ড হিসাবে করতে পারেন:

if(!ob_start("ob_gzhandler")) ob_start();

(হ্যাঁ, কপশন আরও সিপিইউ ব্যবহার করে - তবে সার্ভারগুলি রান্কিউ থেকে দ্রুত / কম টিসিপি প্যাকেট পরিচালনা করে সামগ্রিকভাবে আপনার সিপিইউ সংরক্ষণ করা উচিত - এবং বোনাস হিসাবে, আপনার সাইটটি আরও দ্রুত)।

আমি ম্যাক্সউইকুইস্টেপর্চিল্ডের উপরের সীমা নির্ধারণ করার পরামর্শ দিচ্ছি - 500 এর মতো কিছু বলুন you've কোথাও কোনও স্মৃতি ফাঁস হওয়ার ক্ষেত্রে এটি প্রক্রিয়াগুলিতে কিছুটা টার্নওভারের অনুমতি দেয়। আপনার httpd প্রসেসগুলি বিশাল আকারের বলে মনে হচ্ছে - আপনার প্রয়োজন নেই এমন কোনও অ্যাপাচি মডিউলগুলি সরিয়েছেন তা নিশ্চিত করে নিন এবং নিশ্চিত করুন যে আপনি ভাল ক্যাশে তথ্য সহ স্থির সামগ্রী সরবরাহ করছেন।

যদি আপনি এখনও সমস্যাগুলি দেখছেন তবে সমস্যাটি সম্ভবত পিএইচপি কোডের মধ্যে রয়েছে (আপনি যদি ফাস্টসিজিআই ব্যবহার করতে যান তবে এটি কোনও বড় পারফরম্যান্স জরিমানা ছাড়াই স্পষ্ট হওয়া উচিত)।

হালনাগাদ

যদি স্থির সামগ্রীটি পৃষ্ঠাগুলি জুড়ে খুব বেশি পৃথক না হয়, তবে এটির সাথে এটি পরীক্ষা করার মতোও হতে পারে:

if (count($_COOKIE)) {
    header('Connection: close');
}

পিএইচপি স্ক্রিপ্টগুলিতেও।


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

4

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

বিটিডাব্লু, 107 অ্যাপাচি প্রক্রিয়াগুলি 22 আরপিএসের জন্য খুব বেশি, আমি কেবল 5 টি অ্যাপাচি প্রক্রিয়া ব্যবহার করে 100-120 আরপিএস পরিবেশন করতে সক্ষম হয়েছি। সম্ভবত, পরবর্তী পদক্ষেপটি আপনার অ্যাপ্লিকেশনটিকে প্রোফাইল করা।


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

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

1

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

কিটালাইভ আপনার পারফেক্ট সমস্যা তৈরি করছে না, আপনি যদি সামনে ক্যাশে চালাচ্ছেন না তবে এটি সংযোগ সেটআপে আপনার সময় সাশ্রয় করে। আপনি ম্যাক্সস্পার সার্ভারকে কিছুটা টুকরো টুকরো টানতে পারেন যাতে কোনও ক্রাঞ্চে আপনি সমস্ত কাঁটাচামচ অপেক্ষা করেন না।


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

হ্যাঁ, আমি সম্মতি জানাব যে আপনার সেশন রাইটগুলি সমস্যার উত্স। আপনি পিএইচপি সেশন ব্যবহার করে সেশন ডিস্কের রচনাগুলি হারাতে পারেন - মেমক্যাচ ইনস্টল করুন, এবং পিএইচপি'র সেশন সেট করুন। সেভ_হ্যান্ডলারকে ম্যাকচেতে সেট করুন, এবং সেশন.সেভ_পাথকে টিসিপি করুন : //127.0.0.1: 11211 (বা যেখানেই আপনি ম্যাকচিচি সেটআপ করেছেন)। অ্যাপাচের লগিং ডিফল্টরূপে অ্যাসিঙ্ক, তবে কখনও কখনও ওয়েব অ্যাপ্লিকেশনগুলি সিসলগ ব্যবহার করতে পারে, বা সিসলগ চ্যাটি হতে পারে এবং এটি প্রতিটি লাইনের জন্য একটি সিঙ্ক করছে। সর্বোপরি আপনার সমস্যাটি হবে বলে মনে হচ্ছে না। সিআইসিং বাদ দেওয়ার জন্য আপনি syslog.conf এ '-' দিয়ে ফাইল এন্ট্রি লাইনগুলি উপস্থাপন করতে পারেন।
মটরশুটি

0

আপনার প্রথম চেষ্টা হিসাবে রক্ষণশীলকে বন্ধ করা বিবেচনা করা উচিত ...

107 অনুরোধ প্রক্রিয়া করা সহ আমি ম্যাক্সস্পার সার্ভারকে আরও উচ্চ করে রাখব তারপরে যা আপনি সেট করেছেন ...

স্থির বিষয়বস্তুর জন্য বিপরীত প্রক্সি হিসাবে দীর্ঘমেয়াদী এনগিনেক্সে আইএমএইচও বিবেচনা করা উচিত


0

প্রথম পরামর্শ: রক্ষণশীলদের অক্ষম করুন। আমি কেবল তখনই এর প্রয়োজন হয়েছিল যখন আমি কোনও নির্দিষ্ট পরিস্থিতি সনাক্ত করতে পারতাম যে পারফরম্যান্স বৃদ্ধি পেয়েছিল, তবে সাধারণ অনুরোধে / সেকেন্ডে ক্যাপালাইভ সক্ষম থাকলে কমেছে।

দ্বিতীয় পরামর্শ: একটি ম্যাক্সরুইকোয়েস্টপিরচিল্ড সেট করুন। আমি এখানে সিমসিবিয়ান প্রতিধ্বনিত করি, এটি মেমরি ফুটো হওয়ার ক্ষেত্রে প্রক্রিয়া রোলওভারে সহায়তা করবে। 500 একটি ভাল সূচনা পয়েন্ট।

তৃতীয় পরামর্শ: ম্যাক্সক্লিয়েন্ট বৃদ্ধি করুন। এর জন্য একটি বলপার্ক গণনা হ'ল (শারীরিক স্মৃতি - নন-httpd প্রক্রিয়া দ্বারা ব্যবহৃত স্মৃতি) / প্রতিটি httpd প্রক্রিয়া আকার। কীভাবে httpd সংকলন করা হয়েছে তার উপর নির্ভর করে এই সংখ্যাটি 255 এ সর্বোচ্চ হয় g

চতুর্থ পরামর্শ: ম্যাক্সস্পার সার্ভারগুলি বাড়ান: 4-5x মিনস্পার সার্ভারের মতো কিছু।

এই পরামর্শগুলি ব্যর্থ হওয়া সত্ত্বেও, আমি ডিবি-র জন্য বিপরীত প্রক্সি বা মেমক্যাসের সাথে লোড-ব্যালেন্সিংয়ের দিকে নজর দেব।

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