মিস্টার টাইম টু ফার্স্ট বাইটের আজব ঘটনা


14

লিনোড 1024 ভিপিএস-এর ভিত্তিতে আমি একটি ওয়েবসভার পেয়েছি

  • উবুন্টু ১১.১০
  • এনগিনেক্স ০.০.০
  • পিএইচপি 5.3.6 (পিএইচপি-এফপিএম, এপিসি সহ)
  • বার্নিশ 3.0.2

এবং সেখানে ওয়ার্ডপ্রেস 3.3.1 এর উপর ভিত্তি করে বেশ কয়েকটি ব্লগ রয়েছে। এর মধ্যে একটি হ'ল একটি সরল ব্লগ, সার্ভারটি পরীক্ষা করার জন্য ডিফল্ট কনফিগারেশন, থিম এবং কেবলমাত্র "হ্যালো ওয়ার্ল্ড" পোস্ট রয়েছে। অন্যটি হ'ল প্রায় একটি ব্লগ যা অন্য সার্ভার থেকে প্রায় 10 কে পোস্ট এবং 10 কেও বেশি মন্তব্য সহ ক্লোন করা হয়েছে। এই ব্লগটিতে প্রতিদিন 5k অজানা রয়েছে।

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

সাধারণ অপারেশন চলাকালীন এই htop একটি "সাধারণ" লোডও দেখায় , তবে আব পরীক্ষার সময় অসাধারণ বড় লোড

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

ইহা কি জন্য ঘটিতেছে? সম্ভাব্য ধারণা:

  • খারাপ পিএইচপি-এফপিএম কনফিগারেশন
  • লিনোড ডিএনএস প্রতিক্রিয়ার সময়টি দুর্দান্ত। ননসেন্স - পরীক্ষা ব্লগটি ডিএনএস জরিমানা সমাধান করে, টিটিএফবি দুর্দান্ত
  • খারাপ এনগিনেক্স কনফিগারেশন

যদি কারও আরও তথ্যের প্রয়োজন হয়,


আমি মনে করি এনজিএনএক্স কনফিগারেশনে ধারকটিতে if -fআপনার ব্যবহারের দিকনির্দেশনার সাথে এটির কিছু থাকতে পারে locationWiki.nginx.org/Pitfalls এখানে আমি যা পড়ছি তার উপর ভিত্তি করে আমার অনুভূতি আছে যে -fএটি ফাইলটির জন্য একটি অদক্ষ অনুসন্ধান করছে যা একটি টাইম টু ফার্স্ট বাইট সমস্যার কারণ হতে পারে, বিশেষত যদি আপনার প্রচুর সংখ্যক ডিরেক্টরি রয়েছে নথি পত্র.
d34dh0r53

1
কয়েকটি চিন্তাভাবনা: ক) ব্লগটি মূল সার্ভার থেকে কী পার্থক্য রয়েছে (যেমন এটি একই স্ট্যাক চালায়?) খ) যদি আপনি পারেন তবে লোকালহোস্ট এবং পোর্ট ব্যবহার করে সরাসরি সার্ভার থেকে চালান। বার্নিশের মাধ্যমে অ্যাক্সেস করার চেষ্টা করুন এবং তারপরে সরাসরি এনজিনেক্স অ্যাক্সেস করুন)। গ) মাইএসকিউএল এবং পিএইচপি-এফপিএম স্লো লগ সক্ষম করুন। d) mysqltuner.pl চালান এবং দেখুন যে আপনি আপনার মাইএসকিউএল সম্পাদন উন্নত করতে পারেন (এটি ব্লগ - বা প্লাগইনগুলির মধ্যে সর্বাধিক সুস্পষ্ট পার্থক্য)। e) আপনার পোস্ট করা পিএইচপি-এফপিএম কনফিগারেশনটি এনজিনেক্স (/var/run/php5-fpm-tpnet.sock! = /var/run/php5-fpm-www-data.sock) ব্যবহার করেছে বলে মনে হচ্ছে না
সাইবারএক্স 86

1
অবশ্যই একটি পিএইচপি সমস্যা। ওয়ার্ডপ্রেস সত্যিই ধীর। আপনার যখন এত বেশি সামগ্রী থাকে তখন একটি শালীন লোড সময় পাওয়ার জন্য আপনি এটির জন্য একটি ক্যাচিং প্লাগইন চাইবেন।
মার্টিন Fjordvald

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

1
আপনার লোকালহোস্ট পরীক্ষাগুলি বৈধ বলে মনে হচ্ছে না - আপনি আসলে আপনার ব্লগটি পুনরুদ্ধার করেন নি। পৃষ্ঠার আকারের পার্থক্যটি লক্ষ্য করুন: ডোমেন থেকে অ্যাক্সেস করা হলে 7500 বাইট, লোকালহোস্ট থেকে 151 বাইট যেহেতু আপনার সম্ভবত একাধিক ভার্চুয়ালহোস্ট রয়েছে, আপনাকে আবশ্যক করে হোস্ট শিরোনামটি পাস করতে হবে। ab -n 1000 -c 100 -H 'Host: mysite.com' http://127.0.0.1/এটি বলেছিল - ক্যাশেড (বার্নিশ) বনাম আনচড ফলাফলের পার্থক্যটি এই অবস্থানটি যাচাই করার জন্য যথেষ্ট যে সমস্যাটি নেটওয়ার্ক, ডিএনএস ইত্যাদির সাথে সম্পর্কিত নয় এবং প্রসেসিংয়ে মিথ্যা, যেমনটি প্রত্যাশিত।
সাইবারএক্স 86

উত্তর:


24

প্রথমত, এটি কোনও উত্তর নয়, ডায়াগনস্টিক পদ্ধতির মতোই।

এটি কোনওভাবেই বিস্তৃত নয় - অথবা কাছাকাছি কিছু হলেও এটি কেবল একটি সূচনা পয়েন্ট।

টাইম টু ফার্স্ট বাইট

প্রথম বাইটের সময় (টিটিএফবি) এর বেশ কয়েকটি উপাদান রয়েছে:

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

আপনি যখন অ্যাপাচিবেঞ্চ আউটপুটটি দেখেন, আপনি আরও দেখতে পারেন:

  • প্রক্রিয়াজাতকরণ: এটি সামগ্রীর স্থানান্তর + সম্পূর্ণ স্থানান্তরের সমষ্টি (যদি স্থানান্তরের সময় প্রাপ্ত তথ্যের পরিমাণ ডাউনলোড করার প্রত্যাশার তুলনায় উল্লেখযোগ্যভাবে দীর্ঘ হয় তবে আরও প্রসেসিং (প্রথম বাইট প্রাপ্ত হওয়ার পরে) ঘটছে (যেমন পৃষ্ঠাটি এটি উপলব্ধ হিসাবে ফ্ল্যাশিং সামগ্রী)

উপাদানগুলি দূর করতে তুলনা

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

এই সমস্যাটির কাছে যাওয়ার জন্য একটি ভাল উপায় হ'ল একটি তুলনা যা আপনার সেটআপের বিভিন্ন দিককে সরিয়ে ফেলবে series একটি সমস্যা তুলনায় একটি ভাল তুলনা যতটা সম্ভব স্থির রাখা উচিত। বর্তমানে, আপনি নিম্নলিখিত তুলনা প্রদান করেছেন:

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

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

কিছু পরিবর্তন না করে, আপনি করতে পারেন এমন আরও কিছু তুলনা রয়েছে:

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

আপনার ব্যাকএন্ড টিউন করছে

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

(আমি এখানে উল্লেখ করা উচিত, এটা সবসময় আপনার বোতলের CPU- র, উপস্থিত RAM- র, বা I / O জানি কুশলী যে - মধ্যে sar, top, iostat, vmstat, free।, ইত্যাদি এই কিছু উপসংহার আসতে সক্ষম হওয়া উচিত)

nginx

এনগিনেক্স কেবল অনুরোধ নিচ্ছে এবং হয় স্থিতিশীল বিষয়বস্তু পরিবেশন করছে বা অনুরোধগুলি পিএইচপি-এফপিএম-এ স্থানান্তর করছে - সাধারণত এনগিনেক্সের সাথে অনুকূল হওয়ার মতো খুব বেশি কিছু নেই isn't

  • কর্মী সেট করুন = # সিপিইউ কোর
  • ক্যাপালাইভ সক্ষম করুন (10-15 এর মান ভাল)
  • অপ্রয়োজনীয় লগিং অক্ষম করুন
  • প্রয়োজনে বাফার আকার বাড়ান
  • বিবৃতিগুলি এড়িয়ে চলুন (যেখানে সম্ভব সেখানে রেজিক্সের পরিবর্তে স্থির নাম ব্যবহার করুন, বিনা শর্তযুক্ত এক্সটেনশনগুলি মুছে ফেলুন)

আদর্শভাবে, আপনার পরীক্ষা ব্লগ এবং ক্লোন করা ব্লগে অভিন্ন কনফিগারেশন রয়েছে, সেক্ষেত্রে আপনি কার্যকরভাবে সমস্যা হিসাবে Nginx কে মুছে ফেলেছেন।

আবেদন

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

  • মাইএসকিউএল স্লো লগ এবং পিএইচপি-এফপিএম স্লো লগ সক্ষম করুন আপনার মানদণ্ড চালান এবং দেখুন যে ধীর হয়ে আসছে।

মাইএসকিউএল

  • একটি ভাল সূচনা পয়েন্ট পেতে আপনার ক্যাশে বাড়ান এবং mysqltuner.pl চালান ।

পিএইচপি

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

পিএইচপি-FPM

  • বিকেল সামঞ্জস্য করুন। * মান - উচ্চ লোড মোকাবেলায় এগুলি বাড়ান increase

এটি লক্ষণীয় যে আপনার এইচটিপি ফলাফলগুলি পিপিএফ-এফপিএমকে সিপিইউয়ের বেশিরভাগ অংশ গ্রহণ করে দেখায় - এবং আপনার সমস্যা এটির সাথে সরাসরি সম্পর্কিত বলে মনে হয়।

ক্যাশিং

একবার আপনি প্রতিটি সম্ভাব্য বাধা অপটিমাইজ করার পরে, ক্যাচিং শুরু করুন।

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

কখনও কখনও, আপনার অ্যাপ্লিকেশন এবং হার্ডওয়্যার সীমাবদ্ধতা দেওয়া, আপনি ব্যাকএন্ডের কর্মক্ষমতা এতটুকু উন্নত করতে সক্ষম নাও হতে পারেন - তবে, এটিই ক্যাশিংয়ের বিষয় - ব্যাকএন্ডের ব্যবহারকে হ্রাস করতে।

আরও পড়া


2
এটি বিশ্লেষণের জন্য পয়েন্টগুলির একটি দুর্দান্ত সারসংক্ষেপ। মন্তব্যের জন্য আপনাকে অনেক ধন্যবাদ, আমি এই সমস্ত পরামর্শ দিয়ে একটি ভারী পরীক্ষা করার চেষ্টা করব - সেগুলির মধ্যে কিছু যেমন আপনি বলেছেন যে ইতিমধ্যে পরিষ্কার হয়ে গেছে- এবং দেখুন যে আমি শেষ পর্যন্ত সমস্যাটি সনাক্ত করতে পারি। শুভেচ্ছা, সাইবারএক্স 86।
জবিপাস

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